引言

之前大部分时间,一直在学c#,打算将asp.net本质论好好学习一下,之前虽然已经看了两边了,总感觉看过,没做笔记等于白看了,一点印象也没。打算将书中的代码,自己实现一下,在敲代码时要一直反思,为什么作者那样实现,如果是自己该如何实现?

web应用程序

资源的地址——通用资源标识符(URI)

我们在浏览器地址栏中输入的内容统称为通用资源标识符(Universal Resource Identifier,URI),它有很多种形式,在web中我们通常使用统一资源定位符(Uniform Resource Locator)的形式,格式如下:

协议://主机[.端口号][绝对路径[?参数]]

http://www.microsoft.com/en/us/default.aspx中:

http:表示协议名称;

www.microsoft.com:表示主机的地址;http协议的默认端口号为80.

/en/us/default.aspx:绝对路径。后面没有参数出现,如果加上多个参数则可以如下表示:

/en/us/default.aspx?p=1&n=2

在.net中,不管是URI还是URL都是定义在System命名空间中的URI类来进行处理。

该类定义了5个属性,分别对应5个组成部分。

Scheme属性:协议的名称。

Host:取得URI地址中的主机部分。

Port:取得端口号。

AbsolutePath:绝对路径部分。

Query:URI地址中的参数部分。

简单例子:

             System.Uri ms = new Uri("http://www.microsoft.com/en/us/default.aspx");
Console.WriteLine("协议:"+ms.Scheme);
Console.WriteLine("主机:"+ms.Host);
Console.WriteLine("端口号:"+ms.Port);
Console.WriteLine("绝对路径:"+ms.AbsolutePath);
Console.WriteLine("参数:"+ms.Query);
Console.Read();

结果:

如何找到主机

互联网上的服务器成千上万,如果找到互联网上的其中一台,该如何找呢?就好比,虽然世界人口多达几十亿,如何找到某个人呢,那你如果知道他的地址,岂不是找起来更方便快捷?同样到了,浏览器要找到服务器,也需要服务器的网络地址。

在当前的TCP/IP协议下,所谓的网络地址,就是一个IP地址,目前我们使用的是IPV4的地址,即IP协议的第四版规定的地址,每个地址由四个字节共32位组成。理论上讲,可以表示4G个网络地址。格式:192.198.0.1,以圆点分割的四个数,最大为255.例如,微软的ip地址:207.46.19.254,直接在地址栏中输入http://207.46.19.254也可以看到网页。

但是,如果单单记忆数字,很让人头疼,如果能通过一个有意义的名字来找到主机,就更容易了。在1983年,保罗.莫卡派乔斯(Paul Mockapetris)发明了域名系统,这样,在互联网上,我们可以为IP起一个有意义的名字以方便寻找主机,这个名字成为域名,比如,微软web服务器的域名为www.microsoft.com,这个名字对应实际IP地址:207.46.19.254

域名和ip如何对应?

这个工作由域名服务器DNS(即Domain Name Server)完成。DNS服务器提供一个类似于分层的通讯录,允许用户通过域名来查找对应的地址,或者通过地址来查找对应的域名。通常情况下,互联网服务商已经帮我们自动设置了DNS服务器,因此可以简单地通过www.microsoft.com域名找到微软的web服务器。

知道服务器之后,需要将请求从我们的客户端传输到服务器,那么,两台计算机是如何通信的呢?他们如何才能理解彼此发送的数据呢?这就需要提到协议了。

总结

URL格式:

协议://主机[.端口号][绝对路径[?参数]]

互联网中通过ip找到主机,通过DNS将域名和ip地址关联起来。

[Asp.net本质论]重新认识url的更多相关文章

  1. ASP.NET获取请求的url信息汇总

    ASP.NET获取请求的url信息汇总 最近做项目需要处理一个用代码获取当前网站的域名或ip信息的问题,于是尝试了ASP.NET中各种获取url信息的方法,在此总结一下: 在Global.asax文件 ...

  2. 【ASP.NET MVC 牛刀小试】 URL Route

    例子引入 先看看如下例子,你能完全明白吗? using System; using System.Collections.Generic; using System.Linq; using Syste ...

  3. asp.net获取当前网址url

    asp.net获取当前网址url   设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://" ...

  4. ASP.NET Core中使用URL重写

    ASP.NET Core 1.1 Preview 1 中新增了 URL Rewriting middleware ,终于可以进行 URL 重写了,实际使用体验一下. 首先要将 ASP.NET Core ...

  5. Asp.Net通过HttpModule实现URL重写

    首先总结一下为什么要对URL进行Rewrite,比如我可以把/Default.aspx?param=3替换成/Home/Default/3(类似mvc). 一.缩短url,隐藏实际路径提高安全性; 二 ...

  6. cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等

    asp.net分页是最最常用的功能,实现方式也很多,使用不同的控件有不同的分页方式. 下面分享一个我们团队内部使用了多年的一个分页控件cPage,是自己设计编写,没有冗余,简单.快速. cPage,现 ...

  7. asp.net中获取当前url的方法

    HttpContext.Current.Request.Url.ToString() 并不可靠. 如果当前URL为 http://localhost/search.aspx?user=http://c ...

  8. ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http

    在.NET环境下,万物皆对象,在HttpRuntime收到请求之后,立即将通过HttpWorkerRequest传递的参数进行分析和分解,创建方便用于网站应用程序处理用的对象,其中主要涉及到两个对象类 ...

  9. asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码

    用 asp.net获取当前网页地址的一些信息. 设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http:// ...

随机推荐

  1. python爬虫模块之HTML下载模块

    HTML下载模块 该模块主要是根据提供的url进行下载对应url的网页内容.使用模块requets-HTML,加入重试逻辑以及设定最大重试次数,同时限制访问时间,防止长时间未响应造成程序假死现象. 根 ...

  2. selenium 点击浏览器按钮

    利用以下的方法,selenium 也可以模拟点击各种浏览器按钮:browser.back()点击“返回”按钮.browser.forward()点击“前进”按钮.browser.refresh()点击 ...

  3. springboot在不同环境下进行不同的配置

    原文链接:http://www.cnblogs.com/java-zhao/p/5469183.html 不同的环境设置一个配置文件,例如:dev(开发)环境下的配置设置在application-de ...

  4. vue-router 基础

    安装 NPM npm install vue-router 如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能: import Vue from 'vue' import ...

  5. [New learn]GCD其他方法的使用

    https://github.com/xufeng79x/GCDDemo 1.简介 在前面的两篇博文中我介绍了GCD的一般使用方法和死锁的分析调查.本博文中继续讲解GCD的其他比较常用的几个使用方法. ...

  6. 【JBPM4】判断节点decision 方法2 condition

    运用condition计算并判断. JPDL <?xml version="1.0" encoding="UTF-8"?> <process ...

  7. Supervisor-类unix系统下的进程控制工具

    如果你的英文足够好,请看官网的文档:http://supervisord.org/introduction.html 简介: Supervisor 类unix系统下的进程控制工具. 特性: 1.配置简 ...

  8. Centos7下安装破解confluence6.3

    confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享.现在大多数公司都会部署一套confluence与jira的结合,用作内部w ...

  9. HDU 1011 Starship Troopers【树形DP/有依赖的01背包】

    You, the leader of Starship Troopers, are sent to destroy a base of the bugs. The base is built unde ...

  10. 最短路&生成树&二分图匹配&费用流问题

    最短路 题意理解,建图 https://vjudge.net/problem/UVALive-4128 飞机票+行程建图 https://vjudge.net/problem/UVALive-3561 ...