传输层-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不建立连接而直接发送,对未送 ...
随机推荐
- STM32f103------按键处理
(1)按键去抖 /******************************************函数名称:Key_Scan(GPIO_TypeDef*GPIOx,u16 GPIO_pin)*描 ...
- N个元素的集合划分成互斥的两个子集的数目
前面这是寒假听马士兵老师讲的时候积累的语录.......... 1.php是水果刀,java是菜刀,刀法比较多,一年的和三年的区别很大. 2.nanicat连接mysql出现10061是服务没开启,却 ...
- web client
http://blog.csdn.net/borishuai/article/details/8676573 http://down.lusongsong.com/soft/696.html http ...
- poj 1066 Treasure Hunt
http://poj.org/problem?id=1066 #include <cstdio> #include <cstring> #include <cmath&g ...
- 《简明python教程》学习笔记,长文
引号: 单引号:如果包含的字符串里有单引号的话,需要在那个单引号里加转义符号,或者使用双引号 例:print 'he"llo' or print 'he\'llo' ===> h ...
- LED驅動芯片 兩種恒流控制方式
下面要說的是,兩種恒流控制模式的開關電源,從而產生兩種做法.這兩種做法無論是原理,還是器件應用,還是性能差別,相當都較大. 首先說原理.第一種以現在恒流型LED專用IC為代表,主要如9910系 ...
- 使用Qt编写模块化插件式应用程序
动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来.比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会 ...
- -_-#【JS】HTML5 API
<JavaScript高级程序设计(第3版)> <!DOCTYPE html> <html> <head> <meta charset=" ...
- mapreduce框架详解【转载】
[本文转载自:http://www.cnblogs.com/sharpxiajun/p/3151395.html] 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoo ...
- CPP之面向对象篇
引述,物体,对象,物体共性,pre-defined-class=标准库函数; string.a("Ruiy") 成员操作符,操作动作