文章目录
前言
本章将专注于已经学习的网络架构、第一层、第二层与第三层技术的复习,将以Q&A的形式展示。这一章只是一些知识的总结,具体还请看之前的文章。
网络架构
网络基础
What are the differences between data networks and voice networks?
数据网络和语音网络有何不同?
- 数据网络(data networks)是一种使用数字传输的通信网络。数字传输的数据的是一种离散信号(Discrete signal)。
- 语音网络(voice networks)中是语音信息以模拟连续信号(continuous analog signals)的形式传输的通信网络。
How many types of computer networks when it is classified by their scale?
按规模划分,计算机网络有几种类型?
计算机网络可以分为四种规模:
- Personal Area Networks(个域网,PAN)
- Local Area Networks(局域网, LAN)
- Metropolitan Area Networks(城域网, MAN)
- Wide Area Networks(广域网, WAN)
网络架构
What are the definitions of layers, protocols, and services in network architecture?
网络架构中的层、协议和服务的定义是什么?
- 层(layer)是按照不同功能(function)将网络架构划分成层级结构。每一层都有特定的功能。
- 协议(Protocols) 是每一层用于执行具体功能的规则集。协议描述并规定了某个层的操作,相当于函数的定义。
- 服务(Services) 是低层为高层提供的功能。每一层都利用下一层提供的服务来实现自身的功能,相当于函数的声明。
层级越低功能越简单,自下而上功能越复杂。
What are the famous reference models used in computer networks?
计算机网络中使用的著名参考模型有哪些?
著名的模型有OSI模型和TCP/IP模型,除此之外还有Digital Equipment Corporation net (DECnet), Systems Network Architecture (SNA)等。
What are the differences between OSI and TCP/IP reference model?
OSI 与 TCP/IP 参考模型有何不同?
围绕层、协议和服务进行分析。
- 层数不同。OSI模型有7层,TCP/IP模型只有4层。
- 协议不同。例如OSI模型有其独特的CLNP协议在其网络层,而TCP/IP模型中则是网络层的IP协议和传输层的TCP协议。
What are the names of seven layers in OSI and TCP/IP reference model?
OSI 和 TCP/IP 参考模型的每层是什么?
如图:
- OSI模型:应用层(Application), 表示层(Presentation), 会话层(Session), 传输层(Transport), 网络层(Network),数据链路层(Data Link), 物理层(Physical)
- TCP/IP模型:应用层(Application), 传输层(Transport), 网络层(Internet), 网络访问层(Network Access)
OSI和TCP/IP模型的功能与技术
What functions are defined in each layer?
OSI模型中每一层的功能有哪些?
- Layer 1: 通过有线/无线传输比特的功能。
- Layer 2: 媒体访问(数据传输顺序)和保证传输可靠的功能。其中比较重要的功能有:switching(交换), bridging(桥接)。
- Layer 3: 决定主机间的最佳传输路径。重要功能有:routing(路由)
- Layer 4: 保证主机之间的传输可靠。(关注整体数据传输,解决阻塞问题)
- Layer 5: 控制主机之间会话(Dialogue, 一个带有目的过程)的信息(数据的内容)与功能(开始与结束)。
- Layer 6: 控制数据(格式和信息)的展示的功能。
- Layer 7: 描述数据产生的功能,与网络应用进行交互。
What protocols are defined in each layer?
各层有哪些代表协议?
用TCP/IP模型举一些例子。
- 应用层有:
- Domain Name System (DNS):域名系统协议
- Hypertext Transfer Protocol (HTTP):超文本传输协议
- File Transfer Protocol (FTP):文件传输协议
- Simple Mail Transfer Protocol (SMTP):简单邮件传输协议
- Trivial File Transfer Protocol (TFTP):简单文件传输协议
- 传输层有:
- Transport Control Protocol (TCP):传输控制协议
- User Datagram Protocol (UDP):用户数据协议
- 网络层有:
- Internet Protocol (IP):网络协议
- Connection Less Network Protocol (CLNP):无连接网络协议,OSI模型中提出的。
- 网络访问层有:
- Ethernet:以太网协议
What addresses are defined in each layer?
各层中有哪些地址?
同样以TCP/IP协议作为例子,它有这四种主要的地址:
- layer 1:MAC地址
- layer 2:IP地址
- layer 3:Port number/端口号
- layer 4:Domain name/域名地址
What network devices are operating at each layer?
各层中有哪些主要设备?
常见的有:
- Physical Layer: Hubs(集线器), repeaters(中继器), cables(网线)
- Data Link Layer: Network adapters(网络适配器/网卡), switches(交换机), bridges(网桥)
- Network Layer: Routers(路由器), layer 3 switches
- Session Layer: Session border controllers(会话边界控制器)
- Application Layer: Gateways(网关), proxies(代理)
What are the technologies of LANs and WANs are usually designed in which layers?
局域网和广域网的技术通常是哪几层?
它们通常在模型的底层,例如在OSI模型中的第一第二层(layer 1 and layer 2)。
对于LAN:在L1,LAN一般使用以太网技术建立物理连接,在L2使用交换机或网桥进行数据交换。对于WAN:除了前两层技术外,还可能需要用到第三层技术进行路由。
数据封装
What is the process of data encapsulation?
数据封装的过程是怎么样的?
在OSI模型中,封装(Encapsulation)是指数据在各层向下传输过程中,被逐层添加该层的头部和尾部信息,形成带有headers和trailers的PDU。而反封装(De-encapsulation)则是数据在接收端向上层传递过程中,逐层移除该层添加的headers和trailers的过程。
因为封装的过程可以知道:安装了第k层协议的设备一定安装有0~k-1层协议。
封装简单来说就是将上层的PDU添加上本层的头部和尾部信息,它会让数据包逐渐变大;相反,反封装将让数据包越来越小。
在这个封装和反封装的过程中,要求封装者的对应层的协议和反封装者的对应层的协议相同。
例如:X作为发送主机进行封装。首先来到设备A,它只有第一层,此时它们的都使用cable进行连接。而到了设备B,它是一个三层设备,它同时也会安装有底层所有协议。X的第三层协议为IPv4,此时要求设备B也要安装IPv4协议才能反封装。但是此时设备B还可以安装有其他协议,例如IPv6,当传到设备Y时,第三层的协议必须和设备B一样为IPv6.
每两个发送方与接收方的协议必须一样,但接收方可以改变这个协议并发给下个接收方。
What PDUs are used in each layers?
每一层的PDU分别是什么?
- Physical Layer - Bits(比特)
- Data Link Layer - Frames(数据帧)
- Network Layer - Packets(数据包)
- Transport Layer - Segments(数据段) (TCP), Datagrams(数据报) (UDP)
- Session Layer - Data
- Presentation Layer - Data
- Application Layer - Data
What are the header format of common used PDUs in each layer?
各层常用 PDU 的报头格式是什么?
这要求我们熟悉常见协议的报头格式,下面是一些常见的报头。
以太网和IEEE 802.3:
它们的特点是:
- 以太网协议有:前导码,目的地址字段,源地址字段,类型(指出用以接收以太网处理后数据的高层协议),数据段,帧校验序列。
- IEEE 802.3则没有类型,而是长度,指示该字段之后帧校验字段之前的数据长度。
WIFI(IEEE 802.11):
无线帧的报头的长了很多。
IP协议——IPv4, IPv6:
IPv6 相比 IPv4 改进:
- 取消了IHL和校验和。 因为在数据链路层和传输层都会进行校验,因此 IPv6 直接取消了 IP 的校验。
- 取消了分片。 分片是耗时的过程,IPv6 不允许在中间路由器进行分片与重组,这种操作只能在源与目标主机,这将大大提高了路由器转发的速度。
- 取消选项字段。 IPv6中采用类似链表的结构,存在下一个头部字样指向下一个其他头部。删除了选项字段使得 IPv6 的头部成为固定长度的
40
字节。
TCP:
TCP协议很好辨别,因为它有一段序列号码和确认号码都是32bits.
UDP:
UDP协议非常的简单,它只专注于发送数据,而不保证数据的传输。
网络拓扑和术语
What is the unit of digital bandwidth and analog bandwidth?
数字带宽和模拟带宽的单位是什么?
在模拟系统中,模拟带宽的基本单位是赫兹 (Hz),即每秒周期数。
在数字系统中,带宽的基本单位是比特每秒 (bps)。
其中,对于bps的单位换算,与Byte不一样,有如下的单位换算:
1 Kbps = 1000 bps ≠ 1024 bps
1 Mbps = 1000000 bps = 106 bps
1 Gbps = 1000,000,000 bps = 109 bps
1 Tbps = 1000,000,000,000 bps = 1012 bps
可以做一个简单的小计算:传输1GB的文件,速度为1 Kbps,需要的时间为:
(1 x 10243 x 8) / 1x103
因为计算机使用的是二进制系统,所以对于Byte来说每个单位都是以1024为基数递增的。因为1 Byte等于8 bits,所以1GB
等于1 x 10243 x 8 Kbits
。
What is the definition of bandwidth and throughput, and baud? What is the relationship among bandwidth, throughput, and baud?
带宽、吞吐量和波特的定义是什么?带宽、吞吐量和波特之间的关系是什么?
- 带宽(Bandwidth)是在给定时间内通过网络连接能够传输的最大信息量。
- 吞吐量(Throughput)指的是在一定时间内经过网络连接实际传输的数据量。
- 波特(baud)表示每秒信号状态变化次数。
它们的关系为:
Throughput ≤ Bandwidth
bit rate = baud log2 L
What is the difference between the transmission delay and propagation delay?
传输延迟和传播延迟有什么区别?
- 传播时延(Propagation delay)是信号在传输介质上传播所需时间的测量。
- 传输时延(Transmission delay)是将一个数据包的所有比特推送到传输链路上所需的时间。
- 传送时延(Transfer delay)是指数据包从源主机到目的主机之间从发送到接收的延迟总和。
Transfer delay = Propagation delay + Transmission delay
我们很容易可以得到这样的公式:
- Propagation delay = Length of Cable / Speed of Signal,它只与长度有关,传播的速度一般是一定的。
- Transmission delay = Size of Message / Speed of Transmission,它与传输的大小有关。
相关计算我们可以看之前的例子:
物理层与数据链路层技术
网络媒介
What carrier signals are used in the network media of copper, optical fiber and wireless?
网线(铜线)、光纤和无线网络介质使用哪些载波信号?
物理媒介/Physical media | 载波信号/Carrier signals |
---|---|
铜线/Copper wires | 电压/Electrical voltages |
光纤/Optical fiber | 光学模式/Light patterns |
无线/Vacuum | 调制电磁波/Modulated electromagnetic waves |
What is the purpose of encoding and modulation?
编码和调制的目的是什么?
- 编码(Encoding)是一种将逻辑二进制数据转换为物理信号的方法。
- 调制(Modulation)是一种将一个或多个周期性的载波混入想发送之信号的技术。
- 它们的目的是:在数据传输中进行信号转换和处理,以实现可靠、高效的通信。
编码分为:
- Transistor-Transistor Logic (TTL) (Level driven):晶体管逻辑,具有比较明显的高低信号,变化频率低,效率高。
- Manchester (Edge driven): 曼切斯特编码,是二进制边缘触发,变化频率高,效率低。
如图:
(经典TTL,0表示低信号,1表示高信号。缺点:无法判断无信号和低信号)
(其他TTL,缺点:多个同bit时无法知道个数)
(Manchester,一个信号变化两次,边缘触发,缺点:变化频率高)
(Multi-Level Threshold-3 Manchester,当为1时转变为下一循环位置,为0时不变。缺点:比较复杂)
在日常使用中,Fast Ethernet(100-Mbps Ethernet)采用4B/5B技术进行编码,发送5位来表示4位。同时发送时,使用MLT3(Multi-Level Threshold-3)进行编码。
而现在升级的Gigabit Ethernet(1000-Mbps Ethernet)采用8B/10B进行编码。
网络链路层技术
What is the media access method of CSMA/CD?
CSMA/CD 的媒介访问方法是什么?当以太网发生冲突时,主机如何使用 尝试传输?
这一部分主要理解概念和理解算法,请见:
以太网交换
What is bridging?
什么是桥接?
桥接(bridging)是一种技术,网桥设备将两个或多个局域网段连接起来。
当数据报传入时,若网桥知道数据报的目的地与数据报的源网段在同一网段上,它会丢弃该数据报;若网桥知道目的地在另一个网段上,则只在该网段上传输数据报;如果网桥不知道目的地网段,则在源网段以外的所有网段上传输数据报(广播)。
桥接的主要好处是将流量限制在某些网段。
交换机使用接收帧中的哪些地址来建立交换表并做出转发决定?
交换机使用Source MAC Address来建立交换表,建立一个映射关系,例如MAC1 -->(At) Port 1.
同时使用Destination MAC Address进行
有一个例子:
在如图的网络结构中,存在一个网桥和四台主机,初始化情况下桥接表为空表,只有当Source MAC经过网桥时才会被记录。
我们依次执行如下操作:
- A->B:此时桥接表为空,帧会被广播到冲突域中各个主机,B, C, D都能收到信息。信息经过网桥的时候知道了Source MAC为A,在Port1这一侧。
- B->A:此时桥接表已经存在A的MAC地址了,当广播到达Port1的时候,会被网桥阻断,从而只有A收到了消息,同时B写入桥接表。
- C->A:此时桥接表已经存在A的MAC地址了,但是不在Port2这一侧,故另一侧也都会传播到,A, B, D都收到了消息,同时C写入桥接表。
- A->C:此时桥接表已经存在C的MAC地址了,在Port2那一侧,消息会通过网桥,此时桥接表已经存在A的MAC地址了。
- D->C:此时桥接表已经存在C的MAC地址了,和D在同一侧,消息会被网桥阻断,同时D写入桥接表。
操作结束后,桥接表如图:
What is the definition of broadcast domain and collision domain?
广播域和冲突域的定义是什么?
- 广播域是指一个网络中,当一台设备发送广播帧时,能够接收到该广播帧的所有设备的集合。通常由第三层设备分隔开。
- 冲突域是指一个网络中,当多台设备同时发送数据帧时,这些数据帧可能会发生碰撞的区域。通常由第二层设备分隔开。
我们有一些例子来复习这些概念:
How many collision domains and broadcast domains are there?
找到其中L1,L2和L3 domain。以及子网数。
首先L1 domain是每个设备物理连接之间都会存在的,故只需要数有多少个物理连接即可。如图绿色框有17个,L1 domain有17个。
接下来到L2 domain,它被第二层设备(Switch)或第三层设备(Router)隔开,故连接着这些设备的各个接口对应着各个冲突域。如图橙色圆圈部分,一共有14个。
最后是L3 domain,它被第三层设备(Router)隔开,故连接着这些设备的各个接口对应着各个广播域。如图红色圆圈部分,一共有8个。
子网的个数与L3 domain相关,故有8个子网。
Q1: In an Ethernet network, lf PC1 sends a frme to PC4, and at the same time, PC3 sends a frame to PC2.Will these two transmissions success or not?
Q2: If a collision was detected in above transnission, which two PCs have to wait for an extra period to re-send the frame at next attempt?
Q3: If PC1 is sending a frame on this network which PCs have to wait until PC1 completes thetransmission?
Q4: What happens about the collision, if all hubs are replaced by the switches, and full duplex issupported on the switches?
问题 1:在以太网网络中,如果 PC1 向 PC4 发送一个帧,同时 PC3 向 PC2 发送一个帧,这两次传输是否会成功?
问题 2:如果在上述传输中检测到冲突,那么哪两台 PC 在下一次尝试重新发送帧时需要多等待一段时间?
问题 3:如果 PC1 在该网络上发送帧,哪些 PC 需要等待直到 PC1 完成传输?
问题 4:如果交换机取代了所有集线器(hubs),并且交换机支持全双工(full duplex),冲突会怎样?
- 我们发现这个网络中,PC1, PC2, PC3处于同一L2 domain中,它们之间同时发送帧会发生冲突,此时传输不会成功。
- PC1和PC3同时发送帧,它们之间产生了冲突,故它们两台PC进入等待。(退避算法)
- 在同一冲突域中的其他PC都需要等待,故为PC2, PC3。
- 如果用交换机替代了所有的集线器,此时所有的PC都在其自己的冲突域中,没有任何两台PC在一个冲突域中,又因为半双工允许二台设备间同时进行双向数据,传输帧传输不会发送任何冲突。
Q1: What MACs are recorded in the switching tables?
Q2: Which PCs will receive the frames?
问题 1: 交换表中记录了哪些 MAC?
问题 2: 哪些 PC 将接收帧?
如图,初始化的交换表如图表中黑色记录。从PC1发送一个数据帧到PC3,此时数据帧来到Switch1,此时应该记录Source MAC到Switch Table中,但交换表已经有该记录了,故什么都不做。数据帧传出交换机,此时不知道往哪个端口传递,进行广播同时发送到P2和P3。
然后数据帧传到Switch2,从Port4传入,检查交换表没发现记录,加上一条记录 MAC_1 -> P4。然后发现目的MAC在交换表中指向P5,于是转发到P5上的PC3。
数据帧通过P2传到PC2上,PC2检查目的MAC与自己的MAC是否匹配,发现不匹配丢弃。
故此时交换表为:
根据刚才分析的过程,PC2和PC3接收到了数据帧。但只有PC3 接收了该数据帧。
网络层技术
IPv4寻址
What are the differences between flat addressing and hierarchical addressing?
平面寻址和分层寻址有什么区别?
- 平面寻址:其不使用逻辑层次来确定位置。例如,MAC地址就是采用的平面寻址。平面寻址的缺点在于,它无法进行路由选择。如果每一个地址都要求是唯一的,那么因特网上的所有路由器就需要保存因特网上每台主机的每个地址。这样做的工作量将会导致网络路由的效能急剧降低。
- 分层寻址:其使用一个逻辑层次来确定目的地。例如,IP地址由网络数字,子网络数字和主机数据组成。分层寻址的优点在于,它可以处理数量巨大的地址空间。此外,分层寻址还允许有效地进行广播地址。
What are the ranges of the Class A, B, C addresses and their default subnet masks?
A 类、B 类、C 类地址及其默认子网掩码的范围是什么?
比较偏概念性的问题:
IP address class | IP address range(First Octet Decimal Value) | Subnet Mask |
---|---|---|
A | 1.0.0.0 to 126.0.0.0/8 (00000001 - 01111110) | 255.0.0.0 |
B | 128.0.0.0 to 191.255.255.255/16 (10000000 - 10111111) | 255.255.0.0 |
C | 192.0.0.0 to 223.255.255.255/24 (11000000 - 11011111) | 255.255.255.0 |
What are the three ranges of private IP addresses?
私有 IP 地址的三个范围是什么?
Class | RFC 1918 internal address range |
---|---|
A | 10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8) |
B | 172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12) |
C | 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16) |
除此之外,127.0.0.0 255.0.0.0 and 169.254.0.0 255.255.0.0也被保留为本地用途。
What is the difference of network address, broadcast address and host address? What are these types of addresses used for?
网络地址、广播地址和主机地址有什么区别?这些地址的用途是什么?
- 网络地址用于标记一个网络本身。它的主机位全为0.
- 广播地址用于广播数据包到整个网络上的所有主机。它的主机位全为1.
- 主机地址是可用于分配给设备的地址。它的主机位不全为0或1.
IPv4子网划分
What is IPv4 classfull subnetting? By giving the number of required subnets or giving the number of required hosts in each subnet, how to determinate the subnet mask of the subnets, the network address, broadcast address and the range of valid host addresses for a given subnet.
什么是 IPv4 全类子网划分?通过给出所需的子网数或每个子网所需的主机数,如何确定子网的子网掩码、网络地址、广播地址和给定子网的有效主机地址范围。
IPv4全类子网划分是一种网络设计策略,它允许将一个IP地址空间划分为多个更小的网络,每个网络都有自己的子网掩码。这种策略可以提高IP地址的使用效率,同时也可以提高网络的管理效率。下面通过一个例子来了解全类子网划分:
网络拓扑如图,
网络 192.168.1.0/24 中需要 7 个子网:
1. 子网掩码是多少?
2. 创建了多少个子网?
3. 每个子网中创建了多少个可用主机地址?
4. 子网 #5 的网络地址是多少?
5. 子网 #5 的广播地址是什么?
6. 子网 #5 的范围是多少?
7. 子网 #5 中第 5 个主机地址的 IP 地址是多少?
- 我们知道原网络中,192.168.1.0/24的掩码为255.255.255.0,这个网络需要7个子网,那至少需要
⌈log27⌉ = 3
位借位。故此时网络变成192.168.1.0/27,它的掩码为= 255.255.255.224(11111111.11111111.11111111.11100000) - 因为借了3位,所以会创建
23 = 8
个子网,其中我们只用7个。 - 借了3位后还剩余5位(32-24-3)为主机位,故每个子网的可用主机地址数量为
25-2 = 30
个主机。 - #5在3位借位中表示为101,故此时#5的网络地址为192.168.1.160(10100000)/27
- 同理,#5的广播地址为192.168.1.191(10111111)/27
- 除去网络地址和广播地址,剩下的就是#5的范围了。192.168.1.161(10100001)/27~192.168.1.190(10111110)/27
- 第五位主机的地址表示为192.168.1.165(10100101)/27
于是我们分配7个子网到不同的接口,如下:
How to subnetting the network by using VLSM?
如何使用 VLSM 进行网络子网划分?
VLSM子网划分的特点是它允许在同一网络地址空间内使用多个子网掩码。它在主机数量少的网络中使用长掩码,而在主机数量多的子网中使用短掩码。
同样用一个例子来理解VLSM子网划分。
对于如下网络拓扑,进行VLSM子网划分。
首先分析这个网络中可以分出多少个子网,如下图中一共是8个子网,别忘了路由器之间也需要划分子网。
第一步先分主机只有2的子网。我们发现图中除了3条路由器之间的连接外还有主路由器连接的一个主机(2 hosts表示包含路由器一共2个主机)。我们还需要考虑网络地址和广播地址,故一个子网中需要的地址为:2+2至少为4个,共需要借位两位,子网掩码为/30。此时要分成4个这样的子网,网络地址变化位数为2位,于是可以这么分:
蓝色位为固定位,绿色位为划分子网网络地址中变化的位,xx为主机位。
接下来就是对每个路由器进行子网划分,要注意的是,同一个路由器下有不同子网主机数的时候,它们的子网掩码可以不一样。
我们分别对10个主机、30个主机、60个主机和120个主机进行子网划分,它们分别要借4位,5位,6位和7位。分别可以得到:
注意,为了防止和之前已经划分的低位子网冲突,之后划分子网网络地址中变化的位为1。
我们把这些网络换成十进制形式,如下表:
Subnet Number | Subnet Address |
---|---|
Subnet0 | 192.168.1.0/30 |
Subnet1 | 192.168.1.4/30 |
Subnet2 | 192.168.1.8/30 |
Subnet3 | 192.168.1.12/30 |
Subnet4 | 192.168.1.16/28 |
Subnet5 | 192.168.1.32/27 |
Subnet6 | 192.168.1.64/26 |
Subnet7 | 192.168.1.128/25 |
通过一个例子进一步理解IPv4的子网划分。
Q1: What is the IP addressing problem of PCs on Subnet 1?
Q2: What is the IP addressing problem of PCs on Subnet 2?
Q3: What is the ranges of valid host addresses that can be used for the Server of Subnet 2?
Q1:子网 1 中主机的 IP 有什么寻址问题?
Q2:子网 2 中主机的 IP 有什么寻址问题?
Q3:子网 2 服务器可使用的有效主机地址范围是什么?
- 分析一下知道子网1中子网掩码应该一样,所以PC2的子网掩码应该为/29。因为子网掩码为/29,说明主机位有3位,它的范围(由路由器端口知道)为N.N.N.00001001(9)~N.N.N.00001110(14),PC1和PC2的地址都不被允许。
- 子网2中,子网掩码均为18,由路由器端口地址可知道范围:N.N.00000000.00000001(172.16.0.1) ~ N.N.00111111.11111110(172.16.63.254)。我们可以发现PC4不在子网2中。Server的地址取值可以是172.16.0.1 - 172.16.63.254。
IPv6寻址
How to represent IPv6 address in full form and simplified form?
如何用完整格式和简化格式表示 IPv6 地址?
IPv6地址由128位组成,通常被表示为8组16位的十六进制数,每组之间用冒号(:
)分隔。例如,一个IPv6地址可能看起来像这样:2001:0db8:85a3:0000:0000:8a2e:0370:7334
。
为了简化IPv6地址的表示,可以采取以下两种方式:
- 省略前导零:每组中的前导零可以被省略。例如,
2001:0db8:85a3:0000:0000:8a2e:0370:7334
可以简化为2001:db8:85a3:0:0:8a2e:370:7334
。 - 双冒号缩写:如果地址中有一组或连续多组为零的组,可以用双冒号(::)来代替。例如,
2001:db8:85a3:0:0:8a2e:370:7334
可以简化为2001:db8:85a3::8a2e:370:7334
。但是请注意,在一个IPv6地址中只能使用一次双冒号。
What are the three types of IPv6 addresses? What specific addresses are defined for these types IPv6 addresses?
IPv6 地址有哪三种类型?这些类型的 IPv6 地址定义了哪些具体地址?
IPv6地址主要有以下三种类型:
- 链路本地单播地址(Link-local unicast):单播地址是最常见的地址类型,用于一对一的通信。当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。地址范围是
FE80::/10
。 - 全球单播地址(Global unicast addresses):全球唯一的单播地址,类似于IPv4的公网IP。地址范围是
2000::/3
。 - 组播地址(Multicast address):组播地址用于一对多的通信,即一个发送者发送数据包给多个接收者。IPv6的组播地址范围是
FF00::/8
。组播地址又可以分为- 链路本地范围全节点组播地址(Link-local scope all-nodes multicast address):这是一个特殊的组播地址,用于在同一链路上的所有节点之间进行通信。这个地址是
ff02::1
。所有IPv6设备都会加入这个组播组,因此发送到这个地址的数据包将被链路上的所有节点接收。 - 链路本地范围全路由器组播地址(Link-local scope all-routers multicast address):这是另一个特殊的组播地址,用于在同一链路上的所有路由器之间进行通信。这个地址是
ff02::2
。所有IPv6路由器都会加入这个组播组,因此发送到这个地址的数据包将被链路上的所有路由器接收。 - 被请求节点组播地址(Solicited-node multicast address):这是一种特殊类型的组播地址,用于邻居发现协议(NDP)。每个IPv6设备都会计算并加入一个solicited-node组播组地址。这个地址是通过将最后24位的单播或任播地址添加到前缀
ff02::1:ff00:0/104
来创建的。例如,如果一个设备的IPv6单播地址是fe80::2aa:ff:fe28:9c5a
,那么它对应的solicited-node组播地址就是ff02::1:ff28:9c5a
。
- 链路本地范围全节点组播地址(Link-local scope all-nodes multicast address):这是一个特殊的组播地址,用于在同一链路上的所有节点之间进行通信。这个地址是
How to form a link-local address? How to form a global unicast address using stateless autoconfiguration?
如何形成链路本地地址?如何使用无状态自动配置形成全局单播地址?
链路本地地址的前64位是主机位,它由路由器自动分配,后64位为接口ID,它是 IPv6 地址 64 位前缀的唯一标识符。它由扩展唯一标识符 (EUI)-64 地址派生的 64 位接口标识符。除此之外,还可以随机生成和通过MAC地址转换。
通过MAC地址转换的步骤为:
- 在MAC地址中间(6段十六进制数的中间)插入FF:FE。
- 将MAC地址中第一个byte(前两个十六进制)的倒数第二个位取反。
- 组成一个新的EUI-64地址。
e.g. MAC为C6-46-7B-E7-B0-9B
- 插入FF:FE得:C6-46-7BFF:FE-B0-9B
- 将第一个byte的倒数第二个位取反:1100 0110 -> 1100 0100 => C4
- 组成EUI-64地址得:C446:7BFF:FEE7:B09B
但是因为MAC地址唯一表示了一台设备,为了用户的网络隐私,接口ID通常会随机生成。
全局单播地址类似的,但是我们不知道它的前缀。可以使用邻居发现协议,发送RS请求前缀信息。
一台主机刚启动的时候,它连接进入网络,但是还不知道它的网络是怎么样的,此时它会发送一个RS请求,它会发送到所有路由器上。
路由器接收到它的RS,会发送一个RA用于给出网关、前缀等等信息。
这样主机就得到了这个网络的前缀,于是它的IPv6地址就可以自动配置了。我们称这样配置的IPv6为无状态自动配置(Stateless autoconfiguration),因为它并不是存储在路由器上配置的。
通过一个例子进一步理解IPv6的寻址。
Q1: What is the link-local address of PC1?
Q2: When stateless auto-configuration is used, what is the global unicast address of PC1?
Q3: What ICMPv6 messages are used for PC1 to discovery the subnet prefix and default gateway?
Q4: What ICMPv6 messages are used for PC1 to perform the duplicate address detection before it can use the address?
Q1:PC1 的链路本地地址是什么?
Q2:使用无状态自动配置时,PC1 的全局单播地址是什么?
Q3:PC1 在发现子网前缀和默认网关时会使用哪些 ICMPv6 消息?
Q4:PC1 在使用地址前会使用哪些 ICMPv6 消息进行重复地址检测?
- 我们根据MAC地址生成链路本地地址。插入FFFE后修改第7位后得:
02AA:AAFF:FEAA:AAAA
,于是接上链路本地地址的前缀FE80得,IPv6:FE80::2AA:AAFF:FEAA:AAAA/64
- 使用无状态自动配置时,PC1 的全局单播地址由路由器的前缀和它的接口ID组成。路由器的前缀为2001:1:2:3,IPv6:
2001:1:2:3:2AA:AAFF:FEAA:AAAA/64
- PC1 在发现子网前缀和默认网关时会使用邻居发现协议的RS和RA请求。
- PC1 在使用地址前会使用邻居发现协议的NS和NA请求进行重复地址检测。
邻居发现协议
What 4 ICMPv6 messages are used in NDP?
NDP 中使用了哪 4 种 ICMPv6 报文?
在IPv6中,将ICMP协议中特殊的四种信息定义为邻居发现协议(Neighbor Discovery Protocol, NDP)。
Type | Description | |
---|---|---|
路由器请求Router Solicitation (RS) | 133 | 当一个主机启动时会发送一个RS去获取网络信息。 |
路由器接收Router Advertisement (RA) | 134 | RA 包含用于链路确定或地址配置的前缀、建议的跳数限制值、MTU 值等。RA 可定期发送,也可作为对 RS 信息的回应发送。 |
邻居请求Neighbor Solicitation (NS) | 135 | 由主机发送,用于确定邻居的链路层地址(MAC)。用于验证邻居是否仍然可达。 |
邻居接收Neighbor Advertisement (NA) | 136 | 对 NS 消息的回应。 |
对于地址解析,与IPv4的ARP协议类似的:
IPv6 节点的地址解析过程包括交换 "邻居请求"(Neighbor Solicitation)和 "邻居接收"(Neighbor Advertisement)报文,以解析给定目的地的链路层地址(link-layer address)和链路上的下一跳地址(next-hop address)。发送主机在适当的接口上发送多播 "邻居请求 "信息。Neighbor Solicitation(邻居请求)报文的组播地址是从目标 IP 地址导出的请求节点组播地址。邻居请求信息在源链路层地址选项中包含发送主机的链路层地址MAC。
注意,此时目标主机可以广播本地链路所有主机告知自己的MAC地址,也可以选择只单独回复源主机。
对于重复地址检测:因为我们还不知道生成的这个IPv6有没有被别人用过,接口ID可以是随机生成的。这时就需要使用邻居请求(NS)了。
重复地址检测(Duplicate Address Detection, DAD)是为了确保在无状态自动配置过程中,其他设备在使用自动配置地址。主机会主动向该请求节点组播地址(FF02::1:FFxx:xxxx, Solicited-node multicast address of H1,xx:xxxx为主机的接口ID的后24位)发出NS。
如果节点以 NA 消息回应请求,则表示 IPv6 地址已被使用,主机需要手动配置。
IP路由
What are the differences between layer 2 switching and layer 3 routing?
第 2 层交换和第 3 层路由有什么区别?
- 第2层交换:交换是根据数据包中的MAC地址信息进行转发。当交换机从某个端口收到一个数据包,它会读取包头中的源MAC地址和目的MAC地址,并在交换地址表中查找相应的端口。然后,根据这些信息,交换机会将数据包转发到目标端口或者广播。
- 第3层路由:路由是根据IP地址进行寻址,并通过路由表来决定数据包的转发路径。决定了转发路径后会将数据包转发到下一跳。
What is the difference between the next-hop and the default gateway?
下一跳和默认网关有什么区别?
我们可以认为:
- 下一跳:在路由表中,下一跳是指向数据包应该被发送到的下一个路由器或目标主机的IP地址,它一般是设备的网关。
- 默认网关:默认网关是网络中用于连接到其他网络(如Internet)的设备(通常是路由器)。当一个设备需要发送一个数据包到不在本地网络中的目标时,它会将数据包发送到默认网关。可以理解为是设备中设置的默认下一跳地址。
What are the differences between the intra-subnet and inter-subnet communications?
子网内通信和子网间通信有何不同?
- 子网内通信:目的主机与源主机位于同一子网内/广播域内。
- 子网间通信:在不同 IP 子网的主机之间通信。
How to use Address Resolution Protocol (ARP) in the intra-subnet and inter-subnet communications?
如何在子网内和子网间通信中使用地址解析协议(ARP)?
地址解析协议(Address Resolution Protocol, ARP)可以将IP地址映射到MAC地址。
如果是子网内通信,源主机会先广播一个ARP请求,询问广播域中拥有目的主机的IP地址。目的主机收到ARP请求后,会回复一个ARP应答,告诉源主机自己的MAC地址。此时ARP会将这个映射记录到源主机的ARP表中,以便将数据包封装成以太网帧。
如果是子网间通信,我们广播的ARP请求最后只能到达网关,对应的网关收到ARP请求后,会回复一个ARP应答,告诉源主机网关的MAC地址。
它们的区别在于:
- 子网内通信ARP -> 目的主机MAC
- 子网间通信ARP -> 网关MAC
For inter-subnet communication, how do IP addresses and MAC addresses change in the packetduring the data transmission?
对于子网间通信,数据包中的 IP 地址和 MAC 地址在数据传输过程中如何变化?
- IP地址在通信过程中不会改变。
- MAC地址在每个子网间都会改变为下一跳的MAC地址。
我们通过一个例子加深理解:
如图,PC1发送一个数据包给Server4,找到其过程中IP地址与MAC地址的变化。
数据包初始化情况下源IP地址为192.168.1.11,目的IP地址为192.168.2.88。源MAC地址为A...,目标MAC地址为R...1。此时默认网关是192.168.1.33,故目标MAC地址为router1的MAC地址。
- 首先经过交换机,它会根据交换表直接转发数据包,此时IP地址和MAC地址都不变。
- 数据包来到Router1,IP地址不变,根据路由表找到下一跳是路由器的另外一个接口,源MAC地址变为
R...1
,目标MAC地址为R...2
。 - 在另一个出口处,IP地址不变,根据路由表找到下一跳是Router2,源MAC地址变为
R...2
,目标MAC地址为R...3
。 - 数据包来到Router2,IP地址不变,根据路由表找到下一跳是Router2的另外一个端口,源MAC地址变为
R...3
,目标MAC地址为R...4
。 - 在另一个出口处,IP地址不变,根据路由表找到下一跳是目标地址Server4,源MAC地址变为
R...4
,目标MAC地址为D...
。 - 数据到达Server4。
Comments 1 条评论
博主 五组辛璧彤
不错