OSI七层模型及对应的数据包格式

我接触网络协议也比较久了,不过一直都只懂个皮毛,最近比较深入研究之后终于有点豁然开朗的感觉。也因为网络上各种协议的资料太多但是都比较分散杂乱,所以在这里做点总结,给大家提供一些资料也备自己以后查阅。 

鉴于有些朋友没有耐心完全看完整篇文章,所以我先给大家一个相当权威网站,该详细提供了各种网络协议及分析(有这么一个网站足矣)

我下面列举的材料也基本来于此 

RFC Sourcebook

http://www.networksorcery.com/enp/default1101.htm 


 首先让我们从OSI七层结构 说起

OSI/RM即Open System Interconnection Reference Model开放系统互连基本参考模型。开放,是指非垄断的。系统是指现实的系统中与互联有关的各部分。 

层次

名称

数据格式及行为

功能

典型设备

TCP/IP常见协议

第七层

应用层Application

 

 

 

 

数据Data

网络服务与使用者应用程序间的一个接口

 

NNTP,SIP,SSI,DNS,FTP,Gopher,HTTP,NFS,NTP,DHCP,SMPP,SMTP,SNMP,Telnet,RIP,BGP

第六层

表示层Presentation

应用程序和网络间的翻译官:对数据加密、解密,图片、文件的编码、解码等

 

MIME,SSL,TLS,XDR

第五层

会话层Session

维持网络上两节点之间建立、维持和终止会话

 

Sockets.Session establishment in TCP,SIP,RTP

第四层

传输层Transport

数据组织成数据段Segment

在机器内部端口间传输数据包

 

TCP,UDP,SCTP,DCCP

第三层

网络层Network

分割和重新组合数据包Packet

IP地址封装解封装(IPMAC地址的转换)

路由器

IP,IPsec,ICMP,IGMP,OSPF

第二层

数据链路层DataLink

将比特信息封装成数据帧Frame/及解封装

对数据纠错/封装解封装MAC地址

网桥、交换机

PPP,SLIP,PPTP,L2TP

第一层

物理层Physical

传输比特(bit)流

建立、维护和取消物理连接

网卡、中继器和集线器

 

 

Ethernet: 以太网协议
下面介绍一下各个帧格式  

  • Ethernet II 
           就是DIX以太网联盟推出的,它由6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的类型域(用于标示封装在这个Frame、里面数据的类型)以上为Frame Header,接下来是46--1500 字节的数据,和4字节的帧校验)
  • Novell Ethernet 
           它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF 
           用于标示这个帧是Novell Ether类型的Frame 由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。
  • IEEE 802.3/802.2 
           802.3的Frame Header和Ethernet II的帧头有所不同EthernetII类型域变成了长度域。其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由DSAP(Destination Service Access Point) 
           1 byte,SSAP(Source SAP),一个控制域--1 byte! 
           SAP用于标示帧的上层协议
  • Ethernet SNAP 
           SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID其中前面3个byte通常与源mac地址的前三个bytes相同为厂商代码!有时也可设为0,后2 bytes 与Ethernet II的类型域相同。。。

  如何区分不同的帧格式    
       Ethernet中存在这四种Frame那些网络设备又是如何识别的呢? 如何区分EthernetII与其他三种格式的Frame 如果帧头跟随source mac地址的2 bytes的值大于1500 则此Frame为EthernetII格式的。 
       接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether 类型的Frame 
       如果为0xAAAA则为Ethernet SNAP格式的Frame ,如果都不是则为Ethernet 802.3/802.2格式的帧

