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