UDP协议详解

2023-11-08 1097阅读

一开始有很多种连接层协议。在网络层,我们只剩下一种IP协议。进入传输层,协议类型又开始增加。传输层最重要的协议是TCP协议和UDP协议。UDP传输与IP传输非常相似。UDP协议也是以数据报的形式进行传输的,其传输方式也是“Best Effort”,所以UDP协议也是不可靠的。UDP协议实现了端口,这样数据包除了IP地址之外还可以发送到某个端口。但很快,网络开发人员发现IP协议的功能和TCP协议的功能是相互独立的。UDP协议随后被发展为IP协议在传输层的“傀儡”。由于UDP协议本身极其简单,它实际上只是作为IP传输的桥梁。我们会在TCP协议的讲解中看到更多TCP协议和UDP协议的比较。

UDP协议详解

我们已经介绍了物理层、连接层和网络层。 一开始有很多种连接层协议(以太网、Wifi、ARP等)。 在网络层,我们只剩下一种IP协议(IPv4和IPv6是替代品)。 进入传输层,协议类型又开始增加(如TCP、UDP、SCTP等)。 这就像下面的一棵大树。 树根(连接层)分出很多分支,然后统一为一根主干(网络层)。 当它们到达树冠(传播层)时,它们再次开始分枝,每个分枝上都会长出更多的分枝。 叶子(应用层)。 我们在网络层看到,通过树干的统一,我们实现了全球性的互联网(Internet)。 然而,我们可能会以不同的方式将这个“网”用于不同的目的。 不同的传输层协议(以及更多的应用层协议)反映了我们使用“网络”的不同方式。

运用udp协议的应用是_各应用协议在层次中的位置_应用协议是什么

网络分层的“艺术”视角

传输层最重要的协议是TCP协议和UDP协议。 这两种利用“网”的方式都走向了两个极端。 两种协议之间的比较非常有趣。 TCP协议虽然复杂,但传输可靠。 UDP协议虽然简单,但传输不可靠。 所有其他传输层协议在某种程度上都是这两个协议之间的折衷。 我们先来看UDP协议,一个比较简单的传输层协议。 我们会参考之前很多文章的内容(协议森林01、03、05)。

UDP协议简介

UDP(用户数据报协议)传输与IP传输非常相似。 您可以将UDP协议视为IP协议在传输层暴露的接口。 UDP协议也是以数据报的形式进行传输的,其传输方式也是“Best Effort”,所以UDP协议也是不可靠的。 那么,我们为什么不直接使用IP协议,另外添加一个UDP协议呢? 一个重要原因是IP协议中没有端口的概念。 IP协议执行IP地址到IP地址的传输,这意味着两台计算机之间的对话。 然而,每台计算机需要有多个通信通道,并将多个通信通道分配给不同的进程(进程请参考Linux进程基础知识)。 端口代表这样的通信通道。 就像我们在Post Office和Postman中提到的收件人的概念一样。 UDP协议实现了端口,这样数据包除了IP地址之外还可以发送到某个端口。

各应用协议在层次中的位置_应用协议是什么_运用udp协议的应用是

UDP:仍然不是那么“可靠”

UDP协议虽然很简单,但它的发展比更复杂的TCP协议要晚。 早期的网络开发者开发了IP协议和TCP协议,分别位于网络层和传输层。 所有通信必须首先由TCP封装,然后由IP封装(应用层->TCP->IP)。 开发人员将 TCP/IP 视为一个协作套件。 但很快,网络开发人员发现IP协议的功能和TCP协议的功能是相互独立的。 对于一些简单的通信,我们只需要“Best Effort”的IP传输,而不需要TCP协议复杂的连接建立方法(特别是在早期的网络环境中,如果建立太多的TCP连接,将会造成很大的网络负担,并且UDP协议可以相对快速地处理这些简单的通信)。 UDP协议随后被发展为IP协议在传输层的“傀儡”。 这样网络通信就可以通过应用层->UDP->IP的封装方式绕过TCP协议。 由于UDP协议本身极其简单,它实际上只是作为IP传输的桥梁。 我们会在TCP协议的讲解中看到更多TCP协议和UDP协议的比较。

UDP协议详解

各应用协议在层次中的位置_应用协议是什么_运用udp协议的应用是

IP及其傀儡UDP

UDP数据包也分为两部分:报头和数据(有效负载)。 UDP是传输层协议,也就是说UDP数据包需要经过IP协议封装,然后通过IP协议传输到目的计算机。 然后UDP数据包在目的计算机上被解包,并将信息发送到相应端口的缓存中。

UDP协议头

运用udp协议的应用是_应用协议是什么_各应用协议在层次中的位置

来自维基百科

上面的源端口和目的端口分别是UDP数据包的出发端口和目的端口。 长度是整个UDP数据包的长度。

