重点: 通过设置 'tcp_synack_retries' 和 'tcp_syn_retries'内核参数,观察'丢包'的现象
① 实验环境

![]()
- iptables -t filter -I INPUT -s 172.25.2.100 -j DROP
-
- tcpdump -nni ens3 tcp and host 172.25.2.100 and port 80 -w tcp_ack_syn.pcap
② 客户端测试
从 date 返回的时间'前后',可以算出大概 '127' 秒后,curl '报错'退出了

③ 抓包分析
客户端在这其间'抓取'的数据包,用 Wireshark 打开分析,显示的'时序图'如下:

细节点: 对于'SYN'超时重传,所回应的'SYN、ACK'不属于'服务端'超时重传主动发送的包


④ iptables规则和tcpdump抓包的关系
- 思考: 客户端设置了防火墙,'屏蔽'了服务端的网络包,为什么 tcpdump '还能抓到'服务端的网络包?
-
- 强调: tcpdump 直接从'内核协议栈' 抓取数据
-
- 诶主: 虽然'tcpdump'抓取了,但是'iptables'禁止了,导致'应用层'的socket'不感知'


⑤ 第二次握手的最大重传次数
- 思考: 第二次握手 'SYN、ACK '限制'最大重传次数'是多少?
-
- 内核参数: tcp_synack_retries

⑥ 实验二
- tcp_syn_retries 设置为 '1'
-
- tcp_synack_retries 值为 '5'

⑦ 实验三
