体系结构和主要协议
(略,四个层,OSI模型为七层)

(我理解的)本质:socket封装/分用栈
1)入栈 发送 请求流程 - 客户端
(应用层)http数据
(传输层)tcp首尾部 + http数据
(网络层)ip首尾部 + tcp 首尾部 + http数据
(链路层)以太网首尾部 + ip首尾部 + tcp 首尾部 + http数据
2)出栈 接受 请求数据 - 服务端
(链路层)以太网首尾部 + ip首尾部 + tcp 首尾部 + http数据
(网络层)ip首尾部 + tcp 首尾部 + http数据
(传输层)tcp首尾部 + http数据
(应用层)http数据
ARP协议
本质:链路层协议
功能:Mac地址 -> IP地址(与RARP协议正相反),请求分用到数据链路层
报文长度:28字节,加上以太网帧头(14)尾(4-填充)共46字节。
抓包实际中该以太网帧 ARP-Request共42(46)字节,ARP-Reply共60(64)字节,可见它用了填充字节来满足最小帧长度。
DNS
本质:应用层协议(应用程序)
功能:域名->IP的其中一种实现方式
报文格式略,没啥好说的
抓包也没啥好分析的
IP协议(核心协议)
本质:网络层协议
功能:为上层协议提供无状态,无连接,不可靠的服务(上层自行封装,比如protocol值1-ICMP,6-TCP,17-UDP)
IP(v4)头部结构:固定部分20字节(可选信息有40字节,最长60字节)
IP分片:第二个分片开始不含报文头。IP层传递的数据可能是完整的IP数据报,也可能是IP分片,统称为IP分组(packet)。
IP路由:IP模块工作流程略,IP路由机制有兴趣自行查询「路由表」
IPv6头部结构:固定部分40字节(可选信息可变长)
TCP协议
本质:传输层协议
特点:相对于UDP,面向连接、字节流和可靠传输
TCP头部结构:固定部分20字节(内容略,可选信息有40字节,最长60字节)
TCP建立与关闭:(抓包过程读值m和n都是初始为随机值ISN)
过程 | 方向 | 标志位情况 | seq值 | ack值 | 状态说明 |
---|---|---|---|---|---|
建立1 | A>>B | SYN | m | - | (主动打开) SYS_SEND >> |
建立2 | A<<B | SYN | n | m+1 | (被动打开LISTEN)SYS_RCVD >> |
建立3 | A>>B | - | - | n+1 | ESTABLISHED >> ESTABLISHED |
关闭4 | A>>B | FIN | m+1 | n+1 | (主动关闭)FIN_WAIT_1 >> |
关闭5 | A<<B | - | - | m+2 | (被动关闭)CLOSE_WAIT >> FIN_WAIT_2 |
关闭6 | A<<B | FIN | n+2 | m+2 | LAST_ACK >> |
关闭7 | A>>B | - | - | n+3 | TIME_WAIT >> CLOSED |
TCP内容太多了,另起一篇总结把
网友评论