TCP/IP详解卷1:协议(七)【动态选路协议 , UDP:用户数据报协议】

TCP/IP协议,TCP和UDP的区别及特点 这篇博客主要用来纪录自己对TCP/IP和UDP的个人理解,若有不对还请慷慨指正 一些基础知识 IP地址:用来标识网络中的一个通信实体的地址。通信实体可以是计算机、路由器等。 比如互联网的每个服务器都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址。目前主流使用的IP地址是IPV4,但是随着网络规模的不断扩大,IPV4面临着枯竭的危险,所以推出了IPV6。 IPV4:32位地址,... 阅读详情

静态选路

在配置接口时,以默认方式生成路由表项(对于直接连接的接口),并通过route命令增加表项(通常从系统自引导程序文件),或是通过ICMP重定向生成表项(通常是在默认方式出错的情况下)。

当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这就出现了动态选路。

10.2 动态选路

路由器之间必须采用选路协议进行通信,路由器上有个进程为路由守护程序,它运行选路协议,与相邻路由进行通信。

动态选路并不改变内核在IP层的选路方式。这种选路方式称为选路机制(routingmechanism)。内核搜索路由表,查找主机路由、网络路由以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息改变了—-当路由随时间变化时,路由是由路由守护程序动态地增加或删除,而不是来自于自引导程序文件中的route命令。

每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(InteriorGateway Protocol),最常用的IGP是选路信息协议RIP。一种新的IGP是开放最短路径优先OSPF

外部网关协议EGP(Exterier GatewayProtocol)或域内选路协议的分隔选路协议用于不同自治系统之间的路由器。

10.3 UNIX选路守护程序

UNIX上运行名为routed的路由守护进程,它只是用RIP进行通信。

另一个程序是gated。IGP和EGP都支持它。大多数系统都可以运行routed,除非需要支持gated所支持的其他协议。

10.4 RIP:选路信息协议

这里写图片描述

这里写图片描述

让我们来看一下采用RIP协议的routed程序正常运行的结果。RIP常用的UDP端口号是520。

  1. 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。
  2. 接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由)。然后发回响应。
  3. 接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。
  4. 定期选路更新。每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。
  5. 触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。

每条路由都有与之相关的定时器。如果运行RIP的系统发现一条路由在 3分钟内未更新,就将该路由的度量设置成无穷大(16),并标注为删除。这意味着已经在 6个30秒更新时间里没收到通告该路由的路由器的更新了。再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。

RIP所使用的度量是以跳(hop)计算的。

10.6 OSPF:开放最短路径优先

与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议。距离向量的意思是,RIP发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。

在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。

OSPF与 RIP(以及其他选路协议)的不同点在于, OSPF直接使用IP。也就是说,它并不使用UDP或TCP。对于ip首部的protocol字段,OSPF有其自己的值。

10.7 BGP:边界网关协议

BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。

BGP系统与其他 BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。

BGP允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给 BGP。与RIP和OSPF不同的是,BGP采用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接。

BGP是一个距离向量协议,但是与(通告到目的地址跳数的) RIP不同的是,BGP 列举了到每个目的地址的路由。

10.8 CIDR:无类型域间选路

无类型域间选路(CIDR)是一个防止Internet路由表膨胀的方法,它也称为超网。

CIDR的基本观点是采用一种分配多个ip地址的方式,使其能够将路由表中的许多表项总和(summarization)成更少的数目。

“无类型”的意思是现在的选路决策是基于整个 32 bit IP地址的掩码操作,而不管其ip地址是A类、B类或是C类,都没有什么区别。


UDP是一个简单的面向数据报的运输层协议

这里写图片描述

UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。

11.2 UDP首部

这里写图片描述

端口号表示发送进程和接收进程。UDP长度字段指的是UDP首部和UDP数据的字节长度。

11.3 UDP检验和

UDP检验和覆盖UDP首部和UDP数据。回想IP首部的检验和,它只覆盖IP的首部。

UDP的检验和是可选的,而TCP的检验和是必需的。

UDP检验和的基本计算方法与IP首部检验和计算方法相类似(16bit字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节 0,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)。

其次,UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算检验和而设置的。伪首部包含 IP首部一些字段。其目的是让 UDP两次检查数据是否已经正确到达目的地。

这里写图片描述

11.5 IP分片

把一份IP数据报分片以后,只有到达目的地才进行重新组装。重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的,IP首部中包含的数据为分片和重新组装提供了足够的信息。

对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置 1。片偏移字段指的是该片偏移原始数据报开始处的位置。

