重点: 通过设置 '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'
⑦ 实验三