当前位置: 首页 > news >正文

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. 断开链接

http://www.xdnf.cn/news/1455157.html

相关文章:

  • HTML + CSS 创建图片倒影的 5 种方法
  • 大数据毕业设计选题推荐-基于大数据的儿童出生体重和妊娠期数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • 加密货币武器化:恶意npm包利用以太坊智能合约实现隐蔽通信
  • 性能堪比claude sonnet4,免费无限使用!claude code+魔搭GLM4.5在ubuntu上安装完整流程
  • Cadence OrCAD Capture绘制复用管脚封装的方法图文教程
  • 蔚来8月狂卖3.1万辆,反超理想引热议!
  • C++ opencv+gstreamer编译,C++ opencv4.5.5+gstreamer1.0 -1.24.12 编译 ,cmake 4.0.0
  • OpenCV: Mat存储方式全解析-单通道、多通道内存布局详解
  • 0904网络设备配置与管理第二次授课讲义
  • 如何用仓库路线完成一个音视频实战项目:FFmpeg + SDL 简易播放器
  • 把开发环境丢云上,我的电脑风扇再也没转过!
  • 【EasyExcel】Excel工具类2.0
  • C++ STL 中 `std::list` 双向链表容器的几个关键成员函数:`empty()`、`front()` 和 `pop_front()`
  • 【机器学习】HanLP+Weka+Java算法模型
  • 指针高级(3)
  • Redlock:为什么你的 Redis 分布式锁需要不止一个节点?
  • ​浏览器存储
  • 设计模式:中介者模式(Mediator Pattern)
  • 力扣190:颠倒二进制位
  • MySQL主从复制进阶(GTID复制,半同步复制)
  • SpringMVC —— 响应和请求处理
  • 手写 Tomcat
  • STM32启动模式配置
  • 一个开源的企业官网简介
  • RTSP H.265 与 RTMP H.265 的差异解析:标准、扩展与增强实现
  • 设备监控系统如何为重工业实现设备预测性维护
  • 【智谱清言-GLM-4.5】StackCube-v1 任务训练结果不稳定性的分析
  • uniapp中使用echarts并且支持pc端的拖动、拖拽和其他交互事件
  • 案例精述 | 防护即智能 Fortinet赋能英科全栈安全重构实践
  • [晕事]今天做了件晕事91,glibc,rand之前必须设置种子