互联网计算系列整理主要内容来自软院 2020 级学长 EagleBear2002 的博客,为博主阅读后提炼整理的内容。
内容不算全面,仅推荐大家复习时参考。
# 网络层概述
MAC 地址不能跨网段,IP 地址可以跨网段
第三层只能避免拥塞,但是要到第四层(运输层)才能完成流量控制 **(第三层不能完成流量控制)**
第三层的基本传输单位是 Packet 报文
# 第三层职责
划分广播域
分层寻址
细分网络并控制流量(?
减少交通拥堵
与其他网络交谈
跨介质的逻辑理解和接通
只负责连通和传达,不保证数据可靠性
# 设备
# 路由器
互连网段或网络(不同网段的分割)
根据 IP 地址做出合理的决定
根据路由表确定最佳路径
将数据包从入站端口切换到出站端口
当源网段与目标网段不同时路由器会进行转发,反之则不会
# IP 地址和子网划分
# IPv4 报文主要结构
# 首部部分
上面蓝框部分的整体是首部部分
# 首部长度
占 4 bit,可表示的最大数值是 15 个单位(一个单位为 4 字节) 因此 IP 的首部长度的最大值是 60 字节。
因为首部长度是不确定的,所以我们需要进行标识。(用来方便读取)
首部长度的 32bit 为一行,也就是 4 个字节为一个单位
所以 IP 报文首部字段长度最大为 15 行
# 总长度
占 16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节(由于放到帧里面,所以大多数不比 1500 字节长)
好像不会考 IPv4 报文结构,后面略
# 网络层地址
IPv4 地址为 32 位长,它们以点分十进制格式表示为四个八位字节
两个组成部分:
网络 ID Network:标识网段
主机 ID Host:设别该网段上的特定设备
# IP 地址
# 分类
主要通过第一个字节进行划分
0-127(0xxxxxxx)A 类地址
128-191(10xxxxxx)B 类地址
192-223(110xxxxx)C 类地址
224-239(1110xxxx)D 类地址:多播(multicast):视频点播的原理也是组播(多播)
240-255(1111xxxx)E 类地址:研究(Research)
host 不能全取 0,也不能全取 1。全取 0 时用来标识网段地址;全取 1 时用来标识网段的广播地址
# 主机的数量
每个类别的最大主机数量各不相同。(不包含网络号)
A 类拥有 16,777,214 个可用主机(224 - 2)
B 类具有 65,534 个可用主机(216 - 2)
C 类具有 254 个可用主机(28 -2)
减 2 是因为去掉网络地址和广播地址
# 保留(Reserved)地址
网络地址:在地址的主机部分中以二进制 0 结尾的 IP 地址
A 类网络地址示例:113.0.0.0
网络上的主机只有具有相同网络 ID 的其他主机才能直接通信。(用来确定是不是在一个网段里面)
广播地址:用于将数据发送到网络上的所有设备。(一般是一个网段之间的)
广播 IP 地址在地址的主机部分中以二进制 1 结尾。
B 类地址的广播地址的示例:176.10.255.255(decimal 255 = binary 11111111)
私有地址(Private IP Address)是用于局域网内部的地址,不能在公网上直接路由。私有地址的范围如下:即 10, 192.168, 172.16~172.31
10.0.0.0 到 10.255.255.255(10.0.0.0/8)
172.16.0.0 到 172.31.255.255(172.16.0.0/12)
192.168.0.0 到 192.168.255.255(192.168.0.0/16)
# 子网划分
从 Host 中借位进行子网划分
# 基本概念
子网减小了广播域,提供寻址灵活性
第五版书和 6f 已经不知道用了多少年的 ppt:子网最少借用位数为 2,因为全 0 和全 1 不可用。当然现在用 CIDR 无所谓这个了。
可以借用的最大位数可以是保留至少 2 位主机号的任何数字(给 Host 至少保留 2 位,因为 1 位的话,要么一个是 NET 无法使用,要么一个是广播地址)
# 子网划分的副产品:地址浪费
我们必须在所需的子网数,每个子网可接受的主机以及地址的浪费之间取得平衡(strike a balance)。
hostID 里面的全 0 和全 1 不能使用
subnet 不可以使用全 0 和全 1
借用 4 位是最高效率的,提升了划分灵活性,影响了效率
# 子网掩码
把网络位全赋值为 1,host 位全部赋值为 0,这样我们就明白哪些位上面是 net,哪些位上面是 host
# 计算子网
首先确定:全 0 / 全 1 的子网和主机都不可用。
如果你要划分 13 个子网,13+2=15,你需要借 4 位。
借用后看主机个数是否满足要求。如果不满足要求可能还要划分多个子网给它
子网的网络地址:将借用位改成对应的子网编号,后面主机位全 0.
举例:将 C 类地址 192.168.1.0 划分出两个子网。
借用 2 位,分别为 01/10
00000000 → 01000000
00000000 → 10000000
所以两个子网地址为 192.168.1.64 1992.168.1.128
# 第三层设备
# 路由器发送过程
从 A 网段发送到 B 网段,帧和报文发送到路由器,路由器理解报文后检查路由表,找到目的地对应端口,进行转发,形成了新的帧,其 mac 地址变成了 B 网段目标机器的 mac 地址。
# 路由器端口示例
路由器端口记录了网段的 IP 地址(和连接的地方是相同的)
接口是路由器连接到网络的附件,在 IP 路由中也可以称为端口。
这个 IP 地址往往被作为这个网络的网关
每个接口必须具有一个单独的唯一网络地址。
比如上图中 S1 和 S2 不能是相同的 IP 地址
路由器的连接的网段一定要是不同的
# IP 地址分配
静态地址分配
动态地址分配
# ARP 协议
Address Resolution Protocol 地址解析协议
ARP 使计算机能够查找与 IP 地址关联的计算机的 MAC 地址。
将目的方 IP 地址 -> 目的方 MAC 地址
# ARP 的操作
# ARP Request
源设备使用广播的方式发送一个 ARP 请求
向目的方请求 MAC 地址,即 ARP 请求
命令如图:就是找谁是这个主机,你的 MAC 地址是啥
将 MAC 地址设置为全 1,作为广播发送
# ARP Checking
接收到广播请求后:
若不是自己的 ip 地址,解析结束,但会记录下发送方的 MAC 地址
若是自己的 ip 地址,则进行 ARP Reply,同时也会记下发送方的 MAC 地址
# ARP Reply
单播,给发送方返回自己的 MAC 地址
# ARP Caching
发送方将对应条目写入 ARP Table 中
然后再次形成一个数据帧发送出去即可
ARP 请求是本网段形成的,是一个广播就可以。如果目的主机不在本网段中,那么不能跨网段进行广播
# 网络交流
如何与不在同一物理网段上的设备通信?
Default gateway 默认网关
Proxy ARP 代理 ARP
# 默认网关
默认网关是路由器上连接到源主机所在网段的接口的 IP 地址。
为了使设备将数据发送到另一个网段上的设备的地址,源设备将数据发送到默认网关。
发送报文到另一个网段,需要路由器把对应端口的网关的 MAC 告诉你,然后通过网关进行转发
# 代理 ARP
如果源主机未配置默认网关,发送 ARP 请求,然后路由器给你一个 ARP 的 reply,告诉你 MAC 地址(一般为路由器端口本网段的 IP 地址)
# 网络层服务
IP 是无连接系统。 IP 就是提供无连接的网络服务 Connetionless network
使用报文交换(Packet Switched)
将原始数据分为很多的子报文(单位),每个子报文(单位)自己选择路径进行发送。
大部分的 Connetionless network 都是基于 packet switched 进行实现,控制网络拥塞。
出现问题时候,我们只需要重传对应部分的报文就可以(不用重传全部数据)
# 网络协议操作
# 路由协议的分类
静态路由:网络管理员在路由器中手动输入路由信息。
动态路由
路由器可以在运行过程中互相学习信息。
使用路由协议更新路由信息。
RIP, IGRP, EIGRP, OSPF …
人工维护的代价比较大
# 静态路由和动态路由的区别
静态路由
用于隐藏部分网络。安全(不必进行路由表的交换)
测试网络中的特定链接。
用于仅在到达目标网络的路径时维护路由表。
动态路由
维护路由表。
以路由更新的形式及时分发信息。
依靠路由协议共享知识。
路由器可以调整以适应不断变化的网络状况。
打开后会启动进程,按照不同的协议,和网上的不同设备学习信息,然后根据算法生成路由表
# 动态路由协议的分类
内部网关协议和外部网关协议
内部网关协议 IGP(Interior Gateway Protocols,RIP,IGRP,EIGRP,OSPF)
外部网关协议 EGP(Exterior Gateway Protocols,EGP,BGP)
# 内部网关协议的分类:DVP and LSP
距离矢量协议 DVP(Distance-Vector Protocols,RIP, IGRP)
从邻居的角度查看网络拓扑
经常定期(periodic)更新
链路状态协议 LSP(Link State Protocols, OSPF)
获取整个网络拓扑的通用视图
事件触发的更新。如果没有事件发生那么就不会更新
# 距离矢量协议(DVP)
# RIP(Routing Information Protocol)路由信息协议
基于距离矢量的内部网关协议。
唯一的指标是跳数。
最大跳数为 15。(评判依据简单,是一个短板)
每 30 秒更新一次(广播),可以修改。
并非总是选择最快的路径(而是走跳数最短的路径)。
# 链路状态协议(LSP)
# OSPF(Open Shortest Path First)最短路径优先协议
指标由带宽,速度,流量,可靠性和安全性组成,本科阶段只考虑带宽的。
事件触发时更新。
# IGRP(Interior Gateway Routing Protocol) and EIGRP(Enhanced IGRP)
略
# 可变长度子网掩码 VLSM
可变长度子网掩码(Variable Length Subnet Mask,VLSM)
VLSM 只是一项功能,它允许单个自治系统的网络具有不同的子网掩码。
有效的解决网络号浪费的问题
使用 VLSM,网络管理员可以在主机少的网络上使用长掩码,而在主机多的子网上使用短掩码。(提供了很高的灵活性)
子网全 0 可以使用。全 1 不行
# 支持 VLSM 的路由协议
开放式最短路径优先(OSPF)
Integrated Intermediate System to Intermediate System(Integrated IS-IS) 集成中间系统到中间系统(集成 IS-IS)
增强型内部网关路由协议(EIGRP)
RIP v2
静态路由
# VLSM 的表示法
斜杠的含义是指前面多少位保留给网络位
此时也就是 / 30 就可以满足路由器之间的网络连通所需(减少浪费),剩下的网络地址可以在以后网络进行扩展
# VLSM 的例子
# 例子总结
重要的是要记住,只有未使用的子网才能进一步划分子网。
如果使用了子网中的任何地址,则该子网不能再进行子网划分。
一般是从主机多到主机少(路由间网络)进行划分
# 划分背景
已分配 192.168.10.0/24 的 C 类地址。
珀斯需要 60 个主机
KL 需要 28 个主机
悉尼和新加坡分别需要 12 位主机。
珀斯,悉尼和新加坡与吉隆坡建立 WAN 连接。(各需要 2 个网络号 / 主机)
先划分成大的子网,然后进一步进行划分,然后在慢慢进行细化
为了计算 VLSM 子网,各个主机首先从地址范围分配最大的需求。需求级别应从最大到最小列出。
划分过程
# 第一步:满足珀斯的主机需求
在此示例中,珀斯需要 60 个主机号。
使用 6 位,因为 26 - 2 = 62 个可用主机地址。因此,将从第四个八位位组开始使用 2 位来表示 / 26 的扩展网络前缀,其余 6 位将用于主机地址。
在地址 192.168.10.0/24 上应用 VLSM 可得到:
192.168.10.00 hh hhhh /26
255.255.255.192(1100 0000)
- 第一个给 Perth 使用,剩下的用作保留未使用的
# 第二步:为吉隆坡划分子网
吉隆坡需要 28 台主机号。192.168.10.63/26 之后的下一个可用地址是 192.168.10.64/26。
由于需要 28 个主机,因此主机地址需要 5 位,即 32-2 = 30 个可用主机地址。
因此,将需要 5 位来表示主机,而将使用 3 位来表示扩展网络前缀 / 27
在地址 192.168.10.64/26 上应用 VLSM 可得到:
192.168.10.010 hhhhh /27
255.255.255.224(1110 0000)
三个子网再借用一位
# 第三步:为悉尼和新加坡进行分配地址
现在,悉尼和新加坡分别需要 12 位主机号。 下一个可用地址从 192.168.10.96/27 开始。
由于需要 12 个主机,因此主机地址需要 4 位,即 24 = 16、16 - 2 = 14 个可用地址。
因此,需要 4 位来表示主机,对于 / 28 的扩展网络前缀需要 4 位。
在地址 192.168.10.96/27 上应用 VLSM 可得到:
192.168.10.0110 hhhh /28
255.255.255.240(1111 0000)
# 第四步:为之间的路由地址进行划分
现在为 WAN 连接分配地址。请记住,每个 WAN 连接都需要两个 IP 地址。下一个可用的子网是 192.168.10.128/28。
由于每个 WAN 链路需要 2 个网络地址,因此主机地址需要 2 位,即 22 -2 = 2 个可用地址。
因此,需要 2 位来表示链接,并需要 6 位来表示扩展网络前缀 / 30。
在 192.168.10.128/28 上应用 VLSM 可得到:
192.168.10.011000 hh /30
255.255.255.252(1111 1100)
- 通过上述方法,从主机需求量大的部分入手,到主机需求量小的部分是很好的方法。
# 路由聚集(Route Aggregation)
无类域间路由(CIDR,Classless InterDomain Routing)
使用无类域间路由(CIDR,Classless InterDomain Routing)和 VLSM 不仅可以防止地址浪费,而且还可以促进路由聚合或汇总。
多个路由条目汇聚成小的路由条目
比如如下图就是讲 3 个 / 24 的子网合并成一个 / 16 的网络高速远端
# 如何进行路由聚集
如何进行计算:将尽可能多的位进行聚集,将之后的不通过的位置,作为 Host 位,就得到了上图的结果
就是把前面相同的部分合并作为网络号,后面是主机号。
全 0 子网会在题目中说是否可用
全 1 子网尽量不要使用
# 因特网控制报文协议 ICMP
ICMP(Internet Control Message Protocol)因特网控制报文协议
ICMP(Internet Control Message Protocol):为了提高 IP 数据报交付成功的机会(消息管理和协商)
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP 只是 IP 层的协议
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
一般路由器在丢弃报文的时候(处理之前已经提到的情况),都会返回一个 ICMP 差错报文。
两种 ICMP 报文:
查询报文:一般这种情况不是很多
差错报告报文:一般这种类型会多一些
# PING(Packet InterNet Groper)
PING 是用 ICMP 的 "Echo request “和” Echo reply" 消息来实现的
PING 用来测试两个主机之间的连通性,一般是用来检查局域网的连通性:PING 不通,不仅仅是发送不过去,有可能是应答不回来。
PING 使用了 ICMP 回送请求与回送回答报文
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或 UDP
# 附:冲突域和广播域
冲突域(Collision Domain) 和 广播域(Broadcast Domain) 是网络中的两个重要概念,它们分别描述了网络中设备之间如何通过物理或逻辑结构进行通信、发生冲突或广播的范围。
# 1. 冲突域(Collision Domain)
冲突域 是指在同一个网络环境中,多个设备在同一时间发送数据时,可能会发生 数据冲突(Collision)的区域。简单来说,冲突域是指如果两个或多个设备在同一时刻同时发送数据,它们的信号可能会相互干扰,导致数据无法正确接收并需要重新发送。
# 特点:
冲突的发生:冲突发生时,数据会丢失,设备必须重新发送。这个问题发生在共享媒介(如集线器或无线网络)中。
影响范围:冲突域的范围通常是 共享介质(如集线器、同轴电缆)的连接部分。
减少冲突:通过使用 交换机(Switch) 或 路由器(Router),可以减少冲突,因为它们可以在物理层或数据链路层隔离不同的冲突域。
# 示例:
在一个使用 集线器(Hub) 的网络中,所有通过集线器连接的设备都在同一个冲突域内。如果两台设备同时发送数据,它们会发生冲突。
在一个使用 交换机(Switch) 的网络中,每个端口代表一个独立的冲突域,不同端口之间的数据传输不会发生冲突。
# 冲突域与设备:
集线器(Hub):将所有连接到它的设备置于同一冲突域。
网桥 (Bridge):每个端口形成一个独立的冲突域。
交换机(Switch):每个端口形成一个独立的冲突域。
路由器(Router):不会导致冲突域的形成,它们位于不同的网络之间,隔离了不同的冲突域。
# 2. 广播域(Broadcast Domain)
广播域 是指在一个局域网内,通过 广播(Broadcast)方式发送的数据包可以被所有设备接收到的区域。广播数据包会被网络中所有设备接收,除非该数据包遇到一个 路由器 或 VLAN(虚拟局域网) 等设备将其隔离。
# 特点:
广播的范围:广播域的范围通常是由 路由器 或 VLAN 划分的,所有在同一个广播域中的设备都可以接收到广播数据包。
广播风暴:如果广播域过大,可能会发生 广播风暴,即大量的广播包占用网络带宽,影响正常的通信。
隔离广播域:通过使用 路由器(Router) 或 VLAN(虚拟局域网),可以将一个广播域划分为多个子广播域,减少广播带来的负担。
# 示例:
在一个 交换机(Switch) 网络中,如果没有使用 VLAN,所有通过交换机连接的设备都在同一个广播域内。一个设备发送的广播数据包会被同一广播域内的所有设备接收到。
如果通过 路由器(Router) 或 VLAN 进行隔离,不同的广播域之间的设备无法接收到彼此的广播。
# 广播域与设备:
路由器(Router):用于将不同的广播域隔离开。广播数据包不能通过路由器转发,因此路由器可以有效地隔离不同的广播域。
VLAN:通过 VLAN 配置,可以将一个交换机划分为多个逻辑上的广播域。不同的 VLAN 之间的广播包不会相互传递。
# 3. 冲突域与广播域的区别
冲突域:指设备之间通过共享介质通信时可能会发生冲突的范围,发生冲突时,数据丢失需要重发。冲突域一般由物理设备(如集线器、交换机端口等)划分。
广播域:指广播数据包传播的范围,广播包会被同一广播域内的所有设备接收。广播域通常由路由器、VLAN 等设备划分。
# 4. 如何减少冲突域和广播域的范围
减少冲突域:
使用 交换机(Switch):交换机会将每个端口划分为独立的冲突域,避免多个设备在同一时刻发生冲突。
使用 全双工(Full Duplex)技术:在现代以太网中,大多数网络设备支持全双工通信,这样就可以避免冲突,因为数据可以在两个方向同时传输。
减少广播域:
使用 路由器(Router):路由器会将不同的广播域隔开,使得广播包无法跨越路由器进行传播。
使用 VLAN:VLAN 可以将一个物理交换机划分为多个逻辑广播域,从而有效减少广播的范围。
# 5. 冲突域与广播域的实际应用
- 在大型网络中,合理划分冲突域和广播域有助于提升网络性能和效率。例如,在企业网络中,通常使用 交换机 来减少冲突域,使用 路由器 或 VLAN 来划分广播域,从而有效减少广播风暴和冲突的发生。
总结来说:
冲突域 是指设备之间可能发生数据冲突的区域,冲突通常发生在共享媒介中。
广播域 是指广播数据包可以传播的区域,广播域通常由路由器或 VLAN 进行隔离。