校验和算法与IP协议的报头校验和算法类似。 然而,UDP校验和验证的序列包括整个UDP数据包,以及封装的IP头中的一些信息(主要是源IP和目的IP)。 这样,checksum就可以验证IP:port的正确性。 在IPv4中,校验和可以为0,这意味着不使用校验和。 IPv6 需要校验和验证。

端口和插座

UDP协议详解

端口是一个与传输层一起诞生的概念。 它可以将网络层的IP通信分发到各种通信通道。 尽管 UDP 和 TCP 协议的工作方式非常不同,但它们都建立从一个端口到另一个端口的通信。

IP:端口

各应用协议在层次中的位置_应用协议是什么_运用udp协议的应用是

当我们进入传输层时,我们还可以调用操作系统中的API来构建套接字。 Socket是操作系统提供的一种编程接口,用来表示某种网络通信。 应用程序使用套接字来调用系统内核中处理网络协议的模块,这些内核模块负责具体网络协议的实现。 这样我们就可以让内核接收到网络协议的详细信息,而我们只需要提供需要传输的内容即可。 内核会帮助我们控制格式,并进一步封装到底层。 因此,在实际应用中,我们不需要知道如何形成UDP数据包,而只需要提供相关信息(比如IP地址,比如端口号,比如要传输的信息),以及操作系统内核将在传输之前使用它。 我们提供的相关信息构成了一个合格的UDP数据包(以及底层的数据包和帧)。 套接字是一个比较大的话题,在协议森林系列中不会进行太深入的探讨。

(在原来的Python服务器中我们讨论了如何使用socket建立TCP连接,可以作为参考)

端口是传输层带来的最重要的概念。 我们了解了有关 UDP 协议的更多信息。 如果你已经掌握了IP协议,那么UDP协议就没有什么难度了。 它只是IP协议在传输层暴露的接口。

UDP套接字是一种无连接、不可靠的数据报协议; 为什么要使用它,因为它不可靠? 一:当应用程序使用广播或多播时,只能使用UDP协议; 另一个是:因为它是无连接的,所以速度很快。 由于UDP套接字是无连接的,如果一方的数据报丢失,另一方将无限期地等待。 解决办法就是设置一个超时时间。

建立UDP套接字时,socket函数的第二个参数应为SOCK_DGRAM,表示建立UDP套接字; 由于UDP是无连接的,服务器不需要监听或接受功能。

利用UDP套接字编程可以实现基于TCP/IP协议的无连接通信。 它分为两部分:服务器端和客户端。 主要实现流程如图3.1所示。

运用udp协议的应用是_应用协议是什么_各应用协议在层次中的位置

FHRP

第一跳冗余协议 FHRP

FHRP:实现冗余网关的技术

其原理是多个设备(路由器或交换机)共同提供一个冗余网关地址。 默认情况下,一台设备作为网关。 当工作设备出现故障时,备份路由器将接管网关地址,承担网关工作。

常见的第一跳冗余协议:HSRP、VRRP、GLBP

HSRP

HSRP→热备路由器协议

它是 Cisco 的专有协议。 多个设备加入一个 HSRP 组。 组内一台设备负责转发数据(作为实际网关),组内其他设备作为备份(其中一台作为1号备胎),当当前网关设备挂掉后,会立即上位置)

其他设备如何知道当前网关是否宕机?

因此,群组设备需要交换信息。 HSRP 设备使用多播进行信息交换。

组播地址:(224.0.0.2)版本一

(224.0.0.102) 版本 2

端口号 UDP 1985

组内的设备需要建立二层邻接关系来交换Hello信息。

HSRP角色:虚拟路由器HSRP组对外界的作用。 终端设备上配置的网关IP和mac是虚拟路由器的IP和mac,终端的数据包实际上是由主用路由器处理的。

活动路由器

一个 HSRP 组只会选举一台活动路由器。 活动路由器具有虚拟路由器的 MAC 地址。 它负责处理发送到虚拟路由器MAC地址的数据包,并定期发送hello消息。

备份路由器

监控问候消息。 当没有收到来自活动路由器的 hello 消息时,备份路由器将接替原来的活动路由器并成为新的活动路由器。 一个 HSRP 组中只有一台备份路由器。

其他路由器

除备份路由器和主用路由器外,其他路由器都处于Listen状态。当主用路由器和备用路由器都冷时,其他路由器将重新进行竞选。

HSRP 状态初始

学习到虚拟IP地址后,会监听组内的Hello消息

说话

定期发送hello消息参与角色选举

支持

如果当前活动路由器发生故障,备用路由器将成为新的活动路由器。

积极的

活动路由器负责转发所有发送到虚拟 MAC 地址的数据包,并定期发送 hello 消息。

注 1:每个路由器使用 3 个定时器来发送 hello 消息。 每个定时器到期都会导致路由器转换到下一个状态。

注2:如果未启用抢占功能,则活动路由器不会被其他路由器剥夺活动路由器状态,即使活动路由器的优先级低于其他路由器。

应用HSRP时注意STP

在这里插入图片描述

