IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP/IP协议 阅读小结(二) -> 正文阅读

[网络协议]TCP/IP协议 阅读小结(二)

UDP 数据报

:进程的每个输出操作都正好对应一个UDP数据报,并组装成一个待发送的IP数据报
不管应用层给UDP多大的数据,不嫌你大,总是会在数据前面封装UDP的头部,然后交给IP,再加上一个IP头部

~~所以,就用到IP分片的内容。换句话说,UDP是制造IP分片的主要协议

TCP 字节流
:应用层交给TCP的数据,TCP会选择适当的大小,会有一个最大传输单元MSS,如果TCP觉得数据小了,会把好几个数据组装成为大的数据,加上TCP头部发走,如果大了,分片发走

换句话说,应用层传输下来的数据跟实际传输的IP数据包,是没有本质联系的,没有边界,像流水一样,所以叫做数据流

UDP三大运用

  • 查询类:DNS
    • UDP快,同时向首要次要服务器或者多个服务器发送请求,只要有谁回应就可以。假设TCP,先找首要,没反应,握手不成功,还要接着重传
    • 多个DNS同时查询
  • 语音视频流
    • 不用重传,丢了就丢了,还是能够听明白的
    • 支持广播和组播,TCP肯定是不支持的

首部

在这里插入图片描述
端口号表示发送进程和接收进程。由于IP层已经把IP数据报分配给TCP或UDP(根据IP首部中协议字段值),因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是相互独立的。

UDP长度字段指的是UDP首部和UDP数据的字节长度

UDP检验和覆盖UDP首部和UDP数据。
UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。
尽管UDP检验和是可选的,但是它们应该总是在用。

IP分片

  • IP把MTU与数据报长度进行比较分
  • 如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
  • 把一份I P数据报分片以后,只有到达目的地才进行重新组装。( FR fragment )
  • 重新组装由目的端的I P层来完成,其目的是使分片和重新组装过程对运输层(TCP和U DP)是透明的。
  • 已经分片过的数据报有可能会再次进行分片(可能不止一次)。
    在这里插入图片描述

标识,代表来自同一个IP数据报
标志,
在这里插入图片描述
CU,无用
DF,delete 不分片,置1,包大于MTU,丢弃,通过ICMP告诉源自己的MTU
MF,more ,是否是最后一片分片

片偏移
通过这些信息就能重新组成一个完整的IP包

  • 当I P数据报被分片后,每一片都成为一个分组,具有自己的 P首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在I P首部中有足够的信息让接收端能正确组装这些数据报片。
  • 尽管I P分片过程看起来是透明的,但有一点让人不想使用它∶即使只丢失一片数据也要重传整个数据报。
  • 如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端系统就无法知道数据报是如何被分片的。就这个原因,经常要避免分片。

解释:
TCP不理解IP分片的过程,因为整个过程是透明的,TCP要的是完整的包。IP缺一片包都不是完整的
分片会降低网络效率,一片丢掉之后,全部都要重新发。
发起方不知道哪一片丢了,可能是中间路由器丢包,所以没有办法告诉发起方哪一片丢了,所以要尽量避免,调整MTU适当大小

  • 在分片时,除最后一片外,其他每一片中的数据部分(除IP首部外的其余部分)必须是8字节的整数倍
  • IP首部被复制到各个片中。但是,端口号在UDP首部,只能在第1片中被发现
  • 需要解释几个术语:IP数据报是指IP层端到端的传输单元(在分片之前和重新组装之后),分组是指在I P层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是I Р数据报的一个分片。

传输1000大小的IP数据包:
第一个包存着端口号,识别出了ICMP,
后面几个包全是剩下的数据
最后一片不够46字节,补齐
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

下一跳的MTU大小是500

广播和组播

在这里插入图片描述
首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧
在这里插入图片描述设备驱动程序将进行另外的帧过滤。首先,帧类型中必须指定要使用的协议(IP、ARP等等)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。
在这里插入图片描述
设备驱动程序随后将数据帧传送给下一层,比如,当帧类型指定为IP数据报时,就传往IP层。IP根据IP地址中的源地址和目的地址进行更多的过滤检测。
在这里插入图片描述每次UDP收到由IP传送来的数据报,就根据目的端口号,有时还有源端口号进行数据报过滤。
如果网内有50个主机,但仅有20个参与该应用,每次这20个主机中的一个发送UDP广播数据时,其余30个主机不得不处理这些广播数据报。一直到UDP层,收到的UDP广播数据报才会被丢弃。这30个主机丢弃UDP广播数据报是因为这些主机没有使用这个目的端口。
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:53:51  更:2021-08-08 11:54:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 8:33:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码