传输层构建在网络层之上,传输层提供端口到端口之间的通讯。

传输层通过端口号来标识一个端口,不同于网卡,端口是逻辑上的概念。传输层的端口为16个比特(bit)长度,即最多能表示65 536个端口,端口号范围在0~65535之间。

UDP

UDP的全称是User Datagram Protocol,用户数据报协议。UDP协议在IP协议之上提供了端口到端口之间的通讯。

UDP协议的数据单元我们称为用户数据报(User Datagram),即UDP负责传输的数据被称作用户数据报文。

UDP的实现

UDP协议通过在用户数据的前面添加一段控制信息用来实现端到端之间的数据传输,我们称之为UDP首部。

UDP首部的长度固定为8个字节,其中源端口和目的端口共占用4个字节。

此外UDP还必须解决两个问题:

  • 如何完整地提取用户数据
  • 如何检测收到的数据(包括UDP首部和用户数据)和发送的数据一致

如何完整地提取用户数据==>长度字段

因为UDP的首部的固定的,因此我们只需要在首部中添加一个长度字段来标识这个用户数据报的总长度(首部+用户数据)就可以标识这个用户数据报的结束位置,这样接收方在提取数据的时候就可以将用户的数据正确的提取出来。

UDP协议规定用户数据报的最大长度为65535,通过16个比特位来实现,即长度字段占用2个字节

如何检测收到的数据和发送的数据一致==>校验和字段

由于在传输的过程中可能会造成数据的损坏,造成接收方收到的数据和发送方发送的数据不一致。检测数据一致的方法就是通过摘要算法,对数据报生成一段摘要信息,用来唯一标识这个数据报。

UDP协议在计算校验和时是将整个UDP数据报进行校验,包括UDP首部和用户数据。既然要包括UDP首部,而校验和字段属于UDP首部,因此我们规定在计算校验和之前,校验字段的值为0(即使用全0填充)

校验过程如下:

UDP在计算校验和时将UDP数据报当做由若干16bit长度的分块组成,计算时对这些分块进行二进制反码求和,同时规定UDP的校验字段长度为16个bit。

因此在计算校验和时,如果UDP数据的长度不是16bit的整数倍,为了减少数据的大小,我们不对数据进行填充,而是在计算时进行填充0使其长度为16bit的整数倍。

发送端:

  • 首先使用全0填充校验和字段,构成一个完成的UDP数据报
  • 在计算校验和时,判断UDP数据报的长度是否为16bit的整数倍,如果不是则对UDP数据报进行填充0使其长度为16bit的整数倍
  • 根据二进制反码计算这些16bit字(word)的和:两个数进行二进制反码求和的运算是:从低位到高位逐位进行运算。0和0相加是0,0和1相加是1,1和1相加是0但要产生1个进位1加到下一列.若最高位相加后产生进位,则最后得到的结果要加1)
  • 将计算结果写入校验和字段。

接收端:

  • 将收到的UDP数据报按二进制反码求这些16bit字的和。
  • 如果全为1,则表示接收到的数据与发送的数据一致。否则不一致,将此数据报丢弃。
因为计算机处理起来最快,采用其他方式例如摘要算法则会慢很多

UDP报文格式

源端口(16bit) 目的端口(16bit) UDP数据报长度(首部长度+用户数据长度)(16bit) 校验和(16bit)

传输层-UDP的更多相关文章

  1. OSI模型第四层传输层--UDP协议

    1.udp协议 UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成[2]  ,提供面向事务的简单不可靠信息传送服务.UDP 协议 ...

  2. 计算机网络概述---传输层 UDP和TCP

    传输层的功能 传输层为应用进程间提供端到端的逻辑通信(网络层是提供主机之间的逻辑通信), 传输层两大重要的功能:复用 和 分用. 复用:在发送端,多个应用进程公用一个传输层: 分用:在接收端,传输层会 ...

  3. 计算机网络之传输层UDP协议

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105453096 学习课程:<2019王道考研计算机网络> 学习目的 ...

  4. (传输层)UDP协议

    目录 数据单位特点具体实现要求UDP首部格式发送UDP请求的客户端图释 数据单位 UDP 传送的数据单位协议是 UDP 报文或用户数据报 特点 UDP 是无连接的,即发送数据之前不需要建立连接 UDP ...

  5. 传输层——UDP报文头介绍

    16位源端口 16位目的端口 16位总长度 16位校验和 数据 源端口:长度为16位,2个字节. 目的端口:长度为16位,2个字节. 总长度:长度为16位,2个字节,表示 UDP包头长度 和 数据长度 ...

  6. TCP/IP五层模型-传输层-UDP协议

    ​1.定义:UDP:是非面向连接.不可靠的用户数据包协议. 2.应用场景:适合对数据完整性要求不高,但对延迟很敏感,比如即时通信(语音视频聊天等). 3.UDP报文格式: 4.用UDP传输数据的应用层 ...

  7. [计网笔记] 传输层---UDP

  8. 【计算机网络】-传输层-Internet传输协议-UDP

    [计算机网络]-传输层-UDP 简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagram Protocol) .UDP为应用程序提供了一-种无需 ...

  9. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

随机推荐

  1. Xcode export/upload error: Your session has expired. Please log in-b

    1.Xcode export/upload error: Your session has expired. Please log in 我在stack over flow上找到的答案:  一看pre ...

  2. poj Building a Space Station

    http://poj.org/problem?id=2031 #include<cstdio> #include<cstring> #include<cmath> ...

  3. 游标、获取本地本地多个文件、Excel数据导入、跨服务器数据拷贝、行转列示例

    )='C:\Users\Administrator\Desktop\待处理数据\顺江学校4\' ---------------------------------------------------- ...

  4. LED驅動芯片 兩種恒流控制方式

    下面要說的是,兩種恒流控制模式的開關電源,從而產生兩種做法.這兩種做法無論是原理,還是器件應用,還是性能差別,相當都較大.     首先說原理.第一種以現在恒流型LED專用IC為代表,主要如9910系 ...

  5. 单片机C语言编程规范

    一.基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行. 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序. 1.3 尽量使用标准库函数和公共函数. 1.4 不要 ...

  6. 多线程Two-Phase Termination Pattern两阶段终止模式

    一 Two-Phase Termination Pattern Two-Phase Termination Pattern,指的就是当希望结束一个线程的时候,送出一个终止请求,但是不会马上停止,做一些 ...

  7. redis 源码分析

    参考: http://redisbook.readthedocs.org/en/latest/index.html http://www.databaseskill.com/3421161/ The ...

  8. HDU Train Problem I 1022 栈模拟

    题目大意: 给你一个n 代表有n列 火车,  第一个给你的一个字符串 代表即将进入到轨道上火车的编号顺序, 第二个字符串代表的是 火车出来之后到顺序, 分析一下就知道这,这个问题就是栈, 先进后出吗, ...

  9. Java StringTokenizer分割字符串

    除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串: 不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被 ...

  10. SqlServer新建视图

    一.使用SQL Server 2005数据库管理系统创建视图 1. 启动SQL Server 2005. 2. 在“对象资源管理器”窗口中找到Student数据库,打开Student文件夹,在“视图” ...