tcp三次握手建立连接、四次握手关闭连接

tcp协议是传输层协议,负责封装的数据包点对点的可靠传输。

在进行数据传输之前,需要建立连接。建立连接有三个阶段,也就是经常说的三次握手。在握手的时候,需要知道对方握手的目的,这是通过tcp请求报文中的6个标志位来控制的:

  (1)SYN:同步(synchronous),表示发起一个新连接;
  (2)ACK:确认(acknowledgement),确认序号有效;
  (3)PSH:传送(push);
  (4)RST:重置连接(reset);
  (5)URG:紧急(urgent)。
  (6)FIN:释放一个连接(finish)。

三次握手:(建立连接)


第一次握手:主机A发送建立连接请求,标志位为SYN=1,随机产生请求码seq。主机A进入请求同步发送状态(SYN_SENT)。主机B通过SYN=1得知,A请求建立连接;

第二次握手:主机B接收到A的请求之后,向A发送报文。包括标志位ACK=1(确认收到请求)和 SYN=1(同步请求)。主机B进入请求同步确认等待状态(SYN_RCVD)主机A收到请求后,确认主机B发送过来的确认码ack是否正确(等于第一次握手时发送给B的请求码seq+1)。;

第三次握手:主机A收到请求后,确认主机B发送过来的确认码ack是否正确(等于第一次握手时发送给B的请求码seq+1)。如果正确,主机A会给主机B发送确认码,并进入等待连接状态(ESTABLISHED)。主机B收到确认码后,检查确认码是否正确,如果正确B也进入等待连接状态,连接建立成功。


四次握手:(关闭连接)


理解了三次握手,相信看图就能很容易理解四次握手,流程不再赘述。
主机A在接收到了主机B的请求关闭标志后,没有立即进入close状态,而是进入了TIME_WAIT状态作用
TIME_WAIT也是有时间限制的,它等于两倍的MSL( Maximum Segment Lifetime)-- 报文段最大生成时间。有两个作用:
1)可靠地关闭TCP连接
2)有足够的时间来识别迟来的报文段并丢弃。如果没有这个等待时间,主机A可能会立即新建立另一个连接,而另一个连接还会收到上次连接时,主机B发送过来的报文段,这显然是不合理的。
为什么建立连接要3次,关闭连接确要4次?
区别就在主机B接收到主机A的请求后:建立连接时主机B会把确认标志和请求连接标志一起发给主机A,关闭连接时主机B分开发送。这是由于主机B接收到了主机A的关闭请求时,自己不能立即关闭连接,因为自己的数据还没有发送完,需要将数据发送完成后,才能向主机A发送关闭连接请求。所以确认收到和请求关闭时分两次发送。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值