另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置 1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。

当IP数据报分片后,每一片都成为一个分组,有自己的IP首部,并在选择路由器时与其他分组独立。固有可能在到达目的端时失序。

一片数据的丢失也要重传整个数据报。因为对数据报分片的是中间路由器,而不是起始端系统,后者根本不知道数据报是如何分片的。

这里写图片描述

PS.任何运输层的首部只出现在第一片数据中。

11.6 ICMP不可达差错(需要分片)

发送ICMP不可达差错的另一种情况是,当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志比特。如果某个程序需要判断到达目的端的路途中最小MTU是多少 — 称作路径MTU发现机制,那么这个差错就可以被该程序使用。

这里写图片描述

11.7 用Traceroute 确定路径MTU

修改traceroute程序确定路径MTU:发送分组,设置“不分片”标志比特。发送的第一个分组长度正好与出口MTU相等,每次收到ICMP“不能分片”差错是就减少分组的长度。

11.8 采用UDP的路径MTU发现

UDP应用可以关闭或开启该路径MTU发现,只要修改ip_path_mtu_discovery参数即可。

11.10 最大 UDP数据报长度

理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的。去除2 0字节的IP首部和8个字节的 UDP首部,UDP数据报中用户数据的最长长度为 65507字节。但是,大多数实现所提供的长度比这个最大值小。

我们会遇到两个限制因素:

  1. 应用程序收到其程序接口的限制。比如socket API就可以设置接收和发送缓存的长度
  2. 来自TCP/IP的内核实现。

11.11 ICMP源站抑制差错

当一个系统(路由器或主机)接收数据报的速度比其处理速度快时,可能产生这个差错。注意限定词“可能”。即使一个系统已经没有缓存并丢弃数据报,也不要求它一定要发送源站抑制报文。

这里写图片描述

TCP/IP详解:协议(UDP,广播和多播) 第11章:UDP:用户数据报协议 UDP不提供可靠性 TCP端口号由TCP来查看,UDP端口号由UDP来查看;TCP端口号与UDP端口号是相互独立的 UDP首部   UDP校验和可选,覆盖UDP首部和UDP数据 如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃。不产生任何差错报文(当IP层检测到IP首部检验和有差错时也这样做)。 不是所有的以太网数据帧 阅读详情

相关推荐

读书笔记《TCP/IP详解卷一:协议》

第一章:概述 1.1 引言 1.2 分层 P1:TCP/IP通常被认为是一个四层协议系统 应用层 Telnet、FTP、email等 运输层 TCP和UDP 网络层 IP、ICMP、IGMP 链路层 设备驱动程序以及接口卡 P2:Telnet远程登录,FTP文件传输协议,SMTP简单邮件传送协议,SNMP简单网络管理协议

HYCANYE 2782

【面试题】9.Netty相关

1.BIO、NIO和AIO的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。 伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了

白夜行 5万+

《TCP/IP详解卷1:协议》完整学习体验

本文还有配套的精品资源,点击获取 简介:《TCP/IP详解卷1:协议》一书由网络技术专家W. Richard Stevens撰写,深入探讨了互联网的核心协议TCP/IP的原理和细节。本书覆盖了网络通信的各个层面,包括网络接口层、互联网层、传输层和应用层,为读者提供了互联网协议栈的全面理解。书中不仅理论性强,还配有实例和实战经验,帮助网络管理员、软件开发人员及网络安全专家提升...

weixin_42592399的博客 1997

DHCP:实现基于UDP的主机动态配置协议

主机动态配置协议是在无线互联时代,我们“日用而不知”的幕后英雄。试想你拿着手机,连接上wifi后就可以上网,如果没有改协议的存在,我们估计没有那么轻松自如就能惬意的在指尖冲浪。 该协议的做大作用是动态的为加入网络的设备分配IP地址,在该协议出现前,IP地址的分配基于静态模式,你把设备的mac地址手动在路由器设置,然后路由器自动生成一个IP与你的mac地址绑定起来。这种应用在有线网络时代可以适用,但...

tyler_download的专栏 1817

深入理解TCP/IP协议:《TCP/IP详解卷一》内容梳理

计算机网络的通信模型是分层的,其中TCP/IP协议族将网络通信分为四个层次:应用层、传输层、网络层和数据链路层。每一层负责不同的功能,例如应用层协议处理应用的交互,传输层提供端到端的数据传输,网络层负责数据包的路由选择,而数据链路层则处理链路上的物理传输。

weixin_26805451的博客 1090

