一个基于TCP的应用层数据包结构

263 阅读2分钟

数据包结构

以太网首部 长度 14 Byte
IPv4首部 长度 20+ Byte
TCP首部 长度 20+ Byte
自定义应用层协议 长度 N Byte
以太网尾部 长度 4 Byte

以太网首部
+------------------------+
| Destination MAC (6B)  |
| Source MAC (6B)        |
| Type (IPv4, 2B)        |
+------------------------+

IPV4首部
+-------+-------+--------+------------------------+
| Version(4b) | IHL(4b)| TOS(8b) | Total Length (16b) |
| Identification(16b)      | Flags(3b) | Fragment Offset(13b) |
| TTL(8b) | Protocol(8b) | Header Checksum (16b)  |
| Source IP Address (32b)                           |
| Destination IP Address (32b)                      |
+---------------------------------------------------+
TCP首部
+------------------------+------------------------+
| Source Port (16b)      | Destination Port (16b) |
| Sequence Number (32b)                            |
| Acknowledgment Number (32b)                     |
| Data Offset(4b) |Reserved(3b)|Flags(9b)|Window Size(16b)|
| Checksum (16b)       | Urgent Pointer (16b)    |
| Options (if any)                                 |
+---------------------------------------------------+
Websocket帧
+------------------------+------------------------+
| FIN(1b), RSV1-3(3b), Opcode(4b) | Mask(1b), Payload Length(7b/16b/64b) |
| Masking Key (if Mask is set, 32b)                 |
| Payload Data (masked, if Mask is set)             |
+---------------------------------------------------+
以太网尾部
+------------------------+
| FCS (4B)               |
+------------------------+

OSI七层模型

开放式系统互联模型(Open System Interconnection Model)


因特网协议栈中的层Code说明
物理层physical layer在局部局域网上传送数据帧。
例如调制解调器、无线电、光纤
数据链路层data link layer数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。
例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
网络层network layer网络表头(NH)决定数据的路径选择和转寄。
例如IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25
传输层transport layer传输表头(TH)包含了所使用的协议等发送信息。
例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
会话层session layer在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。
例如ASAP、ISO 8327 / CCITT X.225、RPC、NetBIOS、Winsock、BSD sockets、SOCKS、密码验证协议
表示层presentation layer把数据转换为能与接收者的系统格式兼容并适合传输的格式。
例如JPEG、ASCII、UTF-8
应用层application layer提供为应用软件而设的接口。
例如:HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP、TLS