传输层-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不建立连接而直接发送,对未送 ...
随机推荐
- map 和 reduce
注意:reduce需要 from functools import reduce map的使用: >>> def func(x): ... return x*x ... >&g ...
- python3.4.2 安装Pillow
Python 3.x 安装Pillow给Python安装Pillow非常简单,使用pip或easy_install只要一行代码即可.在命令行使用PIP安装: pip install Pillow或在命 ...
- Mifare 1卡的存储结构
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有“读”.“写”.“加值”.“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种. S50 ...
- ExtJs5_使用图标字体来美化按钮
sencha 的例子中,有使用图标字体来美化按钮的例子,这个用起来又方便风格又统一,例如下图: 上面图标字体的使用方法也很简单,只要下载Font Awesome的css和图标文件,放到项目里就可以了. ...
- 转:windows xp下如何安装SQL server2000企业版
SQL2000企业版本 适用于WIN 2000 Server系统和Windows 2003系统,Windows XP一般装不了需要选用个人版或开发板.但是企业版也可以安装在xp系统下.这里介绍一个XP ...
- 转:FIFO的定义与作用
一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令. 1.什么是FIFO? FIFO是英文Firs ...
- COS访谈第十八期:陈天奇
COS访谈第十八期:陈天奇 [COS编辑部按] 受访者:陈天奇 采访者:何通 编辑:王小宁 简介:陈天奇,华盛顿大学计算机系博士生,研究方向为大规模机器学习.他曾获得KDD CUP 20 ...
- angular-utils-pagination 使用案例
angular-utils-pagination是基于angular,bootstrap,jquery的一个分页插件,详细介绍以及使用方法参照: Git:https://github.com/mich ...
- redis 扩展安装使用
Redis的php客户端库非常之多, Redis推荐客户端链接是:http://redis.io/clients 推荐用phpredis,下载地址:https://github.com/nicolas ...
- library cache lock
SESSION 34 执行存储过程: SESSION 43 编译存储过程: SESSION 25 删除存储过程: 1.查询查看library cache lock等待事件的相关会话 SQL> s ...