共计 2189 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | HTTP:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言文档从 web 服务器传送到客户端的浏览器。HTTP 协议是构建在 TCP/IP 协议之上的,是 TCP/IP 协议的一个子集。 |
HTTP:超文本传输协议 (HTTP) 是一种通信协议,它允许将超文本标记语言文档从 web 服务器传送到客户端的浏览器。HTTP 协议是构建在 TCP/IP 协议之上的,是 TCP/IP 协议的一个子集。
TCP/IP 族:TCP/IP 协议是一系列与互联网相关联的协议集合的总成,分层管理是 TCP/IP 协议的重要特征。TCP/IP 族通常由应用层、传输层、网络层以及数据链路层构成的系统。
应用层:应用层一般是编写的应用程序,决定向用户提供什么应用服务。可以通过系统调用与传输层进行通信,比如:FTP、DNS、HTTP 等。
传输层:传输层是通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。传输层具有两个不同性质的协议:TCP 和 UDP。TCP 是面向连接的,可靠的,效率低。UDP 是无连接的,可靠性低,效率高
网络层:网络层是用于处理在网络上流动的数据包,而数据包是网络传输的最小数据单位。此层规定了通过什么路径 (传输路线) 到达对方对方计算机,并把数据包传输给对方。
链路层:链路层用于处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动、NIC 网络适配器以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围内。
在发送端发送数据时,数据会从上层传输到下层,且每经过一层都会被打上该层的头部信息。而接收端接收数据时,数据会从下层传输到上层,传输前会把下层的头部信息删除。
在下图中,当你想在浏览器查看某个页面时,会在应用层发起一个 HTTP 请求,通过传输层的 TCP 协议进行分割 HTTP 报文,并为每个报文打上标记序号、端口号等信息后发送到网络层。在网络层通过 IP 协议为每个报文增加作为通讯目的地的 MAC 地址,然后转发给链路层,接收端的服务器在链路层接收请求的 HTTP 数据。在服务器返回到浏览器的流程则是相反的。
使用 TCP 协议进行通信的双方必须先建立连接,然后才能开始传输数据。为了确保连接双方的可靠性,在双方建立连接时,TCP 协议会采用三次握手策略。
第一次握手:客户端发送带有 SYN 标志的连接请求报文段,然后进入 SYN_SEND 状态,等待服务端的确认。
第二次握手:服务端接受到客户端的 SYN 报文段后,需要发送 ACK 信息对这个 SYN 报文段进行确认,同时还要发送自己的 SYN 请求信息。服务端会将上述的信息放到一个报文段 (SYN+ACK 报文段) 中,一并发送给客户端,此时服务端将会进入 SYN_SEND 状态。
第三次握手:客户端接收到服务端的 SYN+ACK 报文段后,会向服务端发送 ACK 确认报文段,这个报文段发送完毕后,客户端和服务端都进入 ESTABLISHED 状态,完成 TCP 三次握手。
讲到这里,通常会有疑问:为什么 TCP 协议要进行三次握手而不是两次呢?
这是因为要建立可靠的通信,首先客户端和服务端都得确保对方具有完整的收发能力。第一次握手客户端发送请求报文给服务端,服务端可以确认客户端的发送能力是正常的以及服务端的接收能力是正常的; 第二次握手客户端接收到服务端返回的报文信息,可以确认服务端的收发能力是正常的,同时客户端的收发能力是正常的; 第三次握手客户端再次向服务端发送确认信息,此时服务端可以确认客户端的接收报文的能力和服务端的发送能力是正常。最后能够确认双方的收发能力是正常的,因此需要进行三次握手,而两次握手是不能彼此确认双方的收发能力是否正常。
在上面的知识点中,我们知道与 HTTP 有着密切联系的 TCP/IP 协议,而 DNS 服务与 HTTP 协议也有着密不可分的关系。
比如说你要访问百度 www.baidu.com,可以使用主机名 100.100.10.10 或者域名 www.baidu.com 进行访问,但是相比于一串纯数字的 IP 地址而言,使用域名更容易让人记住和访问。要知道在计算机网络中 TCP/IP 协议使用的就是 IP 地址进行访问,因此需要通过一种机制将域名转换为 IP 地址。而 DNS 服务正是用于解决这个问题的,可以提供域名到 IP 地址之间的解析服务,其实就像我们打电话时查阅通讯录一样。
如图所示,当我们在浏览器输入 www.baidu.com 时,具体细节如下:
① TCP/IP 协议会先去访问本地域名解析器,当搜索到对应的 IP 地址则直接返回到客户端,客户端则直接向服务端发起 HTTP 请求; 而当没有搜索到 www.baidu.com 对应的 IP 地址时,则向上溯源,查找上一级域名解析器
② TCP/IP 协议访问根域名服务器搜索对应的 IP 地址,若同样的搜索通过则沿原路返回到客户端; 若没有搜索到则继续溯源搜寻
③ TCP/IP 协议一直溯源搜寻直至顶级域名服务器,搜寻沿原路返回,否则则告知客户端没有此域名
当客户端访问 WEB 站点时,首先会用过 DNS 服务查询到域名对应的 IP 地址,返回到客户端生成 HTTP 请求,通过 TCP/IP 协议发送给 WEB 服务器。WEB 服务器接收到请求后,会根据请求生成相应内容,并通过 TCP/IP 协议返回到客户端。
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)