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,,HTTP,NFS,NTP,DHCP,SMPP,SMTP,SNMP,,RIP,BGP |
|
第六層 |
表示層Presentation |
應用程式和網路間的翻譯官:對資料加密、解密,圖片、檔案的編碼、解碼等 |
|||
第五層 |
會話層Session |
維持網路上兩節點之間建立、維持和終止會話 |
|||
第四層 |
傳輸層Transport |
資料組織成資料段Segment |
在機器內部埠間傳輸資料包 |
||
第三層 |
網路層Network |
分割和重新組合資料包Packet |
對IP地址封裝解封裝(IP跟MAC地址的轉換) |
路由器 |
|
第二層 |
資料鏈路層DataLink |
將位元資訊封裝成資料幀Frame/及解封裝 |
對資料糾錯/封裝解封裝MAC地址 |
網橋、交換機 |
|
第一層 |
物理層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:
8 bits.
This field specifies the next encapsulated protocol.
Value | Protocol | References |
---|---|---|
0 | HOPOPT, IPv6 Hop-by-Hop Option. | RFC 1883 |
1 | ICMP, Internet Control Message Protocol. | RFC 792 |
2 | IGAP, IGMP for user Authentication Protocol. IGMP, Internet Group Management Protocol. RGMP, Router-port Group Management Protocol. |
RFC1112 |
3 | GGP, Gateway to Gateway Protocol. | RFC 823 |
5 | ST, Internet Stream Protocol. | RFC 1190, RFC 1819 |
6 | TCP, Transmission Control Protocol. | RFC 793 |
7 | UCL,CBT. | |
8 | EGP, Exterior Gateway Protocol. | RFC 888 |
9 | IGRP, Interior Gateway Routing Protocol. | |
10 | BBN RCC Monitoring. | |
11 | NVP, Network Voice Protocol. | RFC 741 |
12 | PUP. | |
13 | ARGUS. | |
14 | EMCON, Emission Control Protocol. | |
16 | Chaos. | |
17 | UDP, User Datagram Protocol. | RFC 768 |
18 | TMux, Transport Multiplexing Protocol. | IEN 90 |
19 | DCN Measurement Subsystems. | |
20 | HMP, Host Monitoring Protocol. | RFC 869 |
21 | Packet Radio Measurement. | |
22 | XEROX NS IDP. | |
23 | Trunk-1. | |
24 | Trunk-2. | |
25 | Leaf-1. | |
26 | Leaf-2. | |
27 | RDP, Reliable Data Protocol. | RFC 908 |
28 | IRTP, Internet Reliable Transaction Protocol. | RFC 938 |
29 | ISO Transport Protocol Class 4. | RFC 905 |
30 | NETBLT, Network Block Transfer. | |
31 | MFE Network Services Protocol. | |
32 | MERIT Internodal Protocol. | |
33 | DCCP, Datagram Congestion Control Protocol. | |
34 | Third Party Connect Protocol. | |
35 | IDPR, Inter-Domain Policy Routing Protocol. | |
36 | XTP, Xpress Transfer Protocol. | |
37 | Datagram Delivery Protocol. | |
38 | IDPR, Control Message Transport Protocol. | |
39 | TP++ Transport Protocol. | |
40 | IL Transport Protocol. | |
41 | IPv6 over IPv4. | RFC 2473 |
42 | SDRP, Source Demand Routing Protocol. | |
43 | IPv6 Routing header. | |
44 | IPv6 Fragment header. | |
45 | IDRP, Inter-Domain Routing Protocol. | |
46 | RSVP, Reservation Protocol. | |
47 | GRE, General Routing Encapsulation. | |
48 | DSR, Dynamic Source Routing Protocol. | |
49 | BNA. | |
50 | ESP, Encapsulating Security Payload. | |
51 | AH, Authentication Header. | |
52 | I-NLSP, Integrated Net Layer Security TUBA. | |
53 | SWIPE, IP with Encryption. | |
54 | NARP, NBMA Address Resolution Protocol. | |
56 | TLSP, Transport Layer Security Protocol using Kryptonet key management. | |
57 | SKIP. | |
58 | ICMPv6, Internet Control Message Protocol for IPv6. MLD, Multicast Listener Discovery. |
|
59 | IPv6 No Next Header. | |
60 | IPv6 Destination Options. | |
61 | Any host internal protocol. | |
62 | CFTP. | |
63 | Any local network. | |
64 | SATNET and Backroom EXPAK. | |
65 | Kryptolan. | |
66 | MIT Remote Virtual Disk Protocol. | |
67 | Internet Pluribus Packet Core. | |
68 | Any distributed file system. | |
69 | SATNET Monitoring. | |
70 | VISA Protocol. | |
71 | Internet Packet Core Utility. | |
72 | Computer Protocol Network Executive. | |
73 | Computer Protocol Heart Beat. | |
74 | Wang Span Network. | |
75 | Packet Video Protocol. | |
76 | Backroom SATNET Monitoring. | |
77 | SUN ND PROTOCOL-Temporary. | |
78 | WIDEBAND Monitoring. | |
79 | WIDEBAND EXPAK. | |
81 | VMTP, Versatile Message Transaction Protocol. | |
82 | SECURE-VMTP | |
83 | VINES. | |
84 | TTP. | |
85 | NSFNET-IGP. | |
86 | Dissimilar Gateway Protocol. | |
87 | TCF. | |
88 | EIGRP. | |
89 | OSPF, Open Shortest Path First Routing Protocol. MOSPF, Multicast Open Shortest Path First. |
|
90 | Sprite RPC Protocol. | |
91 | Locus Address Resolution Protocol. | |
92 | MTP, Multicast Transport Protocol. | |
93 | AX.25. | |
94 | IP-within-IP Encapsulation Protocol. | |
95 | Mobile Internetworking Control Protocol. | |
96 | Semaphore Communications Sec. Pro. | |
98 | Encapsulation Header. | |
99 | Any private encryption scheme. | |
100 | GMTP. | |
101 | IFMP, Ipsilon Flow Management Protocol. | |
102 | PNNI over IP. | |
103 | PIM, Protocol Independent Multicast. | |
104 | ARIS. | |
105 | SCPS. | |
106 | QNX. | |
107 | Active Networks. | |
108 | IPPCP, IP Payload Compression Protocol. | RFC 2393 |
109 | SNP, Sitara Networks Protocol. | |
110 | Compaq Peer Protocol. | |
111 | IPX in IP. | |
112 | VRRP, Virtual Router Redundancy Protocol. | RFC 3768, RFC 5798 |
113 | PGM, Pragmatic General Multicast. | |
114 | any 0-hop protocol. | |
115 | L2TP, Level 2 Tunneling Protocol. | |
116 | DDX, D-II Data Exchange. | |
117 | IATP, Interactive Agent Transfer Protocol. | |
118 | ST, Schedule Transfer. | |
119 | SRP, SpectraLink Radio Protocol. | |
120 | UTI. | |
121 | SMP, Simple Message Protocol. | |
122 | SM. | |
123 | PTP, Performance Transparency Protocol. | |
124 | ISIS over IPv4. | |
125 | FIRE. | |
126 | CRTP, Combat Radio Transport Protocol. | |
127 | CRUDP, Combat Radio User Datagram. | |
128 | SSCOPMCE. | |
129 | IPLT. | |
130 | SPS, Secure Packet Shield. | |
131 | PIPE, Private IP Encapsulation within IP. | |
132 | SCTP, Stream Control Transmission Protocol. | |
133 | Fibre Channel. | |
136 | UDP-Lite, Lightweight User Datagram Protocol. | |
137 | MPLS in IP. | RFC 4023 |
138 | MANET protocols. | RFC 5498 |
139 | HIP, Host Identity Protocol. | RFC 5201 |
140 | Shim6, Level 3 Multihoming Shim Protocol for IPv6. | RFC 5533 |
141 | WESP, Wrapped Encapsulating Security Payload. | RFC 5840 |
142 | ROHC, Robust Header Compression. | RFC 5858 |
143 - 252 |
||
253 254 |
Experimentation and testing. | |
255 | reserved. |
TCP: Transmission Control Protocol.
MAC 頭 | IP 頭 | TCP 頭 | Data ::: |
TCP header:
目的埠所用的服務可以檢視該網站
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
UDP, User Datagram Protocol
MAC 頭 | IP 頭 | UDP 頭 | Data ::: |
UDP header:
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Data ::: |
RIP, Routing Information Protocol
MAC header | IP header | UDP header | RIP header | Data ::: |
RIPv1 header:
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|
RIPv2 header:
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|
HTTP, HyperText Transfer Protocol
MAC 頭 | IP 頭 | TCP 頭 | HTTP 訊息 ::: |
HTTP message:
Methods:
列舉了最常見的幾個協議,下面來分析一下一段幀來練習鞏固一下。
在這之前先給大家介紹一款國外很優秀的抓取資料包的軟體 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協議,所以這段資料的最開頭就是該協議的頭,可以參考上面資料
第一行
目的MAC地址 源MAC地址 接下來資料協議型別(0x0800是IP)
所以從第一行最後2個位元組開始就是IP包的頭了:4 5 00
版本是4 ip包頭長度是5(也32bits為單位) 區別服務(不太重要)
,也就是20個位元組
00 40 | f6 67 | 40 00 | 80ip包的總共長度, 序列號 轉化成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位元組
跟內容完全符合