1. TCP/IP协议栈深度解析
1.1 网络分层模型与数据传输原理
现代网络通信基于OSI七层模型简化而来的TCP/IP五层模型运作。理解这个分层架构是掌握网络通信的基础:
- 应用层(L5):直接面向用户程序,如HTTP、FTP、SSH等协议。当你在浏览器输入网址时,这一层开始工作。
- 传输层(L4):TCP/UDP协议所在层,负责端到端的数据传输控制。TCP像严谨的快递员,确保每个包裹送达;UDP则像明信片投递,只管发送不保证到达。
- 网络层(L3):IP协议主导,处理逻辑寻址和路由选择。相当于快递公司的分拣中心,决定包裹的运输路径。
- 数据链路层(L2):MAC地址寻址,将数据封装成帧。如同快递站的装卸工,负责本地网络的物理传输。
- 物理层(L1):光电信号传输,网线、光纤等物理介质。这是真正的"高速公路"。
数据封装过程就像俄罗斯套娃:
code复制[以太网头][IP头][TCP头][HTTP数据]
每个下层协议都会在上层数据前添加自己的头部信息。Wireshark抓包时看到的完整帧结构就是这种嵌套形态。
1.2 TCP协议核心机制详解
三次握手建立连接
想象你要和国外朋友通电话:
- 你拨号呼叫(SYN=1)
- 朋友接听并说"喂?"(SYN=1, ACK=1)
- 你回应"是我"(ACK=1)
这才算通话建立成功。技术细节:
- 初始序列号(ISN)是随机值,防止历史连接干扰
- SYN洪泛攻击就是利用半连接消耗服务器资源
- 内核参数
tcp_synack_retries控制重试次数
实际抓包示例:
code复制# tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'
11:22:33.456789 IP client.54892 > server.80: Flags [S], seq 123456
11:22:33.457123 IP server.80 > client.54892: Flags [S.], seq 654321, ack 123457
11:22:33.457456 IP client.54892 > server.80: Flags [.], ack 654322
四次挥手断开连接
好比通话结束时的道别:
- 你说"我说完了"(FIN=1)
- 朋友回应"知道了"(ACK=1)
- 朋友说"我也说完了"(FIN=1)
- 你回应"好的再见"(ACK=1)
关键点:
- TIME_WAIT状态会持续2MSL(通常1-4分钟),确保最后一个ACK到达
- 大量TIME_WAIT连接会耗尽端口,可通过
net.ipv4.tcp_tw_reuse优化 - 异常断开时RST标志位会直接重置连接
1.3 UDP协议特点与应用场景
与TCP的严谨相比,UDP像寄明信片:
- 无连接:直接发送不打招呼
- 不可靠:不保证送达,不重传
- 高效:头部仅8字节(TCP至少20字节)
适
