| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> UDP协议 -> 正文阅读 |
|
[网络协议]UDP协议 |
UDP概述UDP只在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错检验。UDP相对于TCP有以下优点:
UDP通常用于一次性传输较少数据的网络应用。UDP不保证可靠交付,维护可靠性的工作可以由用户在应用层完成。UDP是面向报文的,也就是说不论应用层传给UDP多大的数据报,UDP都只是加个首部就往下传;对于从IP层传过来的数据报也是,只是把首部除去就往上传。 UDP数据报UDP数据报包含两部分:UDP首部和用户数据。UDP首部长度为8B,由4个字段组成,每个字段占2B ? ? 各个字段意义如下:
当传输层从IP层收到UDP数据报的时候,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用程序。 如果接收方UDP发现收到的报文中的目的端口号不正确(也就是说不存在对应于端口号的应用进程),那么就丢弃这个报文,并由ICMP发送"端口不可达报文"给发送方 UDP校验这里说的校验指的是UDP数据报首部的校验和字段的计算方式。 在我们计算校验和的时候,需要在UDP数据报之前增加一个12B的伪首部,伪首部不是UDP真正的首部,只是在计算校验和的时候临时增加的一个用于计算的字段。伪首部既不向下传送又不向上递交,只是在传输层用于计算。 ? 如图所示,伪首部由5个字段组成:
UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,但是IP数据报的校验和只校验IP数据报的首部,而UDP的校验和会校验首部和数据部分。 发送方首先把全0放入校验和字段并添加伪首部,然后把UDP数据报视为许多个16位的自负穿接起来。如果UDP数据报的数据部分不是偶数个字节,那么就在数据部分末尾填入全0字节(这个字节不发送)。然后按照二进制反码计算出这16位字的和,将此和的二进制的反码写入校验和字段,然后发送出去。 接收方接收到这个UDP数据报后,将UDP数据报加上伪首部(如果不是偶数个字节,那么还需要补上全0字节)后,按照二进制反码进行求和,。当无差错时其结果应全为1,否则就表明出错了,接收方应该丢弃这个UDP数据报。 ????????????????????????????????发送方的计算过程如图所示↑ ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:35:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |