协议头部格式详解:IP、TCP、UDP与MAC帧结构

一、封包与拆包

1. 封包(Packet Encapsulation)

封包 是指在发送数据时,将数据从高层协议封装到低层协议的过程。每经过一层协议,数据都会被加上相应的协议头(有时也会加上协议尾),形成一个新的数据单元,直到数据被封装成可以在物理介质上传输的帧。

应用层:

应用层协议(如HTTP、FTP、SMTP等)生成数据。

例如,HTTP请求数据。

传输层:

传输层协议(如TCP或UDP)将应用层数据封装成传输层数据段(Segment)。

TCP会添加TCP头部,包括源端口、目的端口、序列号、确认号等信息。

UDP会添加UDP头部,包括源端口、目的端口、长度和校验和。

网络层:

网络层协议(如IP)将传输层数据段封装成网络层数据包(Packet)。

IP会添加IP头部,包括源IP地址、目的IP地址、协议类型等信息。

数据链路层:

数据链路层协议(如以太网)将网络层数据包封装成数据链路层帧(Frame)。

以太网会添加以太网头部,包括源MAC地址、目的MAC地址、类型/长度字段。

最后,添加帧尾(如CRC校验)。

物理层:

物理层将数据链路层帧转换为电信号或光信号,通过物理介质(如电缆、光纤)传输。

示意图:

应用层数据

↓

传输层数据段(TCP/UDP头部 + 应用层数据)

↓

网络层数据包(IP头部 + 传输层数据段)

↓

数据链路层帧(以太网头部 + 网络层数据包 + 帧尾)

↓

物理层信号

2. 拆包(Packet Decapsulation)

拆包 是指在接收数据时,将数据从低层协议解封装到高层协议的过程。每经过一层协议,数据都会被去掉相应的协议头(有时也会去掉协议尾),直到数据被还原为应用层数据。

物理层:

物理层将接收到的电信号或光信号转换为数据链路层帧。

数据链路层:

数据链路层解析帧头,提取网络层数据包。

去掉以太网头部和帧尾,将网络层数据包传递给网络层。

网络层:

网络层解析IP头部,提取传输层数据段。

去掉IP头部,将传输层数据段传递给传输层。

传输层:

传输层解析TCP或UDP头部,提取应用层数据。

去掉TCP或UDP头部,将应用层数据传递给应用层。

应用层:

应用层解析应用层数据,还原为原始数据。

例如,HTTP请求数据被还原为HTTP请求。

示意图:

物理层信号

↓

数据链路层帧

↓

网络层数据包(去掉以太网头部和帧尾)

↓

传输层数据段(去掉IP头部)

↓

应用层数据(去掉TCP/UDP头部)

二、IP头格式

三、UDP协议头

四、TCP协议头

五、MAC帧格式

补充:

①wireshark:网络抓包工具 ,网络协议分析,网络调试。

  1. 打开 --- sudo wireshark。

  2. 选择网络设备。

  3. 设置过滤条件。 --- port ,ip

②http 协议:超文本传输协议

url,统一资源定位符 唯一表示互联网上的某个资源(网页,电影,图片)

html ,脚本语言,编写网页。

③http 交互步骤

  1. 三次握手

  2. 发送请求报文

  3. 等待服务器回复 响应报文+数据

  4. 断开链接

相关推荐
叼烟扛炮12 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain
叼烟扛炮16 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain
且从容.17 小时前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
蒸蒸yyyyzwd19 小时前
关于 AI 开发相关的一些面经。
笔记·学习
2603_9696948520 小时前
JDBC 基础学习笔记:API 核心原理解析与 CRUD 代码实操
数据库·笔记·mysql·学习方法·database·sql注入
迪康coolmu21 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
xiaoye-duck21 小时前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
无足鸟ICT1 天前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
无咎.lsy1 天前
《机器学习》笔记
笔记·机器学习
坤坤子吖1 天前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习