传输层协议UDP

目录

[一. 传输层](#一. 传输层)

[1. 端口号](#1. 端口号)

端口号划分

一个进程是否可以bind多个端口号

[2. 查询命令](#2. 查询命令)

[二. UDP协议](#二. UDP协议)

[1. UDP协议端格式](#1. UDP协议端格式)

UDP如何将报头与有效载荷分离

UDP数据封装

[2. UDP特点](#2. UDP特点)

[3. 面向数据报](#3. 面向数据报)

[4. UDP缓冲区](#4. UDP缓冲区)

[5. UDP常用处](#5. UDP常用处)


一. 传输层

1. 端口号

在我们的电脑中运行着许多的程序,计算机会为每一个程序配备一个端口号。主机从网络中接收到数据时,会先自下而上的进行传输传输层处理数据时通过识别端口号来判断数据是传送给哪个程序的。

传输的五大元素由,源端口,源IP,目的端口,目的IP,协议号组成。源IP目的IP确定了需要传输的两台主机,源端口目的端口确定了哪两个程序之间的数据传递,协议号决定了传输协议是采用UDP还是TCP处理数据。

端口号划分

端口号长度是16位,因此端口号的范围就是 0~2^16

0 - 1023:知名端口号,HTTP,FTP等这些广为使用的应用层协议,它们的端口号是固定的。

ssh服务器,22端口

ftp服务器,21端口

telnet服务器,23端口

http服务器,80端口

https服务器,443端口

1024 - 65535:操作系统动态分配的端口号,客户端程序的端口号


一个进程是否可以bind多个端口号

一个进程往往包含许多的功能,需要进行多份协议的传输,因此一个进程可以bind多个端口号。一个进程可以打开多个文件描述符,每个文件描述符都对应一个端口号。

2. 查询命令

cat /etc/services

可以查看文件知名端口号

我们使用端口号时要避开这些端口号

netstat

查看网络状态

n:拒绝显示别名,能显示数字的全部转化成数字

l:仅列出有在listen的服务状态

t:仅显示tcp选项

u:仅显示udp相关选项

a:显示所有选项

p:显示建立连接的相关程序名

pidof

查看服务器进程id

语法:pidof 进程名

二. UDP协议

1. UDP协议端格式

UDP协议是传输层协议,系统通过网络套接字将应用层和传输层进行连接,socket规定传输层传输格式,随后进行bind绑定端口和IP

我们先前学习了应用层,应用层主要是处理实际的数据进行打包,完成打包之后到了传输层会制定相应的传输形式,此处我们介绍面向数据报的UDP协议。

16位源端口号:确定了数据发送的起始端口

16位目的端口号:确定了数据发送的终点端口

16位UDP长度:定义了整个UDP数据报的长度(首部+数据)

16为UDP检验和:判断传输过程中是否发生错误


UDP如何将报头与有效载荷分离

UDP报头固定8字节,在每次读取的时候读取8字节即可,剩下的就是有效载荷,这样就完成了报头与有效载荷分离


UDP数据封装

传输层在接受到应用层的数据后(应用层数据),对应用层数据添加报头进行封装(8字节报头),最终形成数据报(报头+应用层数据)

2. UDP特点

无连接:不需要建立连接,只需要知道目的端口和IP就可以传输

不可靠:没有确认机制,不会进行握手操作,若数据丢失,也没有重传机制

面向数据报:发送只能以一份一份数据报进行发送,接收只能一份一份数据报进行接收,且有最大受限大小。

3. 面向数据报

面向数据报形式不可拆分合并数据。发送方一次性sendto 100个字节的数据,那么接收放也需要一次性接收100 字节的数据

4. UDP缓冲区

UDP没有发送缓冲区,只有接收缓冲区。缓冲区接收发送方数据,不能保证接收的顺序和发送的顺序一致,若缓冲区满了会自动丢弃数据。因此通常会给数据添加编号,进行编号排序,接收到数据后重新编排。

5. UDP常用处

UDP是一种数据量小,数据传输快,传输成本低的协议。通常使用在直播,游戏数据实时传输这类可以允许少量数据损失,对速度要求快的场景

相关推荐
怀旧,几秒前
【Linux系统编程】7. 进程的概念(上)
linux·运维·服务器
7***n7524 分钟前
API网关设计模式
linux·服务器·设计模式
时代新威powertime1 小时前
等保三级|安全通信网络自评估指南
网络·安全·等保测评
国服第二切图仔1 小时前
检测隧道HTTP代理的可用性的几种方法
网络·网络协议·http
哈里谢顿1 小时前
环境变量 HTTP_PROXY/HTTPS_PROXY 深度解析:为什么 cURL 行,Docker 不行?
linux
托尼吴1 小时前
REST RPC dubbo,HSF 协议总结
网络协议·rpc·dubbo
馨谙1 小时前
使用 systemd 用户服务管理容器:从概念到实践
linux·容器
JH30731 小时前
引依赖包和对这个包发起rpc调用有什么区别
网络·网络协议·rpc
人工智能训练2 小时前
Windows中如何将Docker安装在E盘并将Docker的镜像和容器存储在E盘的安装目录下
linux·运维·前端·人工智能·windows·docker·容器
zzzsde2 小时前
【Linux】基础开发工具(1):软件包管理器&&vim编辑器
linux·运维·服务器