计算机网络-运输层

UDP

介绍

  1. UDP是一个简单地面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据包
  2. 这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系
  3. UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地、
  4. 应用程序必须关心IP数据报的长度。如果它超过网络的MTU,那么就要对IP数据报进行分片
    在这里插入图片描述
UDP和TCP特点区别

UDP每个包只执行一个任务
TCP可能把一些小的包封装成一个包发送

UDP三大典型运用
  1. 查询类DNS
    • 没有TCP三次握手过程,快
    • 多个DNS同时查询
  2. 数据传输:TFTP
    • 停止等待协议,慢(需要运用层确认数据)
    • 适合于无盘工作站
  3. 语音视频流
    • 支持广播和组播
    • 支持丢包,保障效率

UDP首部

在这里插入图片描述

  1. 端口号表示发送进程和接收进程
  2. TCP端口号和UDP端口号是相互独立的(rsh和syslog = 514)
  3. 尽管相互独立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是协议本身的要求
  4. UDP长度字段指的是UDP首部和UDP数据的字节长度,该字段最小为8字节
UDP校验和
  1. 校验和用于检验是否丢包、运输过程中是否被修改
  2. UDP检验和覆盖UDP首部和UDP数据
  3. UDP的检验和是可选的,TCP校验和是必须的
  4. IP计算检验和和UDP计算检验和之间存在不同之处:
    • UDP数据报的长度可以为奇数字节
    • 检验和算法是吧若干个16bit字相加
    • 解决方法是在必要时在最后增加填充字节0。这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)
  5. UDP数据报和TCP段都包含一个12字节长的伪首部,他是为了计算检验和而设置的。伪首部包含IP首部和一些字段,其目的是让UDO两次检查数据是否已经正确到达目的地(伪首部并不存在,只是计算时加入)
    在这里插入图片描述
  6. 校验和并不完全正确,如发出去的跟回应的,源IP地址和目的IP地址交换了顺序,但由于校验和算法,每16位相加,所以校验和结果是一样的
  7. 哈希校验改变顺序结果就会变

最大UDP数据报长度

  1. 发送IP数据报的最大长度是65535字节
  2. 第一个限制:应用程序可能会受到其程序接口的限制,socket API提供了一个可提供应用程序调用的函数,以设置接收和发送缓存的长度
  3. 第二个限制:TCP/IP的内核实现

数据报拦截

UDP接口允许应用程序指定每次返回的最大字节数。如果超过,会数据报拦截

ICMP源站抑制

  1. 路由器快进慢出时会导致缓存满,此时再进包就会导致益处丢包
  2. 丢包时会发送ICMP,示意下降速度
  3. UDP可能会收不到,因为UDP发完包进程就结束,所以收到源站抑制ICMP也没用
  4. TCP一般会用,因为TCP丢包必须重发
  5. 如果是到达目的地(如目的路由器),但目的地缓存满丢包,则不会发送ICMP,因为已经到了目的地

IP分片

基本介绍

  1. IP把MTU与数据报长度(IP头部+IP数据)进行比较(在出接口)
  2. 如果需要则进行分片。分片可以发生在原始发送端主机上**,也可以发生在中间路由器上**
  3. 把一份IP数据报分片以后,只有到达目的地才进行重新组装
  4. 重新组装有目的端的IP层来完成,其目的是使分片和中心组装过程对运输层(TCP和UDP)是透明的(TCP只发送和收到完整数据报,不关心是否被分片过)
  5. 已经分片过的数据报有可能会再次进行分片

分片相关字段图解+介绍

IP首第二行:
在这里插入图片描述

  1. 16位标识:对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片是被复制到每个片中
  2. CU :暂时没用,为0
  3. DF: 1是不接受分片,0是接受
    1. 如果超出MTU,则直接丢包并发送ICMP差错报文给起始端
    2. 其中,第7,8个字节存储了路径mtu
  4. MF:
    • 1:后面还有分片
    • 0: 后面没有分片
  5. 13位偏移: 偏移量,用来确定分片位置
  6. 即使丢失一篇数据也要重传整个数据报
  7. IP层本身没有超时重传的机制—由更高层来负责超时和重传(TCP有超时和重传机制,但UDP没有。一些UDP应用程序本身也执行超时和重传)。
  8. 如果数据报分片的是中间路由器,而不是起始端系统,那么起始段系统就无法知道数据报是如何被分片的,就这个原因,经常要避免分片。

分片

  1. IP数据报 = IP首部(20)+数据(如UDP首部+UDP数据)

  2. IP数据报长度<MTU(一般数据报不超过1500字节)


  3. 在这里插入图片描述

  4. 在分片时,除了最后一片外,其他每一片的数据部分(除IP首部意外)必须是8字节的整数,同时总长度(IP首部+数据)小于MTU

  5. 最后一片总长度应该大于46(IP数据报规定46~1500),即如果数据部分不满26字节,需垫片(补0)

  6. IP首部每个分片都有,但是UDP首部在数据中心,因此只在第一个分片中被发现,即端口号也只能在第一个分片中

  7. IP数据报是指IP层端到端的传输单元(在分片值钱和重新组装之后),分组是在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片

广播与多播

简介

  1. 三种IP地址:单播地址、广播地址和多播地址
  2. 广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要(UDP三种都行)
  3. TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接(TCP仅单播)
  4. 有时一个主机要像网上的所有其他主机发送帧,这就是广播。通过ARP和RARP可以看到这一过程
  5. 多播处于单播和广播之间:帧仅传送给属于多播组的多个主机

广播、多播

  1. 广播传送到UDP层,检测端口号,判断本机该端口号没有监听时丢掉
  2. 多播在设备驱动程序(链路层)时就会判断,如果没有上层信息或者不属于某个多播地址,即丢弃(多播省资源)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值