20250904的学习笔记
一、封包与拆包
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. 断开链接