微信公众号开发实战:如何高效推送模板消息(附完整代码示例)

本文详细解析了微信公众号开发中模板消息推送的核心流程与实战技巧。文章从OpenID获取、模板申请、Access Token缓存管理到完整PHP代码实现,逐步拆解了高效推送模板消息的关键步骤,并提供了可直接复用的代码示例,帮助开发者快速集成这一提升用户体验的重要功能。

weixin_29009971的博客 792

通过UDP探测端到端MTU

P_MTU_D(Path MTU Discovery) socket的UDP功能,去发现端到端MTU #!/usr/bin/env python3 #-*- encoding:utf8 -*- #Used UDP to learn the MTU of the end_to_end PATH_MTU import IN,argparse,socket if not hasa...

weixin_34032779的博客 807

FSL软件安装

FSL软件安装

huang_tianyuan的博客 2630

《TCP/IP详解 卷1:协议》之第九章:IP选路

记录学习笔记:《TCP/IP详解 卷1:协议》之第九章:IP选路

qq_53619687的博客 1511

华为海思IC前端中后端(COT&XPU)岗位笔试机考题

华为海思COT和XPU部门IC前端,IC中端,IC后端岗位笔试真题分享

weixin_37584728的博客 3360

产品经理必备知识——API接口

在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如果你选择允许,app就会根据你的当前位置为你提供更加个性化的一些服务,当然也有一些app拿到你的位置信息做出损害用户利益的行为,所以还是需要谨慎授权。首先,看接口文档的场景一般是自身业务模块需要获取外部的数据,但又不想自己重新开发,寻找外部已经实现的有开放能力的供应商(包含企业内部的)。通过发送请求和响应消息的方式实现程序间的通信。

WBKJ_Noah_的博客 3454

TCP/IP详解——IP协议,IP选路

IP是TCP/IP协议族中最为核心的协议,所有的TCP,UDP,ICMP,IGMP数据都是以IP数据报格式进行传输的。IP提供不可靠的,无连接的数据报传送服务。不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP 仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP 有一个简单的错误处理算法:丢弃该数据报,然后发送 ICMP 消息报给信源端。

来日可期的博客 3051

YOLO模型使用jupyterlab的方式进行预测/推理(示例)

首先相信很多使用过python的人都或多或少地了解过这个应用。是一个开源Web应用程序,可让用户创建和共享包含实时代码、公式、可视化和叙述文本的文档。用途包括:数据清理和转换、数值模拟、统计建模、等等。而Jupyter Lab则是Jupyter的下一代笔记本界面。是一个基于Web的交互式开发环境,用于Jupyter notebook、代码和数据。非常灵活,可支持数据科学、科学计算和机器学习领域的广泛工作。是可扩展和模块化的,其可编写插件来添加新组件并与现有组件相集成。

ocean00008899的博客 900

《TCP/IP 卷1》笔记:动态选路协议

动态选路协议 引言 前面讨论了静态选路,1)配置接口时,以默认方式生成路由表项,2)通过route命令增加表项,3)通过ICMP重定向命令生成表项。 本章讨论动态选路协议,用于路由器间的通信。RIP(routing information protocol)即选路信息协议。还有两种新的线路协议,OSPF和BGP。最后研究一种无分类域间选路技术。 动态选路 相邻路由器之间进行通信,告知对方每个路由器...

cjdjcdj的博客 666

Multisim滞回比较器电路设计与仿真实战:从理论到应用

本文详细介绍了Multisim滞回比较器电路设计与仿真实战,从基础理论到实际应用全面解析。通过门铃原理类比解释滞回特性,提供2-5V阈值检测电路的设计步骤和Multisim仿真技巧,并延伸至温度控制系统等实际工程应用,帮助读者掌握电路设计与优化的核心方法。

assembly8low的博客 1081

基于 Qt C++ 的战术通信终端

logMessage(QString("新客户端连接来自: %1:%2").arg(incomingTcpSocket->peerAddress().toString()).arg(incomingTcpSocket->peerPort()));logMessage(QString("服务器已启动,在 [%1]:%2 监听IPv6连接...").arg(ui->lineEditAddress->text()).arg(port));

寒寒豆豆软件公司的博客 77

TCP/IP协议族之TCP、UDP协议详解(小白也能看懂)

