TCP协议三次握手四次挥手

TP三次握手四次挥手

一、三次握手
TCP创建过程要经历三次握手的过程;分别为:
1、客户机向服务器发送链接请求(带着客户端的设置,如客户的接收窗口的大小,客户端接受的最大报文段) ;
2、服务器向客户机发送TCL连接确认(带着服务器的设置参数,接受窗口大小等) ;
3、客户机向服务器发送确认的确认(此时连接已经建立);
4、传输数据包。
建立过程:
TCP
1、TCP连接请求:SYN = 1,ACK = 0(ACK = 0表示此时的ack是无效的)
seq = x,ack = 0.(seq表示客户机将要给服务器发送第x个字节,ack表示客户机已经收到了服务器发来的前y-1个字节,接下来服务器应该给客户机发送第y个字节)。
大写的ACK代表标记,小写的ack代表确认号。
2、TCP确认连接:SYN = 1,ACK = 1(ACK = 1表示此时的ack有效)
seq = y,ack = x+1.(服务器向客户机发送第y个字节,客户机向服务器发送的前x个字节已经收到,此时向服务器请求第x+1个字节)。
3、TCP确认的确认:SYN = 0,ACK = 1.(SYN只有在请求和确认时为1,在确认的确认和之后的数据包传输中都为0)
seq = x+1,ack = y+1.(客户机收到上一条确认连接的数据包,此时客户机向服务器发送第x+1个字节,同时表示已经收到了服务器发来的第y个字节,向服务器请求发送第y+1个字节)。

二、四次挥手
1、客户机请求断开连接;
2、服务器收到请求,向客户机发送确认断开;
3、服务器关闭自身应用进程,再次向客户机发送断开确认;
4、客户机向服务器发送确认的确认;
5、断开连接,传输结束。在这里插入图片描述

1、客户机向服务器发送断开连接请求(FIN = 1,seq = u):客户端主动关闭。此时,客户机请求断开连接,客户机不会再给服务器发消息,但是服务器给客户机发消息,客户机可以接受;
2、服务器接收到客户机发来的断开连接请求(ACK = 1,seq = v,ack = u+1):通知自己的应用进程关闭,同时向客户机发送断开确认的数据包;
3、服务器被动关闭应用进程之后(FIN = 1,ACK = 1,seq = w,ack = u+1),再次向客户机发送断开确认的数据包。
4、客户机接收到第二次确认断开的数据包后,向服务器发送确认的确认(ACK = 1,seq = u+1,ack = w+1),客户机进入等待时间(等待2MSL,MSL为最长报文时间,1MSL约为1分钟)。
5、服务器收到客户机发来的确认的确认,服务器关闭。客户机等待2MSL之后,客户机关闭,此时服务器也不会给客户机发消息。此次连接断开,传输结束。

关于客户端处于等待时间(TIME-WAIT 2MSL)的原因:客户机向服务器发送确认的确认(第四次挥手),若此时数据包丢包,服务器可以向客户机再次发送第二次确认断开(第三次挥手),此时服务器属于等待状态,可以再次发送最后的确认(第四次挥手)。若客户机没有延时等待,客户机直接关闭,此时缺少第四次挥手,服务器将一直处于LAST_ACK状态,服务器不会关闭。

可以cmd打开Windows终端,使用netstat -n查看客户机状态。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值