以前自己学习 《计算机网络》和 Socket 编程时,需要做笔记或者PPT之类,经常需要一些网络协议格式图,网上找的每个图都有自己的风格,不统一,索性自己画了一些常见的网络协议格式示意图,方面大家在做报告、PPT时引用。等有空了,会为每张图添加一些字段和相应的代码结构说明,现在先上图吧。
图 0 常见的网络协议
1. 数据链路层协议
图1 Ethernet Frame(以太网帧)
下面是以太网帧中 type 为指定值时,以太网帧中所携带数据使用的上层协议:
type | protocol |
0x0800 | IP |
0x0806 | ARP |
0x8035 | RARP |
2. 网络层协议
ARP/RARP 处于数据链路层与网络层之间,没有明确划分,由于其也是使用以太网帧来封装,所以这里将其划到网络层
图 2 ARP/RARP 协议首部
MAC address type : 1 if ethernet
protocol address type: 0x0800 if IP
operation | type | meanming |
1 | ARP | request packet |
2 | ARP | respond packet |
3 | RARP | request packet |
4 | RARP | respoond packet |
图 3 IP 协议首部
head length: 单位是4-Bytes
protocol type | meanning |
1 | ICMP |
2 | IGMP |
3 | TCP |
4 | UDP |
图 4 ICMP 报文
图 5 ICMP 回显请求/回显应答 报文
图 6 ICMP 目标不可达/链接超时 报文
3. 传输层
图 7 TCP 协议首部
head len :单位是4B
check sum: TCP首部+TCP数据负载+TCP伪首部
6-bit的flag:{URG, ACK, PSH, RST, SYN, FIN} 通过位运算组合图 8 UDP 协议首部
total length: UDP首部和UDP数据负载的长度之和
check sum: UDP首部+UDP数据负载+UDP伪首部
图 9 TCP/UDP 伪首部
protocol : 如果是 TCP 字段值为 6, 如果是 UDP 该字段值为 17
length: TCP/UDP 的首部和数据部分长度之和
图 10 常用熟知端口号
4. 应用层
HTTP 消息每行都以 “回车换行” 结束
图 11 HTTP 请求消息
图 12 HTTP 相应消息
5. 其他
图 13 TCP/IP 协议体系中的数据封装过程
图 14 WinPcap 捕获数据包的一般流程
转载请注明出处:http://blog.csdn.net/xiaohui_hubei/article/details/23772975