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

TCP/IP协议簇及封装与解封装

  TCP/IP协议簇

 现如今用的参考模型TCP/IP 是一个协议簇,它组建了整个互联网
最主要的是TCP/IP 和这两个协议,所以起名为TCP/IP

TCP/IP模型

TCP/IP标准模型——四层

TCP/IP对等模型——五层

数据链路层分为两个子层:

LLC子层:逻辑链路控制子层

MAC子层:介质访问控制子层

PDU (协议数据单元)—— 数据在不同层中的单位

它是在不同层次协议中传输的最小数据单元,用于在网络中传递信息。PDU的大小和结构取决于所用协议的要求和设计。PDU在计算机网络中有着重要的作用。它通过封装和解封装的过程,在不同层次的协议之间进行数据传输和交互。PDU的作用是将上层协议的数据封装成适合下层协议传输的格式,同时也负责将接收到的数据解封装并传递给上层协议进行处理。 

OSI中可分为:

L1PDU

L2PDU

L3PDU

L4PDU

L5PDU

L6PDU

L7PDU

在TCP、IP中被称作:

  • 应用层:APDU
  • 表示层:PPDU
  • 会话层:SPDU
  • 传输层:段(segment)
  • 网络层:包(packet)
  • 数据链路层:帧(frame)
  • 物理层:比特(bit)

封装和解封装

封装:将数据变为比特流的过程中,在参考模型的每一层需要添加上特定的协议报头动作。从高层往低层依次封装,在每一层使用特定的协议,对数据进行处理,在数据前添加特定的协议报头。

解封装 :封装的逆过程,数据从比特流还原为数据的过程。从底层往高层依次解封装,每解封装一层,就去除相应的协议头部。

应用层存在封装,只不过,应用层的封装内容取决于不同的应用协议

常见的协议有

  1. HTTP ---超文本传输协议---获取网页信息---80(TCP 80
  2. HTTPS ---HTTP + SSL(安全传输协议)/TLS ---443(TCP 443
  3. FTP ---文件传输协议---TCP 20 21
  4. Tftp ---简单文件传输协议---UDP 69
  5. Telnet ---远程登陆协议---TCP 23
  6. SSH ---Telnet + SSL ---TCP 22
  7. DHCP ---动态主机配置协议---UDP 67 68
  8. DNS ---域名解析协议---TCP/UDP 53

tftpftp有什么区别?

tftp只能文件上传和下载 ftp有认证
 

HTTPS = HTTP + SSL(现在叫TLS)是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性-------TCP443号端口

接下来我们一起来学习一下各层的封装与解封装过程 :

封装过程:

应用层:原始数据被转换成二进制数据

传输层(实现端到端的传输):二进制数据被分割成小的数据段,并封装TCP头部 (数据段)
(TCP头部的关键信息–端口号)

网络层:传输层传来的数据被封装上IP头部 (数据包)
(IP头部的关键信息–IP地址)

数据链路层(控制物理层):网络层传来的数据被封装上MAC头部 (数据帧)
(MAC头部的关键信息–MAC地址)

物理层:二进制数据组成的比特流转化为电信号在网络中传输 (比特流)

解封装过程:

物理层:将电号转化为二进制数据,并将其送至数据链路层


数据链路层:查看MAC地址,地址是自己,就拆掉MAC头部,继续传输;地址不是自己,就丢弃数据


网络层:查看IP地址,IP地址是自己,就拆掉IP头部,继续传输;如果IP地址不是自己,则会路由表查找去往该网段的下一跳地址。如果存在转发路径,会为数据包添加一个新的二层帧头和帧尾部。


传输层:查看TCP头部,判断应该传到哪里,然后重组数据,传输到应用层


应用层:二进制转化为原始数据

封装和解封装图

网络层封装所需 IP协议

TTL (生存时间):数据包每经过一个路由器的转发,其数值减1,当一个数据包的TTL值为0是,路由器将不再转发而直接丢弃。

协议号:上层所适用的协议类型

TCP——6

UDP ——17

IP协议最短是20个字节

IP的分片和TCP的分段:

MTU (最大传输单元 ):默认值1500字节

MSS (最大段长度): 理论值1460字节,这个值需要进行协商,这个参数在TCP的SYN包携带,如果双方不一致,则将按照小的执行。


http://www.kler.cn/a/505616.html

相关文章:

  • SpringBoot+Lombok项目实体属性名xXxx格式,前端接收不到
  • 低代码独特架构带来的编译难点及多线程解决方案
  • Python贪心
  • 16_Redis Lua脚本
  • kotlin的dagger hilt依赖注入
  • Wireshark抓包教程(2024最新版个人笔记)
  • C#中的Span
  • 代码随想录算法训练营第 8 天(字符串1)| 344.反转字符串 541. 反转字符串II 卡码网54.替换数字
  • HTML5 网站模板
  • 2025-1-15-十大经典排序算法 C++与python
  • 网络安全10大漏洞
  • 超燃预告!Origin百图绘制系列即将登场
  • 不同的embedding技术效果评价
  • kafka的listeners和advertised.listeners,配置内外网分流
  • Natural Language-Assisted Multi-modal Medication Recommendation
  • go语言实现UTF8与GB2312内码转换
  • Node.js、Vue 和 React 的关系和区别
  • 一文掌握Docker
  • Ubuntu-Install-Ros2
  • MySQL 排除指定时间内重复记录的解决方案
  • VSCode连接远程docker环境
  • 宝塔面板 申请证书后 仍然提示不安全
  • 神经网络:什么是交叉熵?
  • C++并发编程之异常安全性增强
  • 基于ADMM交替方向乘子法的超大规模储备系统分布式协同优化算法收敛性matlab仿真与分析
  • PostgreSQL 的一些常用命令