传输控制协议(TCP)

传输控制协议是Internet一个重要的传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。

1、TCP报文段结构

注:TCP默认采用累积确认机制。

2、三次握手、四次挥手

(1)当客户向服务器发送完最后一个数据段后,发送一个FIN段(FIN=1,seq=u),请求断开客户到服务器的连接,其状态由ESTABLISHED进入FIN_WAIT_1,在这一状态下,只能接收服务器发送过来的数据,而不再发送数据。

(2)服务器收到客户的FIN段后,向客户发送一个ACK段(ACK=1,seq=V,ack_seq=u+1),服务器状态由ESTABLISHED进入CLOSE_WAIT,在这一状态下,服务器仍然可以发送数据,但不再接收数据。

(3)当客户收到ACK段后,其状态由FIN _WAIT_1进入FIN_WAIT_2,仍然可以接收来自服务器的数据,此时的TCP连接已经关闭了客户向服务器方向的数据传输。

(4)当服务器向客户发送完最后一个数据段后,服务器向客户发送FIN段(FIN=1,ACK=1,seq=w,ack_seq=u+1),服务器状态则由CLOSE_WAIT进入LAST_ACK,此时服务器也不再发送数据。

(5)当客户收到服务器发送的FIN段后,向服务器发送ACK段(ACK=1,seq=u+1,ack_seq=w+1),其状态由 FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,然后进入CLOSED状态,最终关闭连接。

(6)服务器在收到最后一次ACK段后,状态由LAST_ACK进入CLOSED,最终关闭连接。

3、TCP拥塞控制

在慢启动阶段,每收到1个确认段,拥塞窗口增加1个MSS。通常RTT相对较大,在1个RTT时间之内可以将窗口允许的所有报文段全部发送出去,并且当忽略报文段传输时延时,在慢启动阶段,每经过1个RTT,拥塞窗口增长1倍。在拥塞避免阶段,将拥塞窗口内的所有报文段全部发送,且全部得到确认后,拥塞窗口才增加1个MSS。

注:慢启动阶段(收到一个ACK,拥塞窗口增加1MSS(假设同一个RTT内连续发送的分组都能发送完,且忽略不同分组ACK时延)):拥塞窗口初始值为1MSS,

经过1个RTT,拥塞窗口变为2MSS(1MSS+1MSS)

经过2个RTT,拥塞窗口变为4MSS(2MSS+2MSS)

经过3个RTT,拥塞窗口变为8MSS(4MSS+4MSS)

...

例1:

例2:

相关推荐
果丁智能10 小时前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
wp123_111 小时前
射频前端无源器件观察:Coilcraft WBC1-1TLC vs TONEVEE WBT1-1CT 国产与进口巴伦变压器的技术博弈
网络
映翰通朱工12 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
天南散修12 小时前
MT7916 BA流程
网络·驱动开发·wifi·802.11
洪晓露12 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
Yang961112 小时前
多功能一体化,成都鼎讯 LDMN-JM1 满足石油煤矿设备检定与训练需求
网络·能源
weixin_4624462313 小时前
手把手教你用 Bash 脚本自动更新 /etc/hosts —— 自动绑定网卡 IP 与节点名
开发语言·tcp/ip·bash
IP老炮不瞎唠13 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
睡不醒男孩03082314 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
dog25014 小时前
网络长尾延时的重尾本质
开发语言·网络·php