以太网帧结构概述
  以太网帧是OSI参考模型数据链路层的封装,网络层的数据包被加上帧头和帧尾,构成可由数据链路层识别的数据帧。虽然帧头和帧尾所用的字节数是固定不变的,但根据被封装数据包大小的不同,以太网帧的长度也随之变化,变化的范围是64-1518字节(不包括8字节的前导字)。

 、典型帧结构:Ethernet_II (最常用,所以只介绍这个)
  Ethernet_II中所包含的字段:
  目的地址:接收端的MAC地址,6字节长;
  源地址:发送端的MAC地址,6字节长;
  类型:数据包的类型(即上层协议的类型),2字节长;
  数据:被封装的数据包,46-1500字节长;
  Ethernet_II的主要特点是通过类型域标识了封装在帧里的数据包所采用的协议,类型域是一个有效的指针,通过它,数据链路层就可以承载多个上层(网络层)协议。但是,Ethernet_II的缺点是没有标识帧长度的字段。

Ethernet II or DIX

0x0600 XNS (Xerox)
0x0800 IP (the Internet protocol)
0x6003 DECNET


 IP: Internet Protocol

MAC 头

IP 头数据 :::

IP header:

0001020304050607080910111213141516171819202122232425262728293031
版本IP头长度区分服务IP包长度
标示符标志Fragment offset
TTL生存周期协议
Header checksum
Source IP address 源IP地址
Destination IP address 目标IP地址
Options and padding :::

 Protocol.8 bits.
This field specifies the next encapsulated protocol.

ValueProtocolReferences
0HOPOPT, IPv6 Hop-by-Hop Option.RFC 1883
1ICMP, Internet Control Message Protocol.RFC 792
2IGAP, IGMP for user Authentication Protocol.
IGMP, Internet Group Management Protocol.
RGMP, Router-port Group Management Protocol.
RFC1112
3GGP, Gateway to Gateway Protocol.RFC 823
4IP in IP encapsulation.RFC 2003
5ST, Internet Stream Protocol.RFC 1190, RFC 1819
6TCP, Transmission Control Protocol.RFC 793
7UCL,CBT. 
8EGP, Exterior Gateway Protocol.RFC 888
9IGRP, Interior Gateway Routing Protocol. 
10BBN RCC Monitoring. 
11NVP, Network Voice Protocol.RFC 741
12PUP. 
13ARGUS. 
14EMCON, Emission Control Protocol. 
15XNET, Cross Net Debugger.IEN 158
16Chaos. 
17UDP, User Datagram Protocol.RFC 768
18TMux, Transport Multiplexing Protocol.IEN 90
19DCN Measurement Subsystems. 
20HMP, Host Monitoring Protocol.RFC 869
21Packet Radio Measurement. 
22XEROX NS IDP. 
23Trunk-1. 
24Trunk-2. 
25Leaf-1. 
26Leaf-2. 
27RDP, Reliable Data Protocol.RFC 908
28IRTP, Internet Reliable Transaction Protocol.RFC 938
29ISO Transport Protocol Class 4.RFC 905
30NETBLT, Network Block Transfer. 
31MFE Network Services Protocol. 
32MERIT Internodal Protocol. 
33DCCP, Datagram Congestion Control Protocol. 
34Third Party Connect Protocol. 
35IDPR, Inter-Domain Policy Routing Protocol. 
36XTP, Xpress Transfer Protocol. 
37Datagram Delivery Protocol. 
38IDPR, Control Message Transport Protocol. 
39TP++ Transport Protocol. 
40IL Transport Protocol. 
41IPv6 over IPv4.RFC 2473
42SDRP, Source Demand Routing Protocol. 
43IPv6 Routing header. 
44IPv6 Fragment header. 
45IDRP, Inter-Domain Routing Protocol. 
46RSVP, Reservation Protocol. 
47GRE, General Routing Encapsulation. 
48DSR, Dynamic Source Routing Protocol. 
49BNA. 
50ESP, Encapsulating Security Payload. 
51AH, Authentication Header. 
52I-NLSP, Integrated Net Layer Security TUBA. 
53SWIPE, IP with Encryption. 
54NARP, NBMA Address Resolution Protocol. 
55Minimal Encapsulation Protocol. 
56TLSP, Transport Layer Security Protocol using Kryptonet key management. 
57SKIP. 
58ICMPv6, Internet Control Message Protocol for IPv6.
MLD, Multicast Listener Discovery.
 
