socket中TCP的三次握手和四次挥手机制

2023-11-29  本文已影响0人  GameObjectLgy
一、 协议族分层

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
网络接口层:SLIP,CSLIP,PPP,MTU

二、 传输层中的TCP和UDP

1、UDP(User Datagram Protocol)即用户数据报协议,其传输机制决定了它的最大优点——快,同时也决定了它最大的缺点:不可靠、不稳定。

三、 TCP中为什么需要三次握手?
image.png

第一次握手,客户端尝试连接服务器,并带上同步序列编号SYN,进入等待服务器确认状态。
第二次握手,服务器收到并确认,回复同步序列编号+1。服务器进入接收状态。
第三次握手,客户端拿到服务端发来的SYN和ACK后,向服务器发送确认包ACK(ack=k+1)。
为什么要做三次握手呢?握手的过程实际上是在通知对方自己的初始化序号,也就是上图中的x和y。x和y会被当作之后传输数据的一个依据,以保证TCP报文在传输过程中不会混乱。

四、为什么需要四次挥手断开连接?
image.png

原因在于客户端请求断开连接后,但是服务端可能还存在没有传输完的数据,如果此时服务端就直接断开连接那势必会造成数据的丢失,TCP也就不可靠了。所以服务端需要等待所有数据发送完毕再请求断开,也就是服务端的ACK和FIN报文是分两次发送的。而TCP建立连接是不需要这个等待过程的,所以三次握手把服务端确认收到ACK报文和请求连接报文合并到了一起。

上一篇 下一篇

猜你喜欢

热点阅读