传输层-UDP
传输层构建在网络层之上,传输层提供端口到端口之间的通讯。
传输层通过端口号来标识一个端口,不同于网卡,端口是逻辑上的概念。传输层的端口为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的更多相关文章
- OSI模型第四层传输层--UDP协议
1.udp协议 UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成[2] ,提供面向事务的简单不可靠信息传送服务.UDP 协议 ...
- 计算机网络概述---传输层 UDP和TCP
传输层的功能 传输层为应用进程间提供端到端的逻辑通信(网络层是提供主机之间的逻辑通信), 传输层两大重要的功能:复用 和 分用. 复用:在发送端,多个应用进程公用一个传输层: 分用:在接收端,传输层会 ...
- 计算机网络之传输层UDP协议
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105453096 学习课程:<2019王道考研计算机网络> 学习目的 ...
- (传输层)UDP协议
目录 数据单位特点具体实现要求UDP首部格式发送UDP请求的客户端图释 数据单位 UDP 传送的数据单位协议是 UDP 报文或用户数据报 特点 UDP 是无连接的,即发送数据之前不需要建立连接 UDP ...
- 传输层——UDP报文头介绍
16位源端口 16位目的端口 16位总长度 16位校验和 数据 源端口:长度为16位,2个字节. 目的端口:长度为16位,2个字节. 总长度:长度为16位,2个字节,表示 UDP包头长度 和 数据长度 ...
- TCP/IP五层模型-传输层-UDP协议
1.定义:UDP:是非面向连接.不可靠的用户数据包协议. 2.应用场景:适合对数据完整性要求不高,但对延迟很敏感,比如即时通信(语音视频聊天等). 3.UDP报文格式: 4.用UDP传输数据的应用层 ...
- [计网笔记] 传输层---UDP
- 【计算机网络】-传输层-Internet传输协议-UDP
[计算机网络]-传输层-UDP 简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagram Protocol) .UDP为应用程序提供了一-种无需 ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
随机推荐
- The working copy xxxx needs to be upgraded to Subversion 1.7.
原因是我在svn是低版本时候checkout的项目 而对方用的版本比我高 然后 我运行这个项目 就要求我 更新 如果我选择 对项目进行upgrade. 当 upgrade后 我的项目就在 现有 ...
- DC DC降壓變換器ic 工作原理
目前DC/DC轉化器大致可分為:升壓型dc dc變化器.降壓型dc dc變化器及可升壓又可降壓dc dc變換器.我們今天主要提一下降壓型dc dc變換器的原理: 見下圖降壓變換器原理圖如圖1所示, 當 ...
- Struts2 文件的上传与下载
1. Struts2的文件上传需要Apache的commons-io-Version.jar和commons-fileupload-Version.jar两个jar包.2. 页面中的<s:fil ...
- js中undefined,null,NaN的区别
1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型.var a1;var a2 = true;va ...
- 飘窗代码修改了一段js
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JAVA中的Transient
Java中的transient,是用于声明序列化的时候不被存储的. 例子: package ThreadTest; /** * Created with IntelliJ IDEA. * User: ...
- <转>libjpeg解码内存中的jpeg数据
转自http://my.unix-center.net/~Simon_fu/?p=565 熟悉libjpeg的朋友都知道libjpeg是一个开源的库.Linux和Android都是用libjpeg来 ...
- python队列join
如果要让一个任务队列按照顺序进行,则必须使用join,代码如下: ''' Created on Dec 23, 2013 @author: long ''' import threading from ...
- HDU_1401——分步双向BFS,八进制乘权值压缩,map存放hash
Problem Description Solitaire is a game played on a chessboard 8x8. The rows and columns of the ches ...
- spring配置文件中id与name
1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的. 2.name属性则没有这些限定,你可以使用几乎任何的名称 3.配置文件中不允许出现两个id相同的<bean> ...