zoukankan      html  css  js  c++  java
  • 运输层2——用户数据报协议UDP

    写在前面:本文章是针对《计算机网络第七版》的学习笔记

    运输层1——运输层协议概述

    运输层2——用户数据报协议UDP

    运输层3——传输控制协议TCP概述

    运输层4——TCP可靠运输的工作原理

    运输层5——TCP报文段的首部格式

    运输层6——TCP可靠传输的实现

    运输层7——TCP的流量控制和拥塞控制

    运输层8——TCP运输连接管理

    用户数据报协议只在IP数据报服务之上增加了很少一点的功能:复用,分用以及差错检测的功能。UDP的主要特点:

    • UDP是无连接的:即发送数据前不需要建立连接,减少了开销和发送数据的时延。

    • UDP使用尽最大努力交付:不保证可靠,因此主机无需维持复杂的连接状态。

    • UDP是面向报文的:发送方的UDP对应用程序交下来的报文添加首部后直接交付给IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

    • UDP没有拥塞控制:因此网络出现拥塞不会影响主机的发送速率,也就是允许丢失数据,但要保证时延。

    • UDP支持一对一,一对多,多对一,多对多的通信。

    • UDP首部开销小:只有8个字节。

    2. UDP首部格式

    UDP用户数据报分为 = 首部字段 (8个字节,4个字段,每个字段2个字节)+ 数字字段。

    首部字段:

    • 源端口: 源端口号。在需要对方回信的时候选用,不需要填0。

    • 目的端口: 目的端口号。必填。

    • 长度: UDP用户数据报的长度。最小为8。

    • 检验和:检测UDP用户数据报传输过程中是否有错。有错就丢弃。

    5d3524ef4841844167

    3. UDP首部检验和计算方法

    在计算检验和时,需要在用户数据报之前加12字节的伪首部。

    所谓伪首部,是指他并不是UDP用户数据报的真正首部,只是在计算检验和的时候,临时加上的,检验和就是按照这个临时的用户数据报计算的。既不下传也不向上提交。伪首部的格式如上图。

    UDP计算检验和与IP数据报类似,只是UDP的首部校验和把首部和数据一起都检验了。步骤如下:

    1. 在发送方,首先先把全零放到检验和字段;

    2. 再把伪首部和UDP用户数据报看成是由许多16位的字串连接起来的;

    3. 然后按二进制反码计算出这些16位字的和,并将此和的反码写入检验和字段后,就发送这样的用户数据报。

    4. 在接收方,把收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16位字的和。

    5. 若无差错时其结果应全为1;否则就是有差错出现,可以选择丢失,可以上传(但是要附上错误信息)。

    5d354dcc35e6338961

  • 相关阅读:
    Java异常处理和设计
    一次qps测试实践
    Alternate Task UVA
    Just Another Problem UVA
    Lattice Point or Not UVA
    Play with Floor and Ceil UVA
    Exploring Pyramids UVALive
    Cheerleaders UVA
    Triangle Counting UVA
    Square Numbers UVA
  • 原文地址:https://www.cnblogs.com/anzhengyu/p/11232699.html
Copyright © 2011-2022 走看看