手机网站横幅制作模板,今朝装饰,wordpress每页文章数,杭州网站的制作前言 前面我说到了#xff0c;UDP通信的实现#xff0c;但我们经常说UDP通信不可靠#xff0c;是因为他只会接收和发送#xff0c;并不会去验证对方收到没有#xff0c;那么我们说TCP通信可靠#xff0c;就是因为他会进行验证接收端是否能够接收和发送#xff0c;并且只…前言 前面我说到了UDP通信的实现但我们经常说UDP通信不可靠是因为他只会接收和发送并不会去验证对方收到没有那么我们说TCP通信可靠就是因为他会进行验证接收端是否能够接收和发送并且只有在验证通过的情况下才会发送数据并且会通过一些操作来保证数据发送的完整性。本小节主要介绍TCP通信过程中如何通过三次握手和四次挥手来保证数据的传输。
一、三次握手 TCPTransmission Control Protocol通信中三次握手是指在客户端和服务器之间建立可靠连接时的三步过程。这一过程的目的是确保双方都能够准备好进行数据传输并且能确认彼此的接收和发送能力。视频链接屏幕录制 2024-09-10 221512-CSDN直播 TCP三次握手的详细过程 第一次握手客户端发送SYN包 客户端向服务器发送一个SYNSynchronize标志位为1的TCP报文段表示客户端想要发起连接并请求同步序列号Sequence Number。在这个阶段客户端会生成一个初始序列号ISNInitial Sequence Number并将这个序列号放入报文中。报文格式SYN 1, SEQ xx 是客户端的初始序列号 第二次握手服务器回复SYN-ACK包 服务器收到客户端的SYN报文后理解到客户端想建立连接。于是服务器也生成一个自己的初始序列号并发送一个SYN-ACKAcknowledgment报文段回给客户端表示接收到客户端的连接请求。在这个SYN-ACK报文中 SYN 1表示服务器同意建立连接。ACK 1表示确认客户端发出的SYN。ACK序列号x 1表示确认客户端的序列号x。服务器同时也会发送自己的序列号y。报文格式SYN 1, ACK 1, SEQ y, ACK x 1 第三次握手客户端发送ACK包 客户端收到服务器的SYN-ACK报文后确认服务器收到了自己的连接请求接着客户端发送一个确认报文段ACK 1给服务器确认服务器的SYN和ACK。在这个ACK报文中 ACK 1表示确认服务器的序列号。ACK序列号y 1表示确认服务器的序列号y。报文格式ACK 1, SEQ x 1, ACK y 1 此时双方都已经完成了三次握手客户端和服务器之间的TCP连接已经建立接下来可以开始数据传输。 我们可以这样理解 客户端需要知道客户端自己的接收和发送能力服务器的接收和发送能力 服务器需要知道客户端的接收和发送能力服务器自己的接收和发送能力 第一次握手客户端发送请求服务器接收请求这时服务器知道自己有接收能力其余能力没有。 第二次握手服务器发送信号告诉客户端自己知道了客户端的连接请求等到信号传递到客户端之后这时客户端知道服务器有接收能力发送能力客户端也知道了自己有发送能力和接收能力但是服务器不知道客户端有没有接收能力。 第三次握手客户端发送信号给服务器表示自己知道了服务器有发送和接收能力等到服务器接收到信号以后服务器知道了客户端收到了第二次握手发送的数据这时服务器知道客户端有接收能力 到此客户端知道自己有的接收和发送能力服务器也知道的自己有接收和发送能力 二、四次挥手 四次挥手是指在TCPTransmission Control Protocol通信中客户端与服务器之间关闭连接的过程。与三次握手类似四次挥手也是为了确保双方能够有序地终止连接。由于TCP是全双工通信协议即通信双方都可以同时发送和接收数据因此关闭连接时需要双方都同意停止发送和接收数据整个过程需要四个步骤称为“四次挥手”。 四次挥手的详细过程 第一次挥手客户端发送FIN包 当客户端想要结束数据传输时它会发送一个**FINFinish**标志位为1的报文告诉服务器它已经不再发送数据了但仍然可以接收来自服务器的数据。这时客户端进入FIN_WAIT_1状态等待服务器的响应。报文格式FIN 1, SEQ xx为当前的序列号 第二次挥手服务器回复ACK包 服务器收到客户端的FIN报文后回复一个ACKAcknowledgment报文表示它收到了客户端的请求但此时服务器可能仍然有数据要发送因此不会立即关闭连接。服务器发送的ACK报文中的确认号为x 1表示确认客户端的序列号x。此时客户端进入FIN_WAIT_2状态继续等待服务器的FIN报文而服务器进入CLOSE_WAIT状态准备关闭连接。报文格式ACK 1, SEQ y, ACK x 1 第三次挥手服务器发送FIN包 当服务器处理完剩余的数据并准备好关闭连接时它会发送一个FIN报文通知客户端它也准备结束通信不再发送数据了。服务器此时进入LAST_ACK状态等待客户端的最后确认。报文格式FIN 1, SEQ yy为服务器当前的序列号 第四次挥手客户端回复ACK包 客户端收到服务器的FIN报文后回复一个ACK报文确认服务器已经关闭连接。发送完ACK报文后客户端进入TIME_WAIT状态等待一定的时间通常为2个最大段寿命时间2MSLMaximum Segment Lifetime以确保服务器收到这个ACK报文后不会重发FIN报文。如果在此期间没有收到任何新数据包客户端才正式关闭连接进入CLOSED状态。服务器收到客户端的ACK报文后也进入CLOSED状态连接彻底关闭。报文格式ACK 1, SEQ x 1, ACK y 1