59IPv6 No Next Header. 
60IPv6 Destination Options. 
61Any host internal protocol. 
62CFTP. 
63Any local network. 
64SATNET and Backroom EXPAK. 
65Kryptolan. 
66MIT Remote Virtual Disk Protocol. 
67Internet Pluribus Packet Core. 
68Any distributed file system. 
69SATNET Monitoring. 
70VISA Protocol. 
71Internet Packet Core Utility. 
72Computer Protocol Network Executive. 
73Computer Protocol Heart Beat. 
74Wang Span Network. 
75Packet Video Protocol. 
76Backroom SATNET Monitoring. 
77SUN ND PROTOCOL-Temporary. 
78WIDEBAND Monitoring. 
79WIDEBAND EXPAK. 
80ISO-IP. 
81VMTP, Versatile Message Transaction Protocol. 
82SECURE-VMTP 
83VINES. 
84TTP. 
85NSFNET-IGP. 
86Dissimilar Gateway Protocol. 
87TCF. 
88EIGRP. 
89OSPF, Open Shortest Path First Routing Protocol.
MOSPF, Multicast Open Shortest Path First.
 
90Sprite RPC Protocol. 
91Locus Address Resolution Protocol. 
92MTP, Multicast Transport Protocol. 
93AX.25. 
94IP-within-IP Encapsulation Protocol. 
95Mobile Internetworking Control Protocol. 
96Semaphore Communications Sec. Pro. 
97EtherIP. 
98Encapsulation Header. 
99Any private encryption scheme. 
100GMTP. 
101IFMP, Ipsilon Flow Management Protocol. 
102PNNI over IP. 
103PIM, Protocol Independent Multicast. 
104ARIS. 
105SCPS. 
106QNX. 
107Active Networks. 
108IPPCP, IP Payload Compression Protocol.RFC 2393
109SNP, Sitara Networks Protocol. 
110Compaq Peer Protocol. 
111IPX in IP. 
112VRRP, Virtual Router Redundancy Protocol.RFC 3768, RFC 5798
113PGM, Pragmatic General Multicast. 
114any 0-hop protocol. 
115L2TP, Level 2 Tunneling Protocol. 
116DDX, D-II Data Exchange. 
117IATP, Interactive Agent Transfer Protocol. 
118ST, Schedule Transfer. 
119SRP, SpectraLink Radio Protocol. 
120UTI. 
121SMP, Simple Message Protocol. 
122SM. 
123PTP, Performance Transparency Protocol. 
124ISIS over IPv4. 
125FIRE. 
126CRTP, Combat Radio Transport Protocol. 
127CRUDP, Combat Radio User Datagram. 
128SSCOPMCE. 
129IPLT. 
130SPS, Secure Packet Shield. 
131PIPE, Private IP Encapsulation within IP. 
132SCTP, Stream Control Transmission Protocol. 
133Fibre Channel. 
134RSVP-E2E-IGNORE.RFC 3175
135Mobility Header.RFC 3775
136UDP-Lite, Lightweight User Datagram Protocol.RFC 3828
137MPLS in IP.RFC 4023
138MANET protocols.RFC 5498
139HIP, Host Identity Protocol.RFC 5201
140Shim6, Level 3 Multihoming Shim Protocol for IPv6.RFC 5533
141WESP, Wrapped Encapsulating Security Payload.RFC 5840
142ROHC, Robust Header Compression.RFC 5858
143
-
252
  
253
254
Experimentation and testing. 
255reserved.

 

TCP: Transmission Control Protocol.

MAC 头IP 头TCP 头Data :::

TCP header:

0001020304050607080910111213141516171819202122232425262728293031
Source Port 源端口Destination Port 目标端口
Sequence Number 序列号
Acknowledgment Number 要接受的序列号
Data OffsetreservedECNControl BitsWindow
ChecksumUrgent Pointer
Options and padding :::
Data :::

 

目的端口所用的服务可以查看该网站

http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

 

UDP, User Datagram Protocol

MAC 头IP 头UDP 头Data :::

UDP header:

