• [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地址关联起来。

  • 相关阅读:
    HDU 4436 str2int (后缀自动机SAM,多串建立)
    HDU 4498 Function Curve (自适应simpson)
    PHP实现微信商户支付企业付款到零钱功能代码实例
    微信支付现金红包接口应用实例代码说明和DEMO详解,适合用来做微信红包营销活动、吸粉利器
    java开发学生信息管理系统的实现(简洁易懂),适合计算机专业学生参考,课程设计、毕业论文设计参考等
    公司注册经营范围大全
    《胡雪岩》影评10篇
    提高淘宝店铺动态评分的四大技巧
    为什么我的淘宝店铺动态评分清零了?
    CC攻击原理及防范方法和如何防范CC攻击
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/3826729.html
Copyright © 2020-2023  润新知