[计算机网络] TCP 协议(二)

本文详细探讨了TCP协议的超时重传机制,包括第一次、第二次和第三次握手的丢包情况及处理方式。同时,分析了TCP保活机制下客户端不发送数据时多久会断开连接的问题,并讨论了TCP三次握手的优化策略,如客户端和服务端的SYN重发、SYN队列溢出处理和accept队列管理。
摘要由CSDN通过智能技术生成

抓包

Linux 可以用 tcpdump 抓包,保存为 .pcap 格式
然后使用 WireShark 可视化和分析(WireShark 可直接抓包 Windows)

# 客户端 终端一 执行 tcpdump 抓包
$ tcpdump -i any tcp and host 192.168.3.200 and port 80 -w http.pcap
# 客户端 终端二 执行 curl 命令
$ curl http://192.168.3.200
# 客户端 终端一 停止 tcpdump 抓包 Ctrl+C  并导出 http.pcap

在这里插入图片描述

HTTP 是基于 TCP 协议进行传输的:

  • 最开始的 3 个包就是 TCP 三次握手建立连接的包
  • 中间是 HTTP 请求和响应的包
  • 最后的 3 个包则是 TCP 断开连接的挥手包 (有时服务器在收到客户端的FIN后也直接关闭连接,所以 ACK + FIN 是同时发送的,但通常是分开的标准四次挥手)

超时重传

第一次握手的 SYN 丢包

当客户端发起的 TCP 第一次握手 SYN 包,在超时时间内没收到服务端的 ACK,就会超时重传 SYN 数据包,每次超时重传的间隔RTO是翻倍上涨的(比如1s,2s,4s,8s,16s…),直到 SYN 包的重传次数到达 tcp_syn_retries 值后 (默认为5),客户端不再发送 SYN 包。
在这里插入图片描述

第二次握手的 SYN+ACK 丢包

当第二次握手的 SYN、ACK 丢包时,客户端会超时重发 SYN 包,服务端也会超时重传 SYN、ACK 包。客户端 SYN 包超时重传的最大次数,是由 tcp_syn_retries 决定的,默认值是 5 次;服务端 SYN、ACK 包时重传的最大次数,是由 tcp_synack_ret

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值