0001020304050607080910111213141516171819202122232425262728293031
Source Port 源端口Destination Port目标端口
LengthChecksum
Data :::

 


RIP, Routing Information Protocol 

MAC headerIP headerUDP headerRIP headerData :::

RIPv1 header:

0001020304050607080910111213141516171819202122232425262728293031
CommandVersion0
RIPv1 entry table :::

RIPv2 header:

0001020304050607080910111213141516171819202122232425262728293031
CommandVersion0
RIPv2 entry table :::

 


HTTP, HyperText Transfer Protocol

MAC 头IP 头TCP 头HTTP 消息 :::

HTTP message:


Methods:

MethodReferences
DELETERFC 1945
GETRFC 1945
HEADRFC 1945
LINKRFC 1945
OPTIONSRFC 2068
PATCHRFC 2068
POSTRFC 1945
PUTRFC 1945
TRACERFC 2068
UNLINKRFC 1945

 

 列举了最常见的几个协议,下面来分析一下一段帧来练习巩固一下。

在这之前先给大家介绍一款国外很优秀的抓取数据包的软件 Wireshark,是想从事网络协议工作人士必不可少的好软件;存在着各种版(不过基于linux的版本安装起来比较麻烦,因为事先得自己手动安装很多个依赖的包)

官方下载地址:

http://www.wireshark.org/download.html 

先给个截图


以下是完整的一个数据包

 序列

0000  | 00 1d 92 32 d0 90 00 1f  3a 3a f6 72 08 00 45 00                
0010  | 00 40 f6 67 40 00 80 06  80 ea c0 a8 01 0b c0 a8              
0020  | 01 0a 12 08 00 8b e0 b1  20 42 00 00 00 00 b0 02  
0030  | 20 00 7f 14 00 00 02 04  05 b4 01 03 03 00 01 01   
0040  | 08 0a 00 00 00 00 00 00  00 00 01 01 04 02

所有都是以16进制表示一个byte字节(8个bits),也就是每个数字都代表4个bits。

首先我们知道最低层肯定是Ehernet协议,所以这段数据的最开头就是该协议的头,可以参考上面资料

第一行 


00 1d 92 32 d0 90 | 00 1f  3a 3a f6 72 |                      08 00                                |  45 00 

   目的MAC地址              源MAC地址              接下来数据协议类型(0x0800是IP)


所以从第一行最后2个字节开始就是IP包的头了:

                                                                                  4                             5                                           00

                                                                               版本是4         ip包头长度是5(也32bits为单位)        区别服务(不太重要)

                                                                                                          ,也就是20个字节


         00  40                          |   f6 67      |                40 00                                           |                              80                                                    

ip包的总共长度,                         序列号        转化成bit是 010 0 0000 0000 0000                TTL = 128 (windows默认128,linux默认 64)

4*16 = 64 个字节                                       更加flag的定义是:不要分段,且是最后一段         该数据包生存周期(即最多能通过路由的个数,等于0时抛弃)      

  |             06                    |     80 ea    |  c0 a8 01 0b |c0 a8

    在IP协议之上的协议          checksum       源机器IP        目标

     06是TCP协议                                  192.168.1.11


01 0a                 |        12 08       |                        00 8b                                    |   e0 b1  20 42    |

ip地址                      源机器端口                        目标机器端口                                    该tcp的序列号                  

 192.168.1.10            4616                 139(NETBIOS Session Service.)

          00 00 00 00                     |        b                        |     0      02                                               

    接下来想接受到的tcp包序列号           TCP包头长度                 bits:0000 0000 0010

                                                     11*4 = 44字节                 零都代表默认,唯一的一个1代表SYN


20 00               |    7f 14       |   00 00     |  02 04   05 b4      01 03 03 00     01 01 |     08  0a          00  00  | 


00  00    00  00 |  00  00     01  01 |  04  02      

窗口大小8192       checksum      紧急标志           Options (不太重要)

           

表示Ethernet头,共14字节

                  

IP头, 共 20 字节 

           

TCP头,共44字节

跟内容完全符合

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值