TCP三次握手四次挥手

三次握手

原理:

1)发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。

2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。

3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。

在这里插入图片描述

四次挥手(Four-Way-Wavehand)

1.意义:当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。

2.原理:

1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

在这里插入图片描述
tips:为什么连接的时候是三次握手,关闭的时候却是四次
握手?
三次握手是因为因为当 Server 端收到 Client 端的 SYN 连
接请求报文后,可以直接发送 SYN+ACK 报文。其中 ACK
做技术人的指路明灯,做职场生涯的精神导师
报文是用来应答的,SYN 报文是用来同步的。但是关闭连
接时,当 Server 端收到 FIN 报文时,很可能并不会立即
关闭 SOCKET(因为可能还有消息没处理完),所以只能
先回复一个 ACK 报文,告诉 Client 端,“你发的 FIN 报文
我收到了”。只有等到我 Server 端所有的报文都发送完
了,我才能发送 FIN 报文,因此不能一起发送。故需要四
步握手。

滑动窗口

在这里插入图片描述

发送和接受方都会维护一个数据帧的序列,
这个序列被称作窗口。发送方的窗口大小由接受方确定,
目的在于控制发送速度,以免接受方的缓存不够大,而导
致溢出,同时控制流量也可以避免网络拥塞。下面图中的
4,5,6 号数据帧已经被发送出去,但是未收到关联的
ACK,7,8,9 帧则是等待发送。可以看出发送端的窗口大
小为 6,这是由接受端告知的。此时如果发送端收到 4 号
ACK,则窗口的左边缘向右收缩,窗口的右边缘则向右扩
展,此时窗口就向前“滑动了”,即数据帧 10 也可以被发
送。数据发送并被确认之后,窗口右移。
引用:
https://www.jianshu.com/p/d3725391af59

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值