计算机网络(4):网络层
网络层提供的两种服务
虚电路服务(Virtual Circuit Service)和数据报服务(Datagram Service)是在网络层(第三层)提供的两种不同的通信服务。它们主要区别在于建立连接的方式和数据传输的方式。
虚电路服务(Virtual Circuit Service)
连接导向: 虚电路服务是一种连接导向的服务,它要求在数据传输之前先建立一条虚拟的通信路径(虚电路)。
三个阶段:
1.建立连接(Connection Establishment): 在开始通信之前,必须在网络中建立虚拟电路。这个过程包括确定路径、分配资源和建立通信参数。
2.数据传输(Data Transfer): 一旦虚电路建立,数据可以按照预定的路径进行传输。数据包沿着虚拟电路传递,每个数据包都带有虚电路标识符。
3.释放连接(Connection Release): 通信结束后,必须释放虚电路,释放相关资源。这个过程确保网络中的资源可以被其他通信使用。
特点: 虚电路服务提供了一种有序、可靠的通信方式,适用于对时延和可靠性要求较高的应用,例如语音通信和视频传输。
数据报服务(Datagram Service)
无连接: 数据报服务是一种无连接的服务,数据包独立传输,每个数据包都包含了足够的信息来让网络中的路由器进行独立的转发。
无需建立连接: 在发送数据之前,不需要在网络中建立连接,每个数据包独立传输,路由器根据目标地址进行转发。
无连接服务特点: 数据报服务适用于需要灵活性和可扩展性的应用,例如互联网上的许多应用,包括Web浏览、电子邮件等。
虚电路服务与数据报服务的对比:
对比 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络保证 | 可靠通信应当由用户机主来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电信号 | 每个分组都有终点的完整地址 |
分路的转发 | 属于同一种虚电路的分组均按照同一路由进行转发 | 每一个分组独立选择路由进行转发 |
节点出现故障 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能丢失分组,一些路由可能发生变化 |
分组的顺序 | 总是按照发送顺序到达终点 | 到达终点时不一定按照发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
网际协议 IP
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,也是最重要的因特网标准协议之一。
与IP协议配套使用的还有四个协议:
地址解析协议 ARP(Address Resolution Protocol)
逆地址解析协议 RARP (Reverse Address Resolution Protocol)
网际控制报文协议 ICMP (Internet Control Message Protocol)
网际组管理协议 IGMP (Internet Group Management Protocol)
由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信,因此TCP/IP体系中的网络层常常称为网际层(internetlayer),或 IP 层。
虚拟互联网络
没有一种单一的网络能够适应所有用户的需求。
因此,总是有很多种不同性能、不同网络协议的网络,供不同的用户选用。
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。
根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫做转发器(repeater)。
(2)数据链路层使用的中间设备叫做网桥或桥接器(bridge)。
(3)网络层使用的中间设备叫做路由器(router)。
(4)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
TCP/P体系在网络互连上采用的做法是在网络层(即IP层)采用了标准化协议,但相互连接的网络则可以是异构的。
图(a)表示有许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议IP (Internet Protocol),因此可以把互连以后的计算机网络看成如图(b)所示的一个虚拟互连网络(internet)。
所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是利用P协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互连网络可简称为IP 网(IP网是虚拟的)。
使用IP网的好处是:当 IP 网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。
分类的 IP 地址
整个的因特网就是一个单一的、抽象的网络。IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。IP地址现在由因特网名字与号码指派公司 ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。
IP地址的编址方法共经过了三个历史阶段:
(1)分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
(2)子网的划分。这是对最基本的编址方法的改进,其标准 RFC 950 在1985年通过。
(3)构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。
所谓分类的P地址就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号加粗样式在整个因特网范围内必须是唯一的**。第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。
因此,一个IP地址在整个因特网范围内是唯一的。
这种两级的IP地址可以记为:
IP地址 : : = { < 网络号 > , < 主机号 > } \text{IP}地址::= \space \{<网络号>,<主机号>\} IP地址::= {<网络号>,<主机号>}
上式中的符号::=
表示定义为。
IP地址根据其分配方式和用途可以分为不同的类别,主要有以下几个类别:A类、B类、C类、D类和E类。
A类地址(Class A):
范围:1.0.0.0 到 126.255.255.255
特点:A类地址的第一个字节(8位)用于网络标识,剩余的三个字节用于主机标识。这意味着A类地址支持大量的主机,但网络数相对较少。
示例:10.0.0.1、45.23.56.78
B类地址(Class B):
范围:128.0.0.0 到 191.255.255.255
特点:B类地址的前两个字节(16位)用于网络标识,后两个字节用于主机标识。B类地址支持的主机数和网络数都比A类地址多。
示例:172.16.0.1、150.200.1.1
C类地址(Class C):
范围:192.0.0.0 到 223.255.255.255
特点:C类地址的前三个字节(24位)用于网络标识,最后一个字节用于主机标识。C类地址适用于较小规模的网络,但能够提供更多的网络数量。
示例:192.168.0.1、201.45.67.89
A类、B类和C类地址都是单播地址(一对一通信),是最常用的。
D类地址(Class D):
范围:224.0.0.0 到 239.255.255.255
特点:D类地址用于多播(Multicast),在这个范围内的IP地址被用于同时传输数据到多个主机,而不是单独的一个主机。
示例:使用D类地址进行多播通信。
E类地址(Class E):
范围:240.0.0.0 到 255.255.255.255
特点:E类地址是保留地址,用于实验和开发,不用于常规的IP通信。在E类地址中,240.0.0.0 是保留用于将网络掩码子网划分。
这些IP地址的分类方式是根据其最高位的数值来划分的。在实际网络中,由于引入了无类别域间路由(CIDR)和子网划分等技术,IP地址的分类并不是严格遵循这些规则,而是更加灵活和有效地使用。
IP 地址的一些重要特点:
(1)每一个P地址都由网络号和主机号两部分组成。
IP地址是一种分等级的地址结构:第一,IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配,方便了IP地址的管理;第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。
(2)实际上IP地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
(3)按照因特网的观点,一个网络是指具有相同网络号 net-id 的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。
(4)在IP地址中,所有分配到网络号的网络(不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网)都是平等的。
IP 地址与硬件地址
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为P地址是用软件实现的)。
在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用 IP地址的 IP 数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在 MAC帧的首部中。
连接在通信链路上的设备(主机或路由器)在接收MAC帧时,其根据是MAC帧首部中的硬件地址。在数据链路层看不见隐藏在MAC帧的数据中的IP地址。只有在剥去MAC帧的首部和尾部后把 MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部。
在网络层和网络层以上使用的是 IP 地址,而数据链路层及以下使用的是硬件地址。
当 IP 数据报放入数据链路层的MAC帧中以后,整个的 IP 数据报就成为 MAC 帧的数据,因而在数据链路层看不见数据报的 IP 地址。
要注意:
1.在 IP 层抽象的互联网上只能看到 IP 数据报。
2.虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址的网络号进行路由选择。
3.在局域网的链路层,只能看见MAC帧。
4.尽管互连在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。
地址解析协议 ARP 和逆地址解析协议 RARP
地址解析协议(ARP)和逆地址解析协议(RARP)是用于在网络中实现IP地址和MAC地址之间的映射的两种协议。
地址解析协议 (ARP):
用途: ARP协议用于将 IP 地址解析为对应的 MAC 地址。当设备需要与局域网上的另一个设备通信时,它首先需要知道目标设备的 MAC 地址。ARP 允许设备通过广播请求来查询目标设备的 MAC 地址。
工作原理: 发送 ARP 请求的设备会在局域网上广播一个 ARP 请求帧,该帧包含目标设备的 IP 地址。目标设备收到请求后,会回应一个包含自己的 MAC 地址的 ARP 响应帧。发起请求的设备收到响应后,就知道了目标设备的MAC地址,可以将数据包发送到正确的地址。
逆地址解析协议 (RARP):
用途: 逆地址解析协议(RARP)的目标与 ARP 相反,它用于将 MAC 地址解析为对应的 IP 地址。通常,RARP用于在没有磁盘或其他存储设备的情况下,让主机在启动时从网络上获取自己的IP地址。
工作原理: 当主机启动时,如果它没有预先配置的 IP 地址,它可以发送一个 RARP 请求帧到网络上。RARP服务器收到请求后,会回应一个包含 IP 地址的 RARP 响应帧。主机收到响应后,就知道了自己的IP地址,可以进行后续的网络通信。
IP 数据报的格式
IP 数据报的格式能够说明 IP 协议都具有什么功能。在 TCP/IP 的标准中,各种数据格式常常以 32 位(即 4 字节)为单位来描述。
一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
IP数据报首部的固定部分中的各字段
(1)版本:占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。这里介绍的是 IPV4。
(2)首部长度:占4位,可表示的最大十进制数值是15。这个字段所表示数的单位是 32 位字(1个32位字长是4字节)。
因此,当 IP 的首部长度为 1111 时(即十进制的15),首部长度就达到最大值60字节。当IP分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在 4 字节的整数倍时开始,这样在实现IP协议时较为方便。
首部长度限制为 60 字节的缺点是:有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务占:8位,用来获得更好的服务。包含服务类型和优先级信息。
只有在使用区分服务时,这个字段才起作用。一般不使用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为 16 位,因此数据报的最大长度为 2^16-1 = 65535 字节。
在IP层下面的每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU (Maximum Transfer Unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的 MTU 值。
当数据报长度超过网络所容许的最大传送单元 MTU 时,就必须把过长的数据报进行分片后才能在网络上传送。这时,数据报首部中的“总长度”字段不是指未分片前的数据报长度,而是指分片后的每一个分片的首部长度与数据长度的总和。
(5)标识(identification):占16位。用于将相关的分片组装成完整的数据报。
IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag):占3位,但目前只有两位有意义。用于指示是否允许分片,以及是否是分片的最后一个片段。
标志字段中的最低位记为MF (More Fragment)。MF =1 即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为 DF (Don’t Fragment),意思是“不能分片”。只有当 DF=0 时才允许分片。
(7)片偏移:占13位。指示当前片段在原始数据报中的位置。
片偏移指出较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间:占8位,生存时间字段常用的英文缩写是TTL (Time To Live),表明是数据报在网络中的寿命。
由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL值的单位。每经过一个路由器时,就把TTL 减去数据报在路由器所消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值减为零时,就丢弃这个数据报。
随着技术的进步,路由器处理数据报所需的时间不断在缩短,一般都远远小于1秒钟,后来就把 TTL 字段的功能改为**“跳数限制”**(但名称不变)。路由器在转发数据报之前就把 TTL 值减 1。若TTL值减小到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。
TTL的意义是指明数据报在因特网中至多可经过多少个路由器。显然,数据报能在因特网中经过的路由器的最大数值是255。若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。因为这个数据报一传送到局域网上的某个路由器,在被转发之前TTL值就减小到零,因而就会被这个路由器丢弃。
(9)协议:占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和:占16位。这个字段只检验数据报的首部,但不包括数据部分。提供对首部的错误检测。
因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
(11)源 IP 地址: 占32位。指示数据报的发送者的IP地址。
(12)目标 IP 地址:占32位。指示数据报的目标设备的IP地址。
IP 数据报首部的可变部分
IP首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。
这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。
IP 层转发分组的流程
可归纳出分组转发算法如下:
(1)从数据报的首部提取目的主机的 IP 地址 D,得出目的网络地址为 N。
(2)若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址 D 转换为具体的硬件地址,把数据报封装为 MAC 帧,再发送此帧);否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(5)。
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6)报告转发分组出错。
路由表的更新和管理、路由协议的选择等因素会影响到路由表的内容和路由的选择过程。在实际网络中,路由器的性能和路由表的优化对于快速而有效地进行数据报的转发非常重要。
划分子网与构造超网
划分子网
IP 地址的问题:
1.IP地址空间的利用率有时很低;
2.给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
3.两级IP地址不够灵活。
为解决上述问题,从1985年 起在 IP 地址中又增加了一个“子网号字段”,使两级IP地址变成为三级IP地址,它能够较好地解决上述问题,并且使用起来也很灵活。这种做法叫作划分子网(subnetting),或子网寻址或子网路由选择。划分子网已成为因特网的正式标准协议。
划分子网的基本思路如下:
(1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。
(2)划分子网的方法是从网络的主机号借用若干位作为子网号 subnet-id,当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号。也可以用以下记法来表示:
IP地址 : : = { < 网络号 > , < 子网号 > , < 主机号 > } \text{IP}地址 ::=\{<网络号>,<子网号>,<主机号>\} IP地址::={<网络号>,<子网号>,<主机号>}
(3)凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到 IP 数据报后,再按目的网络号和子网号找到目的子网,把 IP 数据报交付给目的主机。
子网掩码(Subnet Mask)
子网掩码是一个32位的二进制数,用于指示IP地址中哪部分表示网络标识,哪部分表示主机标识。它与IP地址一起使用,通过逻辑运算来确定网络中的哪个部分是子网,哪个部分是主机。
常见的子网掩码表示方式包括:
点分十进制表示法:例如,255.255.255.0。
CIDR表示法:例如,/24。
子网掩码中的"1"位表示网络部分,而"0"位表示主机部分。 通过与IP地址进行逻辑与操作,可以提取出网络标识。例如,对于IP地址192.168.1.10,如果子网掩码是255.255.255.0,那么与操作后的结果是192.168.1.0,这就是网络标识。
在CIDR表示法中,例如,/24表示前24位是网络标识,剩余的8位是主机标识。
划分子网和正确配置子网掩码是进行IP地址规划和管理的重要步骤,有助于提高网络的效率和安全性。
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
使用子网时分组的转发
在划分子网的情况下,分组转发的算法必须做相应的改动。
使用子网划分后,路由表必须包含:目的网络地址、子网掩码和下一跳地址。
在划分子网的情况下,路由器转发分组的算法如下:
(1)从收到的数据报的首部提取目的 IP 地址 D。
(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和 D 逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把 D 转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和 D 逐位相“与”(AND操作),其结果为 N。若 N 与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6)报告转发分组出错。
无分类编址 CIDR(构造超网)
CIDR最主要的特点有两个:
(1) CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间,并且可以在新的 IPv6 使用之前容许因特网的规模继续增长。
CIDR 把 32 位的 IP 地址划分为两个部分。前面的部分是网络前缀(network-prefix)(或简称为前缀),用来指明网络,后面的部分则用来指明主机。因此 CIDR 使 IP 地址从三级编址(使用子网掩码〉又回到了两级编址,但这已是无分类的两级编址。它的记法是:
IP地址 : : = { < 网络前缀 > , < 主机号 > } \text{IP}地址 ::=\{<网络前缀>,<主机号>\} IP地址::={<网络前缀>,<主机号>}
CIDR还使用斜线记法(slash notation),或称为CIDR记法,即在IP地址后面加上斜线,然后写上网络前缀所占的位数。
(2) CIDR把网络前缀都相同的连续的IP地址组成一个CIDR地址块。CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
例如,已知IP地址 128.14.35.7/20 是某 CIDR 地址块中的一个地址,现在把它写成二进制表示,其中的前20位是网络前缀,而前缀后面的12位是主机号。
128.14.35.7/20=10000000 00001110 0010 0011 00000111
这个地址所在的地址块中的最小地址和最大地址可以很方便地得出:
最小地址:128.14.32.0 = 10000000 00001110 0010 0000 0000000
最大地址:128.14.47.255 = 10000000 00001110 0010 1111 11111111
为了更方便地进行路由选择,CIDR使用32位的地址掩码(address mask)。地址掩码是一串1和一串0组成,而1的个数就是网络前缀的长度。虽然CIDR不使用子网了,但由于目前仍有一些网络还使用子网划分和子网掩码,因此CIDR使用的地址掩码也可继续称为子网掩码。
例如,120地址块的地址掩码是:11111111 11111111 11110000 00000000(20个连续的1)。
斜线记法中,斜线后面的数字就是地址掩码中1的个数。
CIDR不使用子网是指CIDR并没有在32位地址中指明若干位作为子网字段(subnet-id) 。但分配到一个 CIDR 地址块的组织,仍然可以在本组织内根据需要划分出一些子网。这些子网也都只有一个网络前缀和一个主机号字段,但子网的网络前缀比整个组织的网络前缀要长些。
例如,某组织分配到地址块/20,就可以再继续划分为 8 个子网(即需要从主机号中借用 3 位来划分子网)。这时每一个子网的网络前缀就变成23位(原来的20位加,上从主机号借来的3位),比该组织的网络前缀长3位。
由于一个 CIDR 地址块中有很多地址,所以在路由表中就利用 CIDR 地址块来查找目的网络。这种地址的聚合常称为路由聚合(route aggregation),它使得路由表中的一个项目可以表示原来传统分类地址的很多个(例如上千个)路由。路由聚合也称为构成超网。
每一个 CIDR 地址块中的地址数一定是 2 的整数次幂。
构造超网(Supernetting)是将多个较小的 IP 网络合并为一个更大的网络的过程。这一过程通常旨在减少路由表的大小,提高路由表的效率。
1.确定超网的范围:
网络合并: 选择哪些相邻的小网络可以被合并成一个更大的超网。这通常需要相邻的子网具有相同的前缀,即它们的网络标识部分相同。
2.选择超网的子网掩码:
确定掩码长度: 选择适当的子网掩码,确保它能够覆盖所有合并的小网络。超网的子网掩码应该比小网络的子网掩码更短,以确保包含所有小网络的地址范围。
3. 配置路由器:
更新路由表: 配置网络中的路由器,使其能够正确地将数据包路由到合并后的超网。路由器需要知道如何将数据包传递给超网,而不是单个小网络。
4.逻辑 AND 操作:
与操作(AND): 将超网的子网掩码与每个小网络的IP地址进行逻辑 AND 操作,以获得超网的网络标识。这个操作将确保超网包含了所有合并的小网络。
5.更新网络设备配置:
更新主机和设备配置: 对于连接到这些网络的主机和设备,需要更新其配置,使其了解新的超网。这包括更新主机的默认网关等配置信息。
6.验证和测试:
验证网络: 在构造超网后,对网络进行验证和测试,确保所有设备能够正确地与新的超网通信。这可能包括对网络连通性、路由表和子网掩码的检查。
7.监测和维护:
监测网络性能: 持续监测网络性能,确保超网的构建对网络运行没有负面影响。需要定期进行网络维护和优化。
构造超网的过程需要谨慎进行,确保对于网络的影响最小化。超网的引入通常是为了减少路由表的大小,提高路由器的效率,但需要在网络设计和管理中权衡各种因素,包括灵活性、安全性和性能。
在使用CIDR时,由于采用了网络前缀这种记法,IP地址由网络前缀和主机号这两个部分组成,因此在路由表中的项目也要有相应的改变。这时,每个项目由网络前缀和下一跳地址组成。但是在查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由。这叫作最长前缀匹配(longest-prefix matching),这是因为网络前缀越长,其地址块就越小,因而路由就越具体(more specific)。最长前缀匹配又称为最长匹配或最佳匹配。
这部分有点难,,,,暂时放过,当初学过,是一点印象都没有。。。
网际控制报文协议 ICMP
ICMP(Internet Control Message Protocol) 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 是因特网的标准协议。但 ICMP 不是高层协议,而是 IP 层的协议。ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成IP数据报发送出去。I
ICMP 报文的种类
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。
接着的 4 个字节的内容与ICMP的类型有关。
最后面是数据字段,其长度取决于ICMP的类型。
ICMP差错报告报文共有五种:
(1)终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
(2)源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报
文,使源点知道应当把数据报的发送速率放慢。
(3)时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
(4)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
(5)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
所有的 ICMP 差错报告报文中的数据字段都具有同样的格式。
把收到的需要进行差错报告的 IP 数据报的首部和数据字段的前 8 个字节提取出来,作为 ICMP 报文的数据字段。再加上相应的 ICMP 差错报告报文的前 8 个字节,就构成了 ICMP 差错报告报文。
提取收到的数据报的数据字段的前 8 个字节是为了得到运输层的端口号(对于 TCP 和 UDP )以及运输层报文的发送序号(对于 TCP)。这些信息对源点通知高层协议是有用的。整个 ICMP 报文作为 IP 数据报的数据字段发送给源点。
是不应发送ICMP 差错报告报文的几种情况:
1.对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
2.对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
3.对具有多播地址的数据报都不发送ICMP差错报告报文。
4.对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
常用的ICMP询问报文有两种:
(1)回送请求和回答 ICMP 回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
(2)时间戳请求和回答 ICMP 时间截请求报文是请某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用来进行时钟同步和测量时间。
因特网的路由选择协议
有关路由选择协议的几个基本概念
路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目。
一个理想的路由算法应具有如些特点:
(1)算法必须是正确的和完整的。沿着各路由表所指引的路由,分组一定能够最终到达的目的网络和目的主机。
(2)算法在计算上应简单。路由选择的计算不应使网络通信量增加太多的额外开销。
(3)算法应能适应通信量和网络拓扑的变化。要有自适应性,当网络中的通信量发生变化时,算法能自适应地改变路由以均衡各链路的负载。当某个或某些结点、链路发生故障不能工作,或者修理好了再投入运行时,算法也能及时地改变路由。有时称这种自适应性为稳健性(robustness)。
(4)算法应具有稳定性。在网络通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不应使得出的路由不停地变化。
(5)算法应是公平的。路由选择算法应对所有用户(除对少数优先级高的用户)都是平等的。
(6)算法应是最佳的。路由选择算法应当能够找出最好的路由,使得分组平均时延最小而网络的吞吐量最大。
从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类,即静态路由选择策略与动态路由选择策略。
静态路由选择也叫做非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。对于很简单的小网络,完全可以采用静态路由选择,用人工配置每一条路由。
动态路由选择也叫做自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。因此,动态路由选择适用于较复杂的大网络。
分层次的路由选择协议
因特网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。
因特网采用分层次的路由选择协议的原因:
(1)因特网的规模非常大,现在就已经有几百万个路由器互连在一起。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。
(2)许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。
因特网将整个互联网划分为许多较小的自治系统(autonomous system),一般都记为AS。
尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
因特网就把路由选择协议划分为两大类,即:
(1)内部网关协议IGP (Interior Gateway Protocol)
即在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。具体的协议有多种,如 RIP和 OSPF等。
(2)外部网关协议EGP (External Gateway Protocol)
若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP。目前使用的协议是BGP(Border Gateway Protocol)边界网关协议。
自治系统之间的路由选择也叫做域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)。
内部网关协议 RIP
路由信息协议RIP (Routing Information Protocol) 是一种分布式的基于距离向量的路由选择协议,是因特网的标准协议,其最大优点就是简单。
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,即距离向量)。RIP协议的距离也称为跳数”(hop count),因为每经过一个路由器,跳数就加1。RIP 认为好的路由就是它通过的路由器的数目少,即距离短。
RIP允许一条路径最多只能包含15个路由器。因此距离等于16时即相当于不可达。可见 RIP只适用于小型互联网。
到直接连接的网络的距离也可定义为 0。
RIP不能在两个网络之间同时使用多条路由。
RIP的特点:
(1)仅和相邻路由器交换信息。如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。RIP协议规定,不相邻的路由器不交换信息 。
(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
(3)按固定的时间间隔交换路由信息。然后路由器根据收到的路由信息更新路由表。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
路由表中最主要的信息就是:到某个网络的距离(即最短距离),以及应经过的下一跳地址。
路由表更新的原则是找出到每个目的网络的最短距离。这种更新算法又称为距离向量算法。
距离向量算法
对每一个相邻路由器发送过来的 RIP 报文,进行以下步骤:
(1)对地址为 X 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。每一个项目都有三个关键数据,即:到目的网络 N,距离是 d,下一跳路由器是 X。
(2)对修改后的RIP报文中的每一个项目,进行以下步骤:
若原来的路由表中没有目的网络 N,则把该项目添加到路由表中。否则(即在路由表中有目的网络 N,这时就再查看下一跳路由器地址);
若下一跳路由器地址是 X,则把收到的项目替换原路由表中的项目。否则(即这个项目是:到目的网络 N,但下一跳路由器不是 X);
若收到的项目中的距离 d 小于路由表中的距离,则进行更新,否则什么也不做。
(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16表示不可达)。
(4)返回。
上面的距离向量算法的基础就是 Bellman-Ford 算法(或Ford-Fulkerson算法)。
总结:
设是结点 A 到 B 的最短路径上的一个结点。若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。
RIP 协议让一个自治系统中的所有路由器都和自己的相邻路由器定期交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
RIP 协议的报文格式
RIP报文由首部和路由部分组成。
RIP 的首部占4个字节,其中的命令字段指出报文的意义。例如,1 表示请求路由信息,2表示对请求路由信息的响应或未被请求而发出的路由更新报文。首部后面的“必为0”是为了4字节字的对齐。
RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用20个字节。地址族标识符(又称为地址类别) 字段用来标志所使用的地址协议。如采用 IP 地址就令这个字段的值为 2(原来考虑RIP也可用于其他非TCP/IP协议的情况)。路由标记填入自治系统号 ASN (Autonomous System Number),这是考虑使 RIP 有可能收到本自治系统以外的路由选择信息。
再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
一个RIP报文最多可包括25个路由,因而RIP报文的最大长度是 4+20 x 25 = 504 字节。超过就得再用一个RIP 报文。
RIP 协议好消息传播得快,而坏消息传播得慢。
RIP协议最大的优点就是实现简单,开销较小。
RIP协议的缺点也较多。首先,RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。其次,路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。最后,“坏消息传播得慢”,使更新过程的收敛时间过长。
内部网关协议 OSPF
开放最短路径优先 OSPF(Open Shortest Path First) 是为克服RIP的缺点开发出来的。
OSPF的原理很简单,但实现起来却较复杂。
OSPF 最主要的特征就是使用分布式的链路状态协议(link state protocol),而不是像RIP那样的距离向量协议。
和 RIP 协议相比,OSPF和RIP的不同点:
(1)向本自治系统中所有路由器发送信息。
路由器通过所有输出端口向所有相邻的路由器发送信息。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。RIP协议是仅仅向自己相邻的几个路由器发送信息。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
所谓链路状态就是说明本路由器都和哪些路由器相邻,以及该链路的度量(metric)。对于RIP协议,发送的信息是到所有网络的距离和下一跳路由器。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
RIP 不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库(link-state database),这个数据库实际上就是全网的拓扑结构图。这个拓扑结构图在全网范围内是一致的(这称为链路状态数据库的同步)。因此,每一个路由器都知道全网共有多少个路由器,以及哪些路由器是相连的,其代价是多少,等等。每一个路由器使用链路状态数据库中的数据,构造出自己的路由表(例如,使用 Dijkstra 的最短路径路由算法)。
RIP协议的每一个路由器虽然知道到所有的网络的距离以及下一跳路由器,但却不知道全网的拓扑结构(只有到了下一跳路由器,才能知道再下一跳应当怎样走)。
OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域(area)。
为了使每一个区域能够和本区域以外的区域进行通信,OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbonearea)。主干区域的标识符规定为 0.0.0.0。主干区域的作用是用来连通其他在下层的区域。从其他区域来的信息都由区域边界路由器(area border router)进行概括。每一个区域至少应当有一个区域边界路由器,图中的 R3,R4,R7。
在主干区域内的路由器叫做主干路由器(backbone router),图中的 R3,R4,R5,R6,R7。一个主干路由器可以同时是区域边界路由器,图中的 R3,R4,R7。在主干区域内还要有一个路由器专门和本自治系统外的其他自治系统交换路由信息。这样的路由器叫作自治系统边界路由器,图中的 R6。
采用分层次划分区域的方法虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了。但这样做却能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。
OSPF 不用 UDP 而是直接用 IP 数据报传送(其IP数据报首部的协议字段值为89)。OSPF构成的数据报很短。这样做可减少路由信息的通信量。数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF 分组使用 24 字节的固定长度首部,分组的数据部分可以是五种类型分组中的一种。
OSPF首部各字段的意义:
(1)版本:当前的版本号是2。
(2)类型:可以是五种类型分组中的一种。
(3)分组长度:包括OSPF首部在内的分组长度,以字节为单位。
(4)路由器标识符:标志发送该分组的路由器的接口的IP地址。
(5)区域标识符:分组属于的区域的标识符。
(6)检验和:用来检测分组中的差错。
(7)鉴别类型:目前只有两种。0(不用)和1(口令)。
(8)鉴别:鉴别类型为 0 时就填 入0。鉴别类型为1则填入8个字符的口令。
OSPF 的五种分组类型
(1)类型1,问候(Hello)分组,用来发现和维持邻站的可达性。
(2)类型2,数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
(3)类型3,链路状态请求(Link State Request)分组,向对方请求发送某些链路状态项目的详细信息。
(4)类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。这种分组是最复杂的,也是OSPF 协议最核心的部分。路由器使用这种分组将其链路状态通知给邻站。链路状态更新分组共有五种不同的链路状态。
(5)类型5,链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。
若 N 个路由器连接在一个以太网上,则每个路由器要向其他 (N - 1) 个路由器发送链路状态信息,因而共有 (N -1)^2 个链路状态要在这个以太网上传送。OSPF协议对这种多点接入的局域网采用了指定的路由器(designated router)的方法,使广播的信息量大大减少。指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
外部网关协议 BGP
边界网关协议 BGP 是不同 AS 的路由器之间交换路由信息的协议。
使用 BGP 的两个原因:
1.因特网的规模太大,使得AS之间路由选择非常困难。
2.AS之间的路由选择必须考虑有关策略。
因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由 。BGP采用了路径向量(path vector)路由选择协议,它与距离向量协议和链路状态协议都有很大的区别。
BGP的基本原理:
自治系统(AS): BGP操作在自治系统之间,每个自治系统都有唯一的标识符。BGP通过交换路由信息来实现 AS 之间的连接。
路径矢量协议: BGP属于路径矢量协议,与传统的内部网关协议(IGP)不同,其目标是实现跨 AS 的路由选择。
前缀长度: BGP 使用前缀长度来表示网络地址块的大小,支持 CIDR(无类别域间路由)和 VLSM(可变长度子网掩码)。
在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
BGP-4的四种报文:
(1) OPEN (打开)报文,用来与相邻的另一个 BGP发言人建立关系,使通信初始化。
(2) UPDATE(更新)报文,用来通告某一路由的信息,以及列出要撤消的多条路由。
(3) KEEPALIVE(保活)报文,用来周期性地证实邻站的连通性。
(4) NOTIFICATION (通知)报文,用来发送检测到的差错。
上图给出了 BGP 报文的格式。四种类型的 BGP 报文具有同样的通用首部,其长度为19字节。通用首部分为三个字段。**标记(marker)**字段为16字节长,用来鉴别收到的 BGP 报文。当不使用鉴别时,标记字段要置为全1。长度字段指出包括通用首部在内的整个 BGP 报文以字节为单位的长度,最小值是19,最大值是4096。类型字段的值为1到4,分别对应于上述四种BGP报文中的一种。
OPEN 报文共有 6 个字段,即版本(1字节,现在的值是4)、本自治系统号(2字节,使用全球唯一的16位自治系统号,由 ICANN 地区登记机构分配)、保持时间(2字节,以秒计算的保持为邻站关系的时间)、BGP标识符(4字节,通常就是该路由器的IP地址)、可选参数长度(1宇节)和可选参数。
UPDATE 报文共有5个字段,即不可行路由长度(2字节,指明下一个字段的长度)、撤消的路由(列出所有要撤消的路由)、路径属性总长度(2字节,指明下一个字段的长度)、路径属性(定义在这个报文中增加的路径的属性)和网络层可达性信息 NLRI(Network Layer Reachability Information)。最后这个字段定义发出此报文的网络,包括网络前缀的位数、IP地址前缀。
KEEPALIVE报文只有BGP的19字节长的通用首部。
NOTIFICATION报文有3个字段,即差错代码(1字节)、差错子代码(1字节)和差错数据(给出有关差错的诊断信息)。
BGP的特性:
策略路由: BGP是一种策略性路由协议,允许网络管理员根据政策进行路由选择。这使得BGP在实际应用中更加灵活。
路由聚合: BGP支持路由聚合,即将多个具体的路由聚合为一个更大的路由。这有助于减小互联网路由表的规模。
BGP会话: BGP使用TCP协议来建立可靠的连接,通过BGP会话交换路由信息。
有点复杂。。。。。
路由器的构成
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
路由选择部分也叫做控制部分,其核心构件是路由选择处理机。
路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口(这里的端口就是硬件接口)。
交换结构(switching fabric)又称为交换组织,它的作用就是根据转发表(forwarding table)对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去
路由表一般仅包含从目的网络到下一跳(用IP地址表示,下一节就讨论什么是IP地址)的映射,而转发表是从路由表得出的。转发表必须包含完成转发功能所必须的信息。这就是说,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息(如下一跳的以太网地址)的映射。
当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到另一个分组。这个后到的分组就必须在队列中排队等待,因而会产生一定的时延。
当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。数据链路层处理模块把分组加上链路层的首部和尾部,交给物理层后发送到外部线路。
IP 多播
在因特网上进行多播就叫做 IP 多播。IP多播所传送的分组需要使用多播IP地址。
IP多播(IP Multicast)是一种在Internet协议(IP)网络中向多个主机传递相同数据的通信方法。与单播(Unicast,一对一通信)和广播(Broadcast,一对所有通信)不同,多播允许一对多的通信,同时提供了更有效的资源利用和更低的网络负载。
特点:
1.一对多通信: IP多播允许一个源向一个特定组中的多个目的地发送数据。
2.动态成员资格: 主机可以动态地加入或离开多播组,使得网络具有灵活性和可扩展性。
3.单向通信: 数据只从源传输到多播组的成员,而不允许成员向组内其他成员发送消息。这使得多播更适合用于分发内容、流媒体等场景。
4.有效使用带宽: 目的地主机仅接收它们关心的多播组的数据,而不会浪费带宽接收不必要的数据。
多播地址只能用于目的地址,而不能用于源地址。
IP多播可以分为两种。一种是只在本局域网上进行硬件多播,另一种则是在因特网范围进行多播。
工作原理:
IP多播地址: 多播组使用特殊的IP地址范围(224.0.0.0到239.255.255.255),标识不同的多播组。IPv6中有专用的多播地址范围。
网际组管理协议IGMP(Internet Group Management Protocol): 主机通过IGMP协议通知路由器它们对哪些多播组感兴趣。路由器使用这些信息来维护多播组成员资格。
路由协议: 在IP多播中,路由器需要支持多播路由协议,如协议无关多播 PIM(Protocol Independent Multicast)协议,以确保多播数据正确到达多播组的成员。
数据分发: 源主机将数据发送到一个多播组的IP地址。路由器使用多播路由协议确保数据只传递到对应多播组的成员。
成员资格管理: 主机可以通过IGMP协议通知路由器加入或离开多播组。路由器根据这些信息动态更新成员资格表。
源/组管理:PIM协议负责处理源主机和多播组之间的通信,确保数据能够正确到达多播组的成员。
虚拟专用网 VPN 和网络地址转换 NAT
虚拟专用网 VPN
VPN是一种通过公共网络(通常是互联网)建立私有网络连接的技术。它创建了一条加密的通道,允许远程用户或分支机构以安全的方式访问组织内部的网络资源。
工作原理: VPN使用加密和隧道技术,将数据封装在安全的通道中传输。它可以通过多种协议实现,如IPsec、SSL/TLS等。
应用场景:
远程访问:员工可以通过互联网安全地访问公司内部网络。
分支连接:不同地点的分支机构可以通过VPN连接到总部网络。
保护隐私:VPN可以用于在公共网络上加密通信,保护用户的隐私。
类型:
远程访问VPN:用于远程用户连接到公司网络。
站点到站点VPN:用于连接两个或多个地理位置的网络。
网络地址转换 NAT
NAT是一种网络技术,它允许将内部网络的私有IP地址映射到外部网络的公共IP地址,从而在内部网络和外部网络之间建立连接。
工作原理: NAT通过修改数据包的源IP地址和目标IP地址,实现在私有网络和公共网络之间进行数据传输。最常见的形式是将多个内部设备的私有IP地址映射到一个公共IP地址。
类型:
静态NAT:将内部私有IP地址静态映射到公共IP地址。
动态NAT:动态地将内部私有IP地址映射到一组可用的公共IP地址。
PAT(端口地址转换):将多个内部设备的私有IP地址映射到同一个公共IP地址,通过不同的端口号区分
感觉有些东西没必要细究,有些东西感觉这辈子,,,用不上,浪费时间。。。。。。
谢希仁第五版《计算机网络》学习笔记
相关文章:
计算机网络(4):网络层
网络层提供的两种服务 虚电路服务(Virtual Circuit Service)和数据报服务(Datagram Service)是在网络层(第三层)提供的两种不同的通信服务。它们主要区别在于建立连接的方式和数据传输的方式。 虚电路服务…...
动态内存分配(malloc和free、calloc和realloc)
目录 一、为什么要有动态内存分配 二、C/C中程序内存区域划分 三、malloc和free 2.1、malloc 2.2、free 四、calloc和realloc 3.1、calloc 3.2、realloc 3.3realloc在调整内存空间的是存在两种情况: 3.4realloc有malloc的功能 五、常见的动…...
C语言---井字棋(三子棋)
Tic-Tac-Toe 1 游戏介绍和随机数1.1 游戏介绍1.2 随机数的生成1.3 棋盘大小和符号 2 设计游戏2.1 初始化棋盘2.2 打印棋盘2.3 玩家下棋2.4 电脑下棋2.5 判断输赢2.6 game()函数2.7 main()函数 3 完整三子棋代码3.1 Tic_Tac_Toe.h3.2 Tic_Tac_Toe.c3.3 Test.c 4 游戏代码的缺陷 …...
[Kubernetes]3. k8s集群Service详解
在上一节讲解了k8s 的pod,deployment,以及借助pod,deployment来部署项目,但会存在问题: 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod访问还需要端口转发Pod重创后IP变了,名字也变了针对上面的问题,可以借助Service来解决,下面就来看看Service怎么使用 一.Service详…...
C++ 指定范围内递增初始化一个vector<int> | Python: list(range(31, 90))
通过lambda表达式 std::iota()实现: template <typename Tp> inline void print_vec(const std::vector<Tp>& vec) {fmt::print("[{}]\n", fmt::join(vec, ", ")); }// 相当于Python的lst list(range(31, 90))const std::ve…...
【Java之数据结构与算法】
选择排序 package Code01;public class Code01_SelectionSort {public static void selectionSort(int[] arr) {if(arrnull||arr.length<2) {return;}for(int i0;i<arr.length;i) {int minIndex i;for(int ji1;j<arr.length;j) {minIndex arr[minIndex] > arr[j…...
爬虫scrapy中间件的使用
爬虫scrapy中间件的使用 学习目标: 应用 scrapy中使用间件使用随机UA的方法应用 scrapy中使用代理ip的的方法应用 scrapy与selenium配合使用 1. scrapy中间件的分类和作用 1.1 scrapy中间件的分类 根据scrapy运行流程中所在位置不同分为: 下载中间件…...
普冉(PUYA)单片机开发笔记 [完结篇]:使用体会
失败的移植:FreeRTOS 当使用了 PY32F003 的各种接口和功能后,手痒痒想把 FreeRTOS 也搬到这个 MCU 上,参考 STM32 和 GD32 对 FreeRTOS 的移植步骤,把 FreeRTOS v202212.00 版本的源码搬到了 Keil 工程中,编译倒是通过…...
Elasticsearch:生成 AI 中的微调与 RAG
在自然语言处理 (NLP) 领域,出现了两种卓越的技术,每种技术都有其独特的功能:微调大型语言模型 (LLM) 和 RAG(检索增强生成)。 这些方法极大地影响了我们利用语言模型的方式,使它们更加通用和有效。 在本文…...
ip静态好还是dhcp好?
选择使用静态 IP 还是 DHCP(动态主机配置协议)取决于您的网络需求和环境。下面是它们的一些特点和适用场景: 静态 IP: 固定的 IP 地址:静态 IP 是手动配置在设备上的固定 IP 地址,不会随时间或网络变化而改…...
PolarDB-X、OceanBase、CockroachDB、TiDB二级索引写入性能测评
为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中,从使用体验的角度看…...
Convolutional Neural Network(CNN)——卷积神经网络
1.NN的局限性 拓展性差 NN的计算量大性能差,不利于在不同规模的数据集上有效运行若输入维度发生变化,需要修改并重新训练网络容易过拟合 全连接导致参数量特别多,容易过拟合如果增加更多层,参数量会翻倍无法有效利用局部特征 输入…...
鸿蒙开发基本概念
1、开发准备 1.1、UI框架 HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。 方舟开发框架针对不同目的和技术…...
Open CV 图像处理基础:(二)从基本概念到实践操作
Open CV 图像处理基础:从基本概念到实践操作 一、引言 图像处理是计算机视觉领域的一个重要分支,它涉及对图像的各种操作和处理。了解图像的基本概念、读取和显示方法以及基本操作是图像处理的基础。本文将通过示例文章的形式,帮助初学者逐…...
【MAC】M2 安装docker 与 mysql
一、docker下载地址 下载地址 二、安装docker完成 罗列一下docker常用命令 # 查看docker版本 docker --version# 拉取镜像 docker pull 镜像名# 查看当前所有镜像 docker images# 查看运行中的容器 docker ps -a docker ps grep| 镜像名#镜像启动操作: sudo dock…...
轻量级web开发框架Flask本地部署及无公网ip远程访问界面
文章目录 前言1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 前言 本篇文章讲解如何在本地安装Flask,以及如何将其web界面发布到公网上并进行远程访问。 Flask是目前十分流行的web框架,采用P…...
用最通俗的语言讲解 TCP “三次握手,四次挥手”
目录 一. 前言 二. TCP 报文的头部结构 三. 三次握手 3.1. 三次握手过程 3.2. 为什么要三次握手 四. 四次挥手 4.1. 四次挥手过程 4.2. 为什么要四次挥手 五. 大白话说 5.1. 大白话说三次握手 5.2. 大白话说四次挥手 六. 总结 一. 前言 TCP 是一种面向连接的、可靠…...
使用RedisCacheWriter#clean在线异步地批量扫描匹配删除缓存数据-spring-data-redis
1.背景 生产环境,某云的某个业务Redis实例,触发内存使用率,连续 3 次 平均值 > 85 %告警。 运维同学告知,看看需要怎么优化或者升级配置?分享了其实例RDB的内存剖析链接。 通过内存剖析详情发现,存在某…...
机器视觉:AI赋能缺陷检测,铸就芯片产品的大算力与高能效
导言:近年来,国内芯片行业快速发展,市场对芯片需求的不断增大,芯片的缺陷检测压力也越来越大。芯片产品在生产制造过程中,需要经历数道工序,每个生产环节的材料、环境、工艺参数等都有可能造成产品缺陷。不…...
(9)Linux Git的介绍以及缓冲区
💭 前言 本章我们先对缓冲区的概念进行一个详细的探究,之后会带着大家一步步去编写一个简陋的 "进度条" 小程序。最后我们来介绍一下 Git,着重讲解一下 Git 三板斧,一般只要掌握三板斧就基本够用了。 缓冲区ÿ…...
华为云之ECS云产品快速入门
华为云之ECS云产品快速入门 一、ECS云服务器介绍二、本次实践目标三、创建虚拟私有云VPC1.虚拟私有云VPC介绍2.进入虚拟私有云VPC管理页面3.创建虚拟私有云4.查看创建的VPC 四、创建弹性云服务器ECS——Linux1.进入ECS购买界面2.创建弹性云服务器(Linux)——基础配置步骤3.创建…...
tcp 的限制 (TCP_WRAPPERS)
#江南的江 #每日鸡汤:青春是打开了就合不上的书,人生是踏上了就回不了头的路,爱情是扔出了就收不回的赌注。 #初心和目标:拿到高级网络工程师 TCP_WRAPPERs Tcp_wrappers 对于七层模型中是位于第四层的安全工具,他…...
如何保证架构的质量
1. 如何保证架构的质量: ①. 稳定性、健壮性(1). 系统稳定性: ①. 定义:a. 当一个实际的系统处于一个平衡的状态时,如果受到外来作用的影响时,系统经过一个过渡过程仍然能够回到原来的平衡状态.b. 可以说这个系统是稳定的,否则系统不稳定c. 如一根绳子绑着小球,处于垂直状态,…...
JavaWeb笔记之前端开发JavaScript
一、引言 1.1 简介 JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。 它的解释器被称为JavaScript引擎,作为浏览器的一部分,广泛用于客户端的脚本语言,用来给HTML网页增加…...
SCAU:18063 圈中的游戏
18063 圈中的游戏 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC Description 有n个人围成一圈,从第1个人开始报数1、2、3,每报到3的人退出圈子。编程使用链表找出最后留下的人。输入格式 输入一个数n&a…...
.NET Core中鉴权 Authentication Authorization
Authentication: 鉴定身份信息,例如用户有没有登录,用户基本信息 Authorization: 判定用户有没有权限 使用框架提供的Cookie鉴权方式 1.首先在服务容器注入鉴权服务和Cookie服务支持 services.AddAuthentication(options > {options.DefaultAuthe…...
PyTorch深度学习实战(26)——卷积自编码器(Convolutional Autoencoder)
PyTorch深度学习实战(26)——卷积自编码器 0. 前言1. 卷积自编码器2. 使用 t-SNE 对相似图像进行分组小结系列链接 0. 前言 我们已经学习了自编码器 (AutoEncoder) 的原理,并使用 PyTorch 搭建了全连接自编码器,但我们使用的数据…...
Milvus实战:构建QA系统及推荐系统
Milvus简介 全民AI的时代已经在趋势之中,各类应用层出不穷,而想要构建一个完善的AI应用/系统,底层存储是不可缺少的一个组件。 与传统数据库或大数据存储不同的是,这种场景下则需要选择向量数据库,是专门用来存储和查…...
使用Docker部署Nexus Maven私有仓库并结合Cpolar实现远程访问
文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…...
GEE-Sentinel-2月度时间序列数据合成并导出
系列文章目录 第一章:时间序列数据合成 文章目录 系列文章目录前言时间序列数据合成总结 前言 利用每个月可获取植被指数数据取均值,合成月度平均植被指数,然后将12个月中的数据合成一个12波段的时间数据合成数据。 时间序列数据合成 代码…...
做一个产品网站要多少钱/seo搜索排名优化公司
文章目录一、今日成绩二、错题总结第一题三、知识查缺题目及解析来源:2023年04月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 依据题目画出PERT图如下: 关键路径长度(从起点到终点的路径中最长的一条&#x…...
微信运营推广方案/北京做的好的seo公司
目录 一、概述 二、内部类的分类 1、成员内部类 2、局部内部类 三、匿名内部类 1、匿名内部类含义 2、匿名内部类的作用与格式 一、概述 将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称之为内部类&#x…...
南通网站建设方案服务/重庆seo排名优化
1,先到Oracle网站下载Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 根据你的操作系统选择不同的Instant Client版本 下载回是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:…...
搭建wordpress用哪种系统/百度提交网站入口网址
1. 验证码功能 验证怎么来的? 前端实现后端实现,需要用到Java的图片类,生产一个图片 示例: ImageServlet.java package com.tian.servlet;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpS…...
html门户网站开发源代码/百度软件下载
Web 不论你在 web 上做什么, 都离不开请求和响应, web请求作为某个用户交互的结果由web浏览器发送到web服务器, 在web服务器上, 会生成web响应(或应答)并发回到 web 浏览器. 如果web请求的是静态内容, 比如一个Html文件, 图像或者是存储在web服务器硬盘上的其他内容, web服务器…...
企业营销型网站应该有哪些内容/广告联盟赚钱app
在学习HTML阶段的最后,我们会涉及到学习语义化标签,明明用div等标签就可以构成页面,那么为什么还会有语义化标签的存在?语义化标签到底是什么?学好语义化标签又会在哪方面应用?接下来会从上面几个方面说一下…...