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

封装和分用(网络原理)


UDP/TCP协议知识及相关机制

优质好文推荐👆👆


我们如果想要了解封装与分用,先需要了解TCP/IP五层协议~~

该图的右边就是TCP/IP五层协议~~需要先理解一下各层是什么含义~


应用层:直接为用户应用程序提供网络服务和通信协议。它定义了应用程序如何交换数据和特定应用的规则

传输层:负责在源主机和目标主机和应用程序之间提供端到端的通信服务。主要有两种协议:UDP协议(不可靠,无连接),TCP协议(可靠,有连接)。简单地来说,负责两台主机之间的数据传输

网络层:负责将数据包从源主机跨越多个网络路由到目标主机~~使用逻辑地址进行寻址,并找到数据包传输的最好路径~~

数据链路层:负责在同一物理网络内的节点之间可靠地传输数据帧。它处理物理地址

(MAC地址)、帧的封装、错误检测和对物理层传输地比特流的访问控制~~

物理层:负责在物理通信媒介(如电缆、光纤)上传输原始地二进制比特流~确保比特能从一个设备传输到另一个设备~~


那我们举个示例来说明封装和分用~~大家都用过QQ吧,QQ怎么把你发送的数据发送到对端的~~这里其实就涉及到了封装和分用~~

封装的过程

首先你编辑了一条消息,假如说:你好,同学! 此时,你正在处在应用层~~


应该程序就会调用操作系统的API进而把数据传输到传输层

传输层对其封装 

UDP报头中包含的内容


传输层调用操作系统内核中的API把数据传输到网络层

网络层对其封装

IP报头中包含的内容


网络层调用操作系统内核中的API把数据传输到数据链路层

数据链路层对其封装

以太网帧头通常包含源MAC地址、目的MAC地址、类型/长度


数据链路层调用操作系统内核中的API把数据传输给物理层

把上述这样二进制数据转换成光信号、电信号、电磁波,然后进行发送给对端


忽略中间传输的过程~~

假设数据已经到达了网卡~~应该怎么样处理,这个过程就叫做分用

假设发送方为A,接收方为B

B的物理层

B的物理层收到了光信号/电信号/电磁波,就会把这些信号转化成二进制,得到一个以太网数据帧,然后把这个数据帧,交给数据链路层~~

B的数据链路层

按照以太网协议对其数据进行解析,也就是去掉以太网数据帧,得到其中的内容~~然后上传给网络层

这个解析的过程:

目标MAC地址的校验~如果地址不匹配,将会被舍弃~~

帧校验序列检查

规则:

读取帧尾部的4字节FCS值

接收到的整个帧(除了FCS本身)使用相同的CRC(循环冗余校验)算法进行计算,得到一个新的FCS值

如果新的FCS值和FCS值不匹配,则会舍弃

最后去掉封装~~以太网帧头


B的网络层

按照IP协议对其数据进行解析,得到IP报头中的内容,然后上传给传输层~~

这个解析的过程:

IP报头检验,如果不匹配,则会被舍弃

目标IP地址检验  如果不匹配,则会被舍弃

处理分片与重组 如果不匹配,则会被舍弃

解封装:去掉IP报头

协议字段判断 :这个主要是判断载荷中封装的是哪种传输层协议的数据段/数据报


B的传输层

按照UDP协议对其数据进行解析,得到UDP报头中的内容,然后上传给应用层~~

这个解析的过程:

UDP报头解析与校验~~

分用至目标应用程序   

                这是传输层“分用”的关键步骤,UDP模块会读取UDP报头中的目标端口号~

                根据这个目标的端口号,UDP模块会将UDP载荷放入到接收队列中或直接给

                应用程序~~

解封装  :去掉UDP报头~~


B的应用层

按照自己约定号的格式对其进行解析,得到数据,然后到达了B,最后对端就收到了你发的消息


以上就是封装和分用的过程~~

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

相关文章:

  • C# 方法(方法重载)
  • 查看YOLO版本的三种方法
  • 关于解决MySQL的常见问题
  • Linux基础开发工具一(yum/apt ,vim)
  • 滑动窗口——将x减到0的最小操作数
  • Python中的标识、相等性与别名:深入理解对象引用机制
  • Gartner 《2025大数据管理规划指南》学习心得
  • 【安装配置教程】ubuntu安装配置Kodbox
  • 【RP2350】香瓜树莓派RP2350之搭建开发环境(windows)
  • AI日报 - 2024年05月12日
  • redis数据结构-05 (LPUSH、RPUSH、LPOP、RPOP)
  • 第二十二节:图像金字塔-拉普拉斯金字塔
  • 深入浅出:Spring Boot 中 RestTemplate 的完整使用指南
  • AI Agent(9):企业应用场景
  • springboot3+vue3融合项目实战-大事件文章管理系统-更新用户头像
  • MySQL(8)什么是主键和外键?
  • Ubuntu 22虚拟机【网络故障】快速解决指南
  • Linux:44线程互斥lesson32
  • 【言语】刷题1
  • 手机当电脑播放器 soundwire
  • Python异常处理全解析:从基础到高级应用实战
  • 《大模型微调实战:Llama 3.0全参数优化指南》
  • js前端分片传输大文件+mongoose后端解析
  • 大数据基础——Ubuntu 安装
  • 洛谷题目:P1673 [USACO05FEB] Part Acquisition S 题解(本题简)
  • 基于zernike 拟合生成包裹训练数据-可自定义拟合的项数
  • Vue Router全局拦截
  • 《Vuejs 设计与实现》第 4 章(响应式系统)( 下 )
  • ES 面试题系列「二」
  • C++ asio网络编程(4)异步读写操作及注意事项