计算机网络 - UDP/TCP、IP、MAC报文协议格式
生活随笔
收集整理的這篇文章主要介紹了
计算机网络 - UDP/TCP、IP、MAC报文协议格式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、計算機網(wǎng)絡(luò)
計算機網(wǎng)絡(luò)體系結(jié)構(gòu):
現(xiàn)在多是參考(c)五層協(xié)議。
每層比較常見的協(xié)議:
| 應(yīng)用層 | DNS、FTP、TELNET、HTTP、SMTP、POP3、DHCP、SNMP |
| 運輸層 | TCP、UDP? ? ? |
| 網(wǎng)絡(luò)層 | IPv4、IPv6、ICMP、ICMPv6、ARP、MPLS |
| 數(shù)據(jù)鏈路層(MAC) | CSMA/CD、PPP |
| 物理層 | 以太網(wǎng)、調(diào)制解調(diào)器、電力線通信(PLC)、光纖、同軸電纜、雙絞線 |
2、數(shù)據(jù)鏈路層(MAC層)
?以太網(wǎng)V2的MAC幀格式:
MAC幀頭部結(jié)構(gòu)體定義:
// u_char: 1字節(jié),8位 // u_short: 2字節(jié),16位 // u_int: 4字節(jié),32位// 以太網(wǎng)幀數(shù)據(jù)頭部 - 固定 14 個字節(jié) typedef struct ethernet_header {u_char dest_mac[6]; // 目的地址(MAC地址)u_char src_mac[6]; // 源地址(MAC地址)u_short type;// 類型字段,用來標志上一層使用的協(xié)議,以便把MAC幀數(shù)據(jù)交給上一層的這個協(xié)議(IP:0x0800; ) }ETHERNET_HEADER;3、網(wǎng)絡(luò)層
?IP數(shù)據(jù)包的格式:
?首部長度的單位為32位字(4 bytes),所以需要 *4?計算有多少個字節(jié)長度。
總長度的單位為字節(jié)。
IP數(shù)據(jù)包頭部結(jié)構(gòu)體定義:
// 網(wǎng)絡(luò)層 IP數(shù)據(jù)包 首部 - 固定 20 個字節(jié) typedef struct ip_header {u_char ver_ihl;// 版本(4 bits)+首部長度(4 bits), 首部長度單位是32位字,所以需要 *4 計算有多少個字節(jié)u_char tos;// 區(qū)分服務(wù)(Type of Service, 8 bits)u_short tlen;// 總長(Total Length, 16 bits),=首部長度+數(shù)據(jù)長度,最大為65535字節(jié)(2^16-1)u_short identify;// 標識(Identify, 16 bits),IP軟件在存儲器中維持的一個計數(shù)器,每產(chǎn)生一個數(shù)據(jù)包,計數(shù)器就加1(不是序號)u_short flags_fo;// 標志位(Flags 3 bits)+段偏移量(Fragment offset 13 bits)u_char ttl;// 存活時間(Time to Live, 8 bits)u_char proto;// 協(xié)議(Protocol, 8 bits),指出此數(shù)據(jù)報攜帶的數(shù)據(jù)是何種協(xié)議,以便目的主機IP層知道應(yīng)將數(shù)據(jù)交由哪個協(xié)議進行處理u_short crc;// 首部校驗和(Header checkSum, 16 bits)u_long src_addr;// 源地址(Source Address, 32 bits)u_long des_addr;// 目的地址(Destination Address, 32 bits)//u_int op_pad; // 選項與填充(Option * Padding, 32 bits) }IP_HEADER;4、傳輸層
傳輸層主要有UDP協(xié)議以及TCP協(xié)議。
4.1 UDP協(xié)議
UDP時面向報文的:
UDP用戶數(shù)據(jù)的首部格式:
長度:UDP用戶數(shù)據(jù)報的長度(首部 + 數(shù)據(jù)部分),單位為字節(jié)。?
UDP數(shù)據(jù)包頭部結(jié)構(gòu)體定義:
// 傳輸層 UDP數(shù)據(jù)包 首部 - 固定首部 8 個字節(jié) typedef struct udp_header {u_short src_port; // 源端口(Source Port, 16 bits)u_short des_port; // 目的端口(Destination Port, 16 bits)u_short len; // UDP數(shù)據(jù)包長度(Datagram Length, UDP用戶數(shù)據(jù)包的長度,單位為字節(jié))u_short crc; // 校驗和(CheckSum, 16 bits) }UDP_HEADER;4.2 TCP協(xié)議
TCP報文段的首部格式:
需要注意的是,“數(shù)據(jù)偏移”實際上就是TCP報文首部的長度,單位為 32位字(4 bytes)?
TCP數(shù)據(jù)包頭部結(jié)構(gòu)體定義:
// 傳輸層 TCP數(shù)據(jù)包 首部 - 固定首部 20 個字節(jié) typedef struct tcp_header {u_short src_port;// 源端口(2 bytes = 16 bits)u_short des_port;// 目的端口(2 bytes = 16 bits)u_int seq_num;// 序號(4 bytes = 32 bits)u_int ack_num;// 確認號(4 bytes = 32 bits)u_short hl_resv;// 首部長度(4 bits)+保留(6 bits)+ URG + ACK + PSH + RST + SYN + FIN(各 1 bit)u_short wind;// 窗口(2 bytes = 16 bits)u_short check_sum;// 校驗和(2 bytes = 16 bits)u_short ur_point;// 緊急指針(2 bytes = 16 bits)//u_int op_pad; // 選項與填充(Option * Padding, 32 bits) }TCP_HEADER;總結(jié)
以上是生活随笔為你收集整理的计算机网络 - UDP/TCP、IP、MAC报文协议格式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity-Photon Pun2个人总
- 下一篇: PUN☀️二、局域网的搭建