TCP/IP协议栈深度解析
一、TCP/IP四层模型
应用层 (HTTP/FTP/SMTP/DNS)
^
传输层 (TCP/UDP)
^
网络层 (IP/ICMP/ARP)
^
网络接口层 (Ethernet/PPP)
二、TCP三次握手
客户端 服务器
| |
|----- SYN=1, Seq=x --------->|
| |
|<---- SYN=1, ACK=1, Seq=y ----|
| Ack=x+1 |
| |
|----- ACK=1, Seq=x+1 ------->|
| Ack=y+1 |
| |
建立连接完成
# 状态变化
CLOSED -> SYN_SENT -> ESTABLISHED
LISTEN -> SYN_RCVD -> ESTABLISHED
三、TCP四次挥手
客户端 服务器
| |
|----- FIN=1, Seq=u --------->|
| (客户端不再发送数据) |
|<---- ACK=1, Ack=u+1 --------|
| (服务器收到关闭请求) |
|<---- FIN=1, Seq=v ----------|
| |
|----- ACK=1, Ack=v+1 -------->|
| (客户端确认关闭) |
| |
连接关闭完成
四、TCP滑动窗口
# 窗口大小
发送方维持发送窗口
接收方维持接收窗口
# 窗口滑动
窗口内数据可连续发送
收到ACK后窗口向前滑动
# 流量控制
通过window字段通告接收窗口大小
发送方不能超过接收方窗口大小
五、IP协议详解
# IPv4头部长度 20-60字节
版本(4) | 头部长度(4) | 服务类型(8) | 总长度(16)
标识(16) | 标志(3) | 片偏移(13)
TTL(8) | 协议(8) | 头部校验和(16)
源IP地址(32)
目标IP地址(32)
可选字段...
# TTL (Time to Live)
经过一个路由器TTL减1
TTL=0时数据包被丢弃
防止数据包在网络中无限循环