传输控制协议(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:

相关推荐
~山有木兮1 小时前
LiteHub中间件之限流实现
网络·http·中间件
cui_win1 小时前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络
BD_Marathon2 小时前
虚拟机网络检查
网络
游戏开发爱好者82 小时前
iOS App首次启动请求异常调试:一次冷启动链路抓包与初始化流程修复
websocket·网络协议·tcp/ip·http·网络安全·https·udp
2501_915106322 小时前
频繁迭代下完成iOS App应用上架App Store:一次快速交付项目的完整回顾
websocket·网络协议·tcp/ip·http·网络安全·https·udp
cocologin3 小时前
RIP 技术深度解析
运维·网络·网络协议
cv高级工程师YKY3 小时前
SRE - - PV、UV、VV、IP详解及区别
大数据·服务器·uv
眠修4 小时前
Kuberrnetes 服务发布
linux·运维·服务器
GalaxyPokemon4 小时前
RPC-Client模块
网络·网络协议·rpc
chirrupy_hamal5 小时前
如何避免 SYN 攻击?
网络·tcp