[Asp.net本质论]重新认识url

引言

之前大部分时间,一直在学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地址中的参数部分。

 简单例子:

1             System.Uri ms = new Uri("http://www.microsoft.com/en/us/default.aspx");
2             Console.WriteLine("协议:"+ms.Scheme);
3             Console.WriteLine("主机:"+ms.Host);
4             Console.WriteLine("端口号:"+ms.Port);
5             Console.WriteLine("绝对路径:"+ms.AbsolutePath);
6             Console.WriteLine("参数:"+ms.Query);
7             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地址关联起来。

原文地址:https://www.cnblogs.com/wolf-sun/p/3826729.html