美文网首页
HTTP小记

HTTP小记

作者: 黄同学2019 | 来源:发表于2017-10-19 23:11 被阅读22次

    1.WWW (World Wide Web) 的由来

    1.1诞生:1990年,Tim Berners-Lee(蒂姆·伯纳斯-李)在他的NeXT工作站上写了第一个网页,那年圣诞节,他制作了第一个网页浏览器(World Wide Web)和网页服务器。

    问:1990年以前,人们是如何上网的呢?

    答:

    (1) 1965 年,Email 被发明出来,成为互联网的「杀手级」应用,因为你可以瞬间发一封信给远方的人,不需要信纸、邮票和邮递员。

    (2) 1971 年,用 @ 符号来表示 Email 的方法被发明出来。

    (3) 1979 年,邮件讨论组被发明出来,人们可以在一个话题下公开地互发邮件。

    (4) 人们通过 FTP 来下载文件附件

    (5) 1980 年至 1990 年间,人们迫切需要一种更好的上网方式,很多方案被提出,如 HTTP 和 Gopher。后面的事情大家都知道了,HTTP 因为其易用性胜出。

    (6) 当时的邮件内容全都是普通文本,或者是类 Markdown 形式的文本,人们需要一种超级文本用来做页面跳转,也就是我们现在见到的<a> 标签,不过那时的人还没想到这一点,当时的超集文本方案有很多,HTML 只是其中之一,而且当时的 HTML 也非常简陋,只有 11 个标签。

    参考资料:维基百科:万维网

    1.2 主要为三个概念:URI,HTTP,HTML

    1.21 URI(Uniform Resource Identifier):统一资源标志符,它主要包括2部分,分别为 URNURL

    1.21.1 URL(Uniform Resource Locator):统一资源定位符,俗称 “网址”。

    URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。例如,http://www.wikipedia.org/这个URL,标识一个特定资源(首页)并表示该资源的某种形式(例如以编码字符表示的,首页的HTML代码)是可以通过HTTP协议从www.wikipedia.org这个网络主机获得的。

    1.21.2 URL的组成:主要为以下5部分:
    URL 的组成
    • 协议:https://
    • 域名:www.baidu.com
    • 路径:/s
    • 查询参数:?wd=hello&rsv_spt=1
    • 锚点:#5

    小知识:DNS:Domain Name System,域名系统

    域名解析

    简单理解为:输入域名,输出IP

    举一个例子,zh.wikipedia.org作为一个域名就和IP地址208.80.154.225相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打wikipedia的名字来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像zh.wikipedia.org一样便于人类使用的名字转化成像208.80.154.225一样便于机器识别的IP地址。

    1.21.3 URN(Uniform Resource Name):统一资源名称
    问:URL和URN之间的关系?

    URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。

    2..HTTP协议

    问:TCP协议和UDP协议的区别是什么?

    • TCP 可靠、面向连接、相对 UDP 较慢;
    • UDP 不可靠,不面向连接、相对 TCP 较快。

    理解

    • 可靠:即TCP传送数据有反馈,是否可以传输?对象是否错误;而UDP则没有反馈
    • 面向连接:可参考下面的题目[TCP的三次握手是什么?]
    • 速度:TCP的传输速度较慢(因为使用了复杂的 拥塞控制算法),但是稳定安全;而UDP的传输速度较快,安全性却不得而知,但是目前UDP的应用范围依然很广。

    问:TCP协议的三次握手是什么?

    简单理解为:

    
     1. 客户端:我要连接你了,可以吗
     
     2. 服务端:嗯,我准备好了,连接我吧
    
     3. 客户端:那我连接你咯。
    
     4. 开始后面步骤
     
    

    3.IP网络协议

    图片
    • 你从电信/移动/联通运营商那里买来带宽,一年一千多。
    • 电信为你提供 DNS服务
    • 你买了一个路由器,然后用电脑和手机分别连接路由器广播出来的无线 WIFI
    • 只要路由器连上电信的服务器,那么路由器就会有一个「外网 IP」,比如「14.17.32.211」就是一个外网 IP。这就是你在互联网中的地址。
    • 但是如果你重启路由器,那么你很有「可能」被重新分配一个「外网 IP」,也就是说 你的路由器没有「固定的外网 IP」
      你可以花每年几千块钱租用一个「固定的外网 IP」,但是显然不会这么浪费钱。像腾讯、阿里这样的大公司租用了很多外网 IP,这样才能对我们提供稳定的服务。
    • 但是有个问题,你的路由器的外网 IP 如果是14.17.32.211,那么你的手机和电脑的 IP 又是什么呢?答案是「内网 IP」
    • 路由器会在你家里创建一个内网,内网中的设备使用内网 IP,一般来说这个 IP 的格式都是 192.168.xxx.xxx
    • 一般路由会给自己分配一个好记的内网 IP,如 192.168.1.1
      然后路由会给每一个内网中的设备分配一个不同的内网 IP,如电脑是192.168.1.2,手机是 192.168.1.3,以此类推。
    • 现在路由器有两个 IP,一个外网 IP(14.17.32.211)和一个内网 IP(192.168.1.1
      内网中的设备可以互相访问(比如你可以用电脑或手机进入 http://192.168.1.1 来查看你的路由器),但是不能直接访问外网,内网设备想要访问外网,就必须经过路由器中转。
      外网中的设备可以互相访问(比如 qq.com 可以把首页发送给你的路由器,你的路由器有外网 IP),但是外网中的设备无法访问你的内网设备(这很好理解,内网是一个封闭的网络,外人进不来,所以实际上 qq.com 无法直接把首页放送给你的电脑和手机)
    • 问题来了,那 qq.com 是怎么把首页发送到我的手机上的呢?答案是通过路由器来中转。
      路由器接收到 qq.com 的页面后,把页面发送给你的电脑或手机。路由器知道如何给这些信息指路,路由器就是一个指路人,这就是「路由」两个字的来历。
    • 路,就是「必由之路」中的路。由,就是「必由之路」中的由(由是经过、缘由的意思)。所有的信息都要经过路由器,然后被指向一条它该去的路。
    • 也就是说内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器(因为路由器既有外网 IP 也有内网 IP),所以路由器有时候也被叫做「网关」,这个「关」是「一夫当关,万夫莫开」的---- - 「关」。如果路由器到电信的连接中断了,那么内网中所有的设备也就无法上网了。(这很好理解,相当于唯一一条出去的路断了)
    • 除了内网 IP 和外网 IP,还有两个特别特殊的 IP,就是本地 IP:127.0.0.1。本地 IP 永远表示设备自己。不信你可以 ping 127.0.0.1一下,会发现只需要 0.01 ms 就得到了响应(你 ping qq.com 需要几十毫秒才得到响应)
    • 默认情况下,hosts 文件里会有一行127.0.0.1 localhost,意思就是 localhost 指向 127.0.0.1,所以 localhost 也表示设备自己。不信你ping localhost 试试,会发现实际上是在 ping 127.0.0.1
    • 还有一个特别特殊的 IP:0.0.0.0,它不表示任何设备。

    4.端口

    前面我们说到,访问某个地址,使用URL地址;传输数据,使用TCP/IP协议;但是,当我们把数据传到服务器上时,服务器时如何分辨我的访问需求呢?毕竟服务器肯定是提供多种不同服务的,例如:HTTP服务,FTP服务等,此时,就要用到端口(Port),用于区分不同服务,原则是:一个端口对应一个服务。

    4.1技术细节

    • 传输层协议,如传输控制协议(TCP)与用户数据报文协议(UDP),在数据包表头中,定义了来源端口号与目的端口号。一个通信端口号使用16位无符号整数(unsigned integer)来表示,其范围介于0与65535(即2^16-1)之间。在TCP协议中,端口号0是被保留的,不可使用。在UDP协议中,来源端口号是可以选择要不要填上,如果设为0,则代表没有来源端口号。
    • 在操作系统中,一个进程,可以通过internet socket,将它的输入与输出,与一个特定的传输协议,一个通信端口,与IP地址,关系起来。这个关系动作,称为绑定(binding),在这之后,就可以通过网络提交与接收数据。

    4.2用途

    端口号有两种用途:

    • 标识服务器上提供特定网络服务的进程。客户机可以按照服务器IP与端口号与相应的服务器进程创建网络连接,获得相应的网络服务。例如,通常使用80端口号提供http服务,使用23端口号telnet服务。服务器的这种功能叫做listening。客户机通常使用动态指定的端口号与服务器创建连接。
    • 由本机地址、本机端口号、目标机地址、目标机端口号、通信协议组成的五元组,用于唯一确定正在使用的网络连结。因此,对于不同的协议、不同的目标机地址,本机的不同地址(如果本机使用多个网卡)等多种情形,同一个端口号可以复用。因此对于1对1通信,且本机与目标机之间只能创建一个通信连接,则不需要使用端口号。

    相关文章

      网友评论

          本文标题:HTTP小记

          本文链接:https://www.haomeiwen.com/subject/kxxmuxtx.html