图中,stp阻塞端口为SW1的下行端口。 如果HSRP组的活动路由器是SW1,那么数据会先从第二层到达SW2,然后由SW2转发到SW1;

因此,在配置HSRP时,应与STP结合部署。

UDP协议详解

配置 HSRP

在这里插入图片描述

地址规划

VLAN 10

192.168。 10.0/24

192.168.10.254

VLAN 20

192.168.20.0/24

192.168.20.254

DSW1-R1

192.168.1.0/30

DSW2-R1

192.168.2.0/30

R1-ISP

202.101.10.0/30

基础配置配置
DSW1
vlan 10
name v10
vlan 20
name v20
exit
int vlan 10
no shut
ip address 192.168.10.253 255.255.255.0
int vlan 20
no shut
ip address 192.168.20.253 255.255.255.0
int e0/0
no sw
ip add	192.168.1.2 255.255.255.252
exit
int range e0/1-3
sw tr en do
sw mo trunk
DSW2
vlan 10
name v10
vlan 20
name v20
exit
int vlan 10
no shut
ip add 192.168.10.252 255.255.255.0
int vlan 20
no shut
ip add 192.168.20.252 255.255.255.0
int e0/0
no sw
ip add	192.168.2.2 255.255.255.252
exit
int range e0/1-3
sw tr en do
sw mo trunk
R1
int e0/1
no shut
ip add	192.168.1.1 255.255.255.252
int e0/2
no shut
ip add	192.168.2.1 255.255.255.252
sw
vlan 10
name v10
exit
int range e0/0-1
sw tr en do
sw mo tr
int  e0/3
sw mo ac
sw ac vlan 10
sw2
vlan 20
name v20
exit
int range e0/0-1
sw tr en do
sw mo tr
int  e0/3
sw mo ac
sw ac vlan 20

在配置HSRP之前,首先看一下STP情况。 调整vlan10的根设备为DSW1,备份根桥为DSW2; vlan20的根设备→DSW2,备份根桥→DSW1。

同时,确保被阻止的链路不会导致路径不理想。

配置HSRP
DSW1
int vlan 10
standby 1 ip 192.168.10.254 //组1,虚拟网关192.168.10.254
standby 1 preempt //开启抢占
standby 1 priority 101 //提高优先级
int vlan 20
standby 2 ip 192.68.20.254 //组2
standby 2 preempt
DSW2
int vlan 10
standby 1 ip 192.168.10.254
standby 1 preempt
int vlan 20
standby 2 ip 192.168.20.254
standby 2 preempt
standby 2 priority 101

看看邻居们

UDP协议详解

此时虚拟网关mac地址分别由DSW1和DSW2控制。

//可以通过showstandby查看HSRP角色

UDP协议详解

UDP协议详解

测试
DSW1
int vlan 10
shut

此时可以看到虚拟网关地址已被DSW2占用。

UDP协议详解

添加跟踪

上述配置完成后,仍然存在问题。 例如,当DSW1的上行链路(e0/0)挂掉时,那么DSW1只能将去往公网的数据转发到DSW2,然后DSW2将其转发到R1,形成次优路径;

解决这个问题:

追踪

让 HSRP 检测上行链路。 如果链路出现故障,则降低优先级,以便其他设备抢占,成为主用设备。

可以检测接口以及链路是否可以连通。

//具体配置请查看产品文档

VRRP

UDP协议详解

VRRP 和 HSRP 非常相似,VRRP 更常用作为公共协议

VRRPHSRP

掌握

积极的

备份

支持

//VRRP可以使用组成员的物理IP地址作为虚拟IP地址。 在这种情况下,该设备将优先成为VRRP主设备。

//通知消息组播地址:224.0.0.18,默认通知时间1s,保持时间3s(hsrp:3s/10s)

GLBP

GLBP提供更强的负载均衡能力

GLBP 团队成员之一担任 AVG,其他人担任备用 AVG。

AVG的功能是监听终端主机对默认网关地址的ARP请求,并回复某个组成员的mac地址。

例如,有四个组成员(A、B、C、D),A是AVG,第一个终端请求,AVG给出A的MAC地址; 第二个用户请求,AVG给出B MAC地址,依此类推

//如何分配有多种策略(轮询、权重等)

可以为其提供 MAC 地址的成员称为 AVF(主动虚拟转发器)

GLBP 组中最多有 4 个 AVF

GLBP状态 VG状态

残疾人

GLBP已配置,但没有虚拟IP地址

最初的

具有虚拟IP地址

虚拟网关持续收到Hello报文。 当AVG或SVG挂起时,会进入Speak状态。

说话

虚拟网关尝试AVG或SVG

支持

该网关成为 SVG(AVG 的备份角色)

积极的

该网关成为AVG

心室颤动状态

残疾人

最初的

持续接收Hello数据包,AVF如果挂掉就会尝试进入Active状态。

积极的

AVF,负责转发发送到VF MAC地址的数据包

//思科私有

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]