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.pswp.cn/web/95603.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F4 + RT-Thread 实战指南:TIM10 硬件定时器驱动开发与 1 秒定时功能实现

目录前言一、STM32定时器10是个什么定时器?二、工程创建、环境配置三、程序代码四、运行前言 在rtthread中,STM32F4的定时器10有些驱动并不完整,对比与其它定时器在使用时需要手动的添加一些代码,我在使用上拆踩了一些坑&#xf…

echarts图库

环形图// 指定图表的配置项和数据this.option {// tooltip: {// trigger: item// },color: [#FFB32F, #FF5757, #57D5FF, #2FA8FF, #95FFF1], // 扇形区域以及列表颜色legend: {orient:vertical,//文字横向排itemGap:20,left: left,textStyle:{color: #F3F9FF,// fontSi…

进程(Process)全面概述

进程(Process)全面概述 本文档扩展了进程的定义、属性、生命周期、管理机制及示例,涵盖 task_struct 结构、进程链表、状态与优先级、fork 函数及其写时复制示例。 一、进程基本概念 进程:系统进行资源分配和调度的基本单位&#…

Java并发编程:sleep()与wait()核心区别详解

今天完成了实验室纳新网站的工作,大体功能都已经完善,也和前端测试过了,费了点时间,而且今天大部分时间在看langchain4j的东西,就简单复习一下八股,等会再复习一下算法题吧在Java并发编程中,sle…

AR眼镜在智能制造的应用方向和场景用例|阿法龙XR云平台

AR巡检在制造业的应用已形成覆盖设备维护、质量检测、安全监控和远程协作四大类别的成熟场景,不同制造领域的实践各具特色,为行业提供了宝贵参考。在汽车制造领域,AR 巡检主要应用于生产线设备维护和焊接质量检测。在汽车厂总装车间部署 AR 系…

【Linux系统】线程同步

在上一章节中,我们使用互斥量之后,确实解决了数据竞争问题,但出现了新的问题:只有一个线程(thread 1)在处理所有售票任务。这展示了互斥量的一个局限性:它确保了线程安全,但不保证公…

代码随想录训练营第三十一天|LeetCode56.合并区间、LeetCode738.单调递增的数字

56.合并区间 思路:先让二维数组进行排序; 遍历数组,定义一个min表示重合区间的左边界,max表示重合区间的右边界; 如果当前区间左边大于max,就证明重合区间断了,就要对它进行加入ArrayList&am…

【Unity项目经验分享】实现左右分屏裸眼3D程序

1、实现原理左右分屏原理,左右屏内容左右方向存在些许偏差。通过左右相机,然后左侧相机向左侧偏移一点3cm,右侧相机向右侧屏偏移一定3cm,然后将左右相机渲染内容通过RenderTexture渲染到Canvas上面的左右RawImage上面。2、实现具体…

设计软件启动失败?“找不到vcruntime140.dll,无法继续执行代码” 场景化解决方案来了

打游戏时,刚加载到登录界面就因 “找不到 vcruntime140.dll, 无法继续执行代码” 闪退;写代码时,编译工具突然报错中断工作;做设计时,PS、AE 启动失败弹出相同提示 —— 不同场景下的 vcruntime140.dll 错误&#xff0…

基于Echarts+HTML5可视化数据大屏展示-茶叶种植大数据溯源平台

效果展示&#xff1a;代码结构&#xff1a;主要代码实现 index.html布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta n…

PLOS One图片处理要求及处理办法

PLOS One图片处理&#xff1a; 要求&#xff1a;Please remove your figures from within your manuscript file, leaving only the individual TIFF/EPS image files. These will be automatically included in the reviewer’s PDF. 请从稿件文件中移除所有图表&#xff0c;…

AutoLayout与Masonry:简化iOS布局

Auto Layout 与 Masonry苹果提供的自动布局&#xff08;Auto Layout&#xff09;能够对视图进行灵活有效的布局。但是&#xff0c;使用原生的自动布局相关的语法创建约束的过程是非常冗长的&#xff0c;可读性也比较差。Masonry 的目标其实就是 为了解决原生自动布局语法冗长的…

从设计到落地:校园图书馆系统的面向对象实现全流程

很多小白学面向对象时总困惑&#xff1a;“类图、用例图我会画&#xff0c;但怎么把这些设计变成能跑的代码&#xff1f;” 这篇文章就用 “校园图书馆管理系统” 当例子&#xff0c;从需求分析→设计方案→代码实现→测试验证&#xff0c;带你走通 “设计→实现” 的完整链路&…

[鸿蒙心迹]带新人学鸿蒙的悲欢离合

2023年底&#xff0c;我和陆神&#xff0c;威哥&#xff0c;老罗一起去深圳参加了鸿蒙师资培训正式开启了鸿蒙之旅&#xff0c;当时和陆神拍的合照但是我把陆神打码了 学完以后就考取了鸿蒙的高级认证 看到没有时间是2023年11月 马上都要到期了。 想一想时间过得真快&#xff…

MindShow AI:AI思维导图生成工具高效解决思路混乱难题,快速搭建学习与工作大纲

你有没有过这种时候&#xff1f;想整理一份学习大纲或者项目方案&#xff0c;脑子裡一堆想法却散得像乱麻 —— 比如要做个 “数据分析入门规划”&#xff0c;明明知道要学 Excel、SQL、Python&#xff0c;可怎么分阶段、每个阶段学哪些重点&#xff0c;对着空白文档半天列不出…

快速搭建一个Vue+TS+Vite项目

1、在一个文件夹下通过cmd打开&#xff0c;输入命令npm create vitelatest命名要为英文2.选择项目框架通过上下键位选择Vue框架&#xff1a;选好按回车键3.选择开发语言选择TypeScript语言&#xff0c;方便后续开发&#xff1a;创建好的项目目录为&#xff1a;4.安装Vite依赖接…

深度学习:ResNet 残差神经网络详解

一、ResNet 残差神经网络的起源与核心地位ResNet&#xff08;Residual Neural Network&#xff0c;残差神经网络&#xff09;是 2015 年由微软亚洲研究院的何凯明、张祥雨等研究者提出的深度神经网络架构。在当年的 ImageNet 大规模视觉识别挑战赛&#xff08;ILSVRC&#xff0…

Python面试题及详细答案150道(116-125) -- 性能优化与调试篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 116. 如何查找Python程序的…

C++11 智能指针的使⽤及其原理

目录 1. 智能指针的使⽤场景分析 2. RAII和智能指针的设计思路 3. C标准库智能指针的使⽤ 4. 智能指针的原理 5. shared_ptr和weak_ptr 5.1 shared_ptr循环引⽤问题 5.2 weak_ptr 6. shared_ptr的线程安全问题 7. C11和boost中智能指针的关系 8. 内存泄漏 8.1 什么是…

【Linux】Linux进程状态和僵尸进程:一篇看懂“进程在忙啥”

前言&#xff1a;欢迎各位光临本博客&#xff0c;这里小编带你直接手撕Make/Makefile (自动化构建)&#xff0c;文章并不复杂&#xff0c;愿诸君耐其心性&#xff0c;忘却杂尘&#xff0c;道有所长&#xff01;&#xff01;&#xff01;&#xff01; **&#x1f525;个人主页&a…