zoukankan      html  css  js  c++  java
  • UDP:用户数据报协议

    UDP不提供可靠性:它把应用程序传给 IP层的数据发送出去,但是并不保证它们能到达目的地。
    应用程序必须关心 IP数据报的长度。如果它超过网络的 MTU,那么就要对 IP数据报进行分片。
    如果需要,源端到目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。
     
    UDP首部
     
    UDP校验和( 二进制反码计算和)
    • UDP检验和覆盖UDP首部和UDP数据。
      • IP首部的检验和,它只覆盖 IP的首部—并不覆盖IP数据报中的任何数据
    • UDP和TCP在首部中都有覆盖它们首部和数据的检验和。
    • UDP的检验和是可选的,而TCP的检验和是必需的。
     
     
    IP分片

     
    • IP把MTU与数据报长度进行比较,如果需要则进行分片。
    • 分片可以发生在原始发送端主机上,也可以发生在中间路由器上
    • 把一份 IP数据报分片以后,只有到达目的地才进行重新组装
    • 重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的。
     
    IP标志位中有,"不分片"位,如果将该位置1,IP将不对数据报进行分片。
    相反把数据报丢弃并发送一个ICMP差错报文(需要分片但设置了不分片位)
     
    • 当IP数据报被分片后,每一片都成为一个分组,具有自己的 IP首部,并在选择路由时与其他分组独立
    • 这样,当数据报的这些片到达目的端时有可能会失序
    • 但是在IP首部中足够的信息让接收端能正确组装这些数据报片。
     
     
    问题:
    • 一片分页丢失时,重转整个数据报
      • IP层本身没有重传机制
      • 超时重传时,上层并不知道丢失的哪个一片分页
        • 因为分页是在IP做的,并且是在中继路由器中做分页,
        • 因此IP层 也不知道要重传那些片。
      • 因此上层会将整个数据包重传过来。
     
    注:
    任何传输层首部只出现在第1片数据中
     
     
      • ICMP不可达差错(需要分片)
        • 当路由器收到一份需要分片的数据报,而在 IP首部又设置了不分片( DF)的标志比特。
        • 如果某个程序需要判断到达目的端的路途中最小MTU
          是多少—称作路径MTU发现机制,那么这个差错就可以被该程序使用。
      • UDP和ARP之间的接口,大多数的ARP实现在等待ARP应答时只保留最近传送给目的端的数据报
      • ICMP源站抑制差错报文
        • 当系统接收IP数据报的速率超过这些数据报被处理的速率时
  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/Aiapple/p/7284307.html
Copyright © 2011-2022 走看看