运输层协议——UDP
UDP概述:
UDP只是做了运输层协议能做的最少工作,仅做了复用/分解,少量的差错检验。
UDP是无连接的。
UDP优点:
- 关于何时、发送什么数据的应用层控制更为精细:TCP在拥堵时会遏制发送方的发送;在发送失败时会持续发送直至成功
- 无需建立连接:不会有建立连接的延迟
- 无连接状态:需要在端系统中维护必要的参数
- 分组头部开销小:8字节,而TCP需要20字节
UDP报文结构:
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| | |
| Length | Checksum |
+--------+--------+--------+--------+
|
| data octets ...
+---------------- ... User Datagram Header Format
首部(前两行):由四个字段组成,每个字段两个字节
- 源端口号:是可选的字段。当可用时用来指示发送方的端口号,或者再没有其他信息的情况下指向应答端口。当不使用时值为0
- 目的端口号:目的端口号
- 长度:UDP报文段中的字节数(首部加数据)
- 检验和:用于检测报文段中是否出现了差错
- Source Port is an optional field, when meaningful, it indicates the port of the sending process, and may be assumed to be the port to which a reply should be addressed in the absence of any other information. If not used, a value of zero is inserted.
- Destination Port has a meaning within the context of a particularinternet destination address.
- Length is the length in octets of this user datagram including thisheader and the data. (This means the minimum value of the length iseight.)
- Checksum is the 16-bit one's complement of the one's complement sum of apseudo header of information from the IP header, the UDP header, and thedata, padded with zero octets at the end (if necessary) to make amultiple of two octets.
伪首部(pseudo header):
伪首部并非UDP数据报中实际的有效成分,而是一个虚拟的数据结构,其中的信息是从数据报所在IP分组头的分组头中提取的,既不向下传送也不向上递交,而仅仅是为计算检验和。
伪头结构:
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| source address |
+--------+--------+--------+--------+
| destination address |
+--------+--------+--------+--------+
| zero |protocol| UDP length |
+--------+--------+--------+--------+
UDP检验和:
发送方将UDP报文(首部加数据)和伪头的16位比特字的和按位取反作为检验和放到检验和字段中。
求和过程中所有的溢出都要回卷。
接收方将接收到的报文和伪头(包含检验和)重新计算检验和,如果得到的结果为"FFFF"则说明没有出错。之所以是FFFF,是因为接收方的计算加上了发送方计算的检验和的按位反。
UDP仅提供差错检验,并没有恢复功能。但是可以在应用层进行人为添加。
参考来源:
https://datatracker.ietf.org/doc/rfc768/?include_text=1
《计算机网络:自顶向下方法》
运输层协议——UDP的更多相关文章
- 运输层协议----UDP
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import j ...
- 计算机网络基础笔记 运输层协议UDP/TCP
目录 UDP 首部结构 主要特点 TCP 首部结构 主要特点 TCP 可靠性实现 停止等待ARQ协议 连续ARQ协议&滑动窗口协议 拥塞控制 TCP 运输连接管理 连接建立:三次握手 连接释放 ...
- 运输层协议--TCP及UDP协议
TCP及UDP协议 按照网络的五层分级结构来看,TCP及UDP位于运输层,故TCP及UDP是运输层协议.TCP协议--传输控制协议UDP协议--用户数据报协议 多路复用及多路分解 图多路复用及多路分解 ...
- 运输层2——用户数据报协议UDP
目录 1. UDP概述 2. UDP首部格式 3. UDP首部检验和计算方法 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户数据报协议U ...
- 运输层协议TCP和UDP
运输层协议TCP和UDP 一.用户数据报协议 UDP 1.1.UDP 概述 UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能. 虽然 UDP 用户数据报只能提供不 ...
- 运输层协议:TCP和UDP
运输层简介 运输层的通信实体不再是主机,而是主机中的进程.运输层的通信是一台主机的进程和另一台主机的进程进行数据交换. 运输层作用 运输层向上层的应用层提供通信服务 运输层为进程提供端到端的通信 运输 ...
- TCP/IP协议---UDP协议
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都产生一个UDP数据报,并组装成一份待发送的IP数据报.UDP数据报是要依赖IP数据报传送的.UDP协议并不可靠,它不能保证发出去的包会被目 ...
- Android程序员必知必会的网络通信传输层协议——UDP和TCP
1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...
- java 网络通信传输层协议——UDP和TCP
本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...
随机推荐
- USACO 1.2 Palindromic Squares (进制转换,回文)
/* ID:twd30651 PROG:palsquare LANG:C++ */ #include<iostream> #include<fstream> #include& ...
- 关于ListView的一些不常用到的属性
1.setCacheColorHint自定义listview的时候,当你不使用Android:cacheColorHint=“#00000000”会出现下面选中一个空间黑色底色的情况,破坏整体美观度 ...
- 976 C. Nested Segments
You are given a sequence a1, a2, ..., an of one-dimensional segments numbered 1 through n. Your task ...
- WLAN RTT (IEEE 802.11mc)
WLAN RTT (IEEE 802.11mc) Android 9 中的 WLAN 往返时间 (RTT) 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 WLAN 感知对等设 ...
- Embedding Flash Fullscreen in the Browser Window
For Developers > Design Documents > Embedding Flash Fullscreen in the Browser Window Auth ...
- 2017国家集训队作业[agc016b]Color Hats
2017国家集训队作业[agc016b]Color Hats 题意: 有\(N\)个人,每个人有一顶帽子.帽子有不同的颜色.现在,每个人都告诉你,他看到的所有其它人的帽子共有多少种颜色,问有没有符合所 ...
- Ubuntu命令行快捷启动Pycharm
我pycharm安装目录为/home/dell/pycharm-community-2018.1.2/bin.那么安装完成之后系统不会给pycharm添加系统路径,只有把终端切换到安装目录/home/ ...
- CMDB学习之六 --客户端请求测试,服务端api优化
客户端使用agent 请求测试,agent使用的POST 请求,使用requests模块 本地采集,汇报服务端 #!/usr/bin/env python # -*- coding:utf-8 -*- ...
- Win10+CUDA9.0+cuDNN7.2 下载 安装 配置
官方提示Note: CUDA must be installed only after that MSVS2015 had been installed.安装CUDA前须安装VS2015 cuDNN与 ...
- [Code+#4]最短路 (最短路)
[Code+#4]最短路 题目背景 在北纬 91° ,有一个神奇的国度,叫做企鹅国.这里的企鹅也有自己发达的文明,称为企鹅文明.因为企鹅只有黑白两种颜色,所以他们的数学也是以二进制为基础发展的. 比如 ...