每个网络主机都会有一个IP地址,每个节点通过IP地址进行区分不同的主机,从而进行通信,路由器和主机都有一个IP地址。该IP地址是软件层面的一个地址,如192.168.xxx.xxx,而不是硬件层面的MAC地址。IP地址分为IPv4地址和IPv6地址。IPv4地址有32位正整数表示,IPv6地址由128位正整数表示。现在我们用的都是IPv4地址,将32位的 IP 地址以每8位为一组,分成4组,每组以 “.” 隔开,再将每组数转换成十进制数。IP地址由网络标识和主机标识。

Qurry的博客 6162

使用 Simulink 和 Simscape Electrical 工具箱设计一个 Buck 转换器系统

Buck 转换器(降压转换器)是一种常用的 DC-DC 转换器,用于将较高的输入电压转换为较低的输出电压。为了评估其抗干扰能力,我们可以在模型中引入不同的干扰源,并观察系统的响应情况。电网电压波动:输入电压的变化。负载突变:负载电阻或电感的变化。电磁干扰:高频噪声或脉冲干扰。通过模拟这些干扰,我们可以分析系统的动态响应特性,并采取相应的措施来提高系统的抗干扰能力。

xiaoheshang_123的博客 377

《TCP/IP详解 卷1:协议》之第十章:动态选路协议

记录学习笔记:《TCP/IP详解 卷1:协议》之第十章:动态选路协议

qq_53619687的博客 1541

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TCP/IP详解卷1:协议(第十章:动态选路协议)

自制系统内选路协议 每个自治系统可以选择该自治系统中各个路由器之间的选路协议,这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(Intradomain Routing Protocol); 最常用的IGP是选路信息协议RIP(Routing Infromation Protocol);一种新的IGP是开放最短路径优先OSP

SecondJanuary 3032

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TCP/IP详解——UDP 协议

UDP:用户数据报协议(User Datagram Protocol)面向无连接的,也就是无需建立连接,传输不可靠。UDP仅仅是在IP服务的基础上增加了进程到进程之间的通信,使其不再是主机到主机的通信。UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。如果IP数据报的长度超过网络的MTU,就要对IP数据报进行分片。如果需要,源端到目的端之间的每个网络都要进行分片。

来日可期的博客 3776

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《TCP/IP详解卷一:协议》学习笔记

TCP/IP分层 数据封装过程 客户-服务器模型 重复型 并发型 等待一个客户请求的到来 等待一个客户请求的到来 处理客户请求 启动一个新的服务器来处理这个客户的请求 发送响应给发送请求的客户 处理结束后,终止这个新服务器 UDP TCP 常见知名端口号 FTP Telnet TFTP 21 23 69 ...

weixin_43116558的博客 2297

TCP/IP详解 第十章 动态选路协议

何时使用动态选路协议 在小型网络中一般使用静态选路,在配置接口时,以默认方式生成路由表项(直连),通过route命令添加路由表项,或者通过ICMP重定向报文生成路由表项。 但是在网络环境复杂或者以上的方法无法满足的时候就会使用动态选路协议了 动态选路协议是用于路由器之间的通信 包括RIP,OSPF, BGP, 无分类域间选路 路由器上有个路有守护进程,用来运行选路协议,与其相邻的一些路由器进行通信...

@凌晨三点半的博客 419

TCP/IP详解 卷1:协议 学习笔记 第十章 动态选路协议

静态选路包括在配置接口时,以默认方式生成路由表项(对于直接连接的接口),并通过route命令增加表项(通常从系统自引导程序文件),或通过ICMP重定向生成路由表项(通常在默认方式出错的情况下)。 网络比较小,且与其他网络只有单个连接点且没有多余路由(若主路由失败,可以使用备用路由)时,以上静态选路方法可行,如果上述三种情况都不能满足,通常使用动态选路。 动态选路是相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,路由器间必须使用选路协议进行通信,路由器上的路由守护程序运行选路协议,并与其相邻的一

tus00000的博客 462

《TCP/IP详解 卷1:协议》 读书笔记 第十章 动态选路协议

第十章 动态选路协议1.引言上一章讲的是静态选路:通过默认方式生成路由表项(对于直接连接的接口),并通过route命令增加表项,或者通过ICMP重定向生成表项。本章讨论动态选路,它用于路由器间的通信。包括 RIP, OSPF, BGP 以及 CIDR。2.动态选路路由器上有一个路由守护程序,它运行选路协议,并与相邻的一些路由器通信,然后根据收到的信息更新内核中的路由表——这个过程是动态的。Inter

jiange_zh的博客 1198
上一篇: TCP/IP详解卷1:协议(六)【Traceroute程序,IP选路】
下一篇: TCP/IP详解卷1:协议(八)【广播和多播,ICMP:Internet组管理协议】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值