从URL到页面经历了什么? (4)| 青训营笔记

56 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

上次我们讲到网络进程从DNS服务器家族中获取到了目标域名的IP地址,将要把网络请求发送给目标IP地址。但是网络并不是一路顺畅的,网络上可能存在网络延迟,网络阻塞,丢包,连接中断,第三方监听等。为了保证连接的顺畅与安全,首先需要建立一条通信的通道使连接更加顺利。

通信通道的顺畅由TCP负责。TCP的建立需要发送请求的客户端与接受请求的服务端之间通过三次挥手建立完成。

TCP三次挥手的过程如下:

客户端首先请求向TCP建立连接,并带上SYN=1,seq=x的标志。在服务端接收到客户端发来的建立连接的请求后,根据服务器自己的负载、连接及其他因素的情况后,判断是否可以建立与客户端的连接。如果服务端可以建立连接,服务端会向客户端发送允许建立连接的信息,同时带有SYN=1,ACK=1,seq=y,ack=x+1的标志。ACK=1标志着服务器确实已经接收到了请求,同时有ack标志,其中包含在客户端建立连接请求时生成的随机整数x,服务端会将其加一,并放入ack标志中。客户端通过检查服务端发回来的ack标志后,查看其中的数字是否等于上一次建立连接时发送的x+1,确认是由目标服务器发送回来的回应,才可以确认要建立TCP连接。如果客户端确认建立连接,客户端会向服务端发送确认建立连接的消息,同时带有ACK=1,seq=x+1,ack=y+1。同样地,服务器在收到客户端发来的确认建立连接的消息后,会检查seq与ack中的内容。如果ack与seq中的内容正确无误,即可以建立TCP连接。到这里就完成了客户端与服务器的三次挥手,就可以建立一个顺畅的TCP连接了,我们的数据可以顺畅的在信息高速路上传输。