1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-06-16 15:07:38 +08:00

更新网络层

This commit is contained in:
Didnelpsun
2021-08-01 23:12:36 +08:00
parent a198c23645
commit a60c370e44
5 changed files with 221 additions and 165 deletions

View File

@@ -30,7 +30,7 @@ $D.$计时器超时重发
**例题** 在一个数据链路协议中使用下列字符编码:
$A\,01000111$$B\,11100011$$ESC\,11100000$$FLAG\,01111110$
$A\,0100\,0111$$B\,1110\,0011$$ESC\,1110\,0000$$FLAG\,0111\,1110$
在使用下列成帧方法的情况下,说明为传送$4$个字符$A$、$B$、$ESC$、$FLAG$所组织的帧而实际发送的二进制位序列(使用$FLAG$作为首尾标志,$ESC$作为转义字符)。
@@ -40,11 +40,11 @@ $A\,01000111$$B\,11100011$$ESC\,11100000$$FLAG\,01111110$
3使用比特填充的首尾标志法。
1第一字节为所传输的字符计数$5$,转换为二进制为$00000101$,后面依次为$A$、$B$、$ESC$、$FLAG$的二进制编码:$00000101\quad01000111\quad11100011\quad11100000\quad01111110$。
1第一字节为所传输的字符计数$5$,转换为二进制为$0000\,0101$,后面依次为$A$、$B$、$ESC$、$FLAG$的二进制编码:$0000\,0101\quad0100\,0111\quad1110\,0011\quad1110\,0000\quad0111\,1110$。
2首尾标志位$FLAG$$01111110$)在首部和尾部都需要加上,在所传输的数据中,若出现控制字符,则在该字符前插入转义字符$ESC$$11100000$$01111110\quad01000111\quad11100011\quad11100000\quad11100000\quad11100000\quad01111110\quad01111110$。
2首尾标志位$FLAG$$0111\,1110$)在首部和尾部都需要加上,在所传输的数据中,若出现控制字符,则在该字符前插入转义字符$ESC$$1110\,0000$$0111\,1110\quad0100\,0111\quad1110\,0011\quad1110\,0000\quad1110\,0000\quad1110\,0000\quad0111\,1110\quad0111\,1110$。
3首尾标志位$FLAG$$01111110$)在首部和尾部都需要加上,在所传输的数据中,若连续出现$5$个“$1$”,则在其后插入“$0$”:$01111110\quad01000111\quad11010011\quad11100000\quad011111010\quad01111110$。
3首尾标志位$FLAG$$0111\,1110$)在首部和尾部都需要加上,在所传输的数据中,若连续出现$5$个“$1$”,则在其后插入“$0$”:$0111\,1110\quad0100\,0111\quad1101\,0011\quad1110\,0000\quad0111\,11010\quad0111\,1110$。
## 差错控制
@@ -64,9 +64,9 @@ $D.$干扰差错
### CRC循环冗余码
**例题** 在数据传输过程中,若接收方收到的二进制比特序列为$1011\quad0011\quad010$,接收双方采用的生成多项式为$G(x)=x^4+x^3+1$,则该二进制比特序列在传输中是否出错?如果未出现差错,那么发送数据的比特序列和$CRC$检验码的比特序列分别是什么?
**例题** 在数据传输过程中,若接收方收到的二进制比特序列为$1011\,0011\,010$,接收双方采用的生成多项式为$G(x)=x^4+x^3+1$,则该二进制比特序列在传输中是否出错?如果未出现差错,那么发送数据的比特序列和$CRC$检验码的比特序列分别是什么?
解:根据题意,生成多项式$G(x)$对应的二进制比特序列为$11001$。进行如下的二进制模二除法,被除数为$1011\quad0011\quad010$,除数为$11001$所得余数为0,因此该二进制比特序列在传输过程中未出现差错。发送数据的比特序列是$1011\quad001$$CRC$检验码的比特序列是$1010$。
解:根据题意,生成多项式$G(x)$对应的二进制比特序列为$11001$。进行如下的二进制模二除法,被除数为$1011\,0011\,010$,除数为$11001$所得余数为0,因此该二进制比特序列在传输过程中未出现差错。发送数据的比特序列是$1011\,001$$CRC$检验码的比特序列是$1010$。
## 流量控制

View File

@@ -90,7 +90,7 @@ $SOH$表示帧开始,$EOT$表示帧结束。
奇偶校验码对于出错的数据仍有对应的奇偶个$1$则无法检验出是否出错。即出错奇数个位数可以检查出来,偶数个位数不能检查出来,所以其检错能力为$50\%$。
如字符为$1100101$原数据有$4$位$1$,若使用奇校验,则需要首位校验位为$1$让整个数据有奇数$5$个$1$,从而整个数据变为$11100101$。若接受方收到$11000011$、$11001010$这种数据则能校验,因为数据有偶数个$1$$11010011$则无法校验,因为有奇数个$1$。
如字符为$1100\,101$原数据有$4$位$1$,若使用奇校验,则需要首位校验位为$1$让整个数据有奇数$5$个$1$,从而整个数据变为$1110\,0101$。若接受方收到$1100\,0011$、$1100\,1010$这种数据则能校验,因为数据有偶数个$1$$1101\,0011$则无法校验,因为有奇数个$1$。
### CRC循环冗余码
@@ -112,7 +112,7 @@ $SOH$表示帧开始,$EOT$表示帧结束。
余数为$0$,判断无错,就接受。
其中正式的计算方法如下,并给出例题:发送数据为$1101\quad0110\quad11$,采用$CRC$校验,生成多项式为$10011$,其最终发送数据是?
其中正式的计算方法如下,并给出例题:发送数据为$1101\,0110\,11$,采用$CRC$校验,生成多项式为$10011$,其最终发送数据是?
#### 原数据加0
@@ -120,7 +120,7 @@ $SOH$表示帧开始,$EOT$表示帧结束。
如题目中生成多项式$10011$表示为多项式是$x^4+x^1+x^0$,所以阶就是$4$。
最后数据就是$1101\quad0110\quad1100\quad00$。
最后数据就是$1101\,0110\,1100\,00$。
#### 模二除法
@@ -132,7 +132,7 @@ $SOH$表示帧开始,$EOT$表示帧结束。
所以就得到了帧检验序列$FCS$为$1110$。
所以要发送的数据就是要发送的数据加上帧检验序列:$1101\quad0110\quad1111\quad10$。
所以要发送的数据就是要发送的数据加上帧检验序列:$1101\,0110\,1111\,10$。
#### 检错过程
@@ -427,7 +427,7 @@ GBN会一次性将在发送窗口内的$n$个帧一个个全部发送完,然
+ 如何合并:各路数据在信道中按位线性相加。
+ 如何分离:合并的数据和源站码片序列规格化内积。
假如站点$A$的码片序列被指派为$00011011$则A站发送$00011011$就表示发送比特$1$,发送$11100100$就表示发送比特$0$。
假如站点$A$的码片序列被指派为$0001\,1011$则A站发送$0001\,1011$就表示发送比特$1$,发送$1110\,0100$就表示发送比特$0$。
为了方便,按惯例将码片中的$0$写为$-1$,将$1$写为$+1$,因此$A$站的码片序列是$-1-1-1+1+1-1+1+1$。
@@ -435,9 +435,9 @@ GBN会一次性将在发送窗口内的$n$个帧一个个全部发送完,然
任何一个码片向量和该码片向量自身的规格化内积都是$1$,任何一个码片向量和该码片反码的向量的规格化内积是$-1$。
令向量$T$为$(-1-1+1-1+1+1+1-1)$,即$00101110$。
令向量$T$为$(-1-1+1-1+1+1+1-1)$,即$0010\,1110$。
当$A$站向$C$站发送数据$1$时,就发送了向量$(-1-1-1+1 +1-1+1+1)$。当$B$站向$C$站发送数据$0$时,就发送了向量$(+1+1-1+1-1-1-1+1)$。两个向量到了公共信道上就进行叠加,实际上就是线性相加,得到$\vec{S}-\vec{T}=(0\,0-2+2\,0-2\,0+2)$。
当$A$站向$C$站发送数据$1$时,就发送了向量$(-1-1-1+1+1-1+1+1)$。当$B$站向$C$站发送数据$0$时,就发送了向量$(+1+1-1+1-1-1-1+1)$。两个向量到了公共信道上就进行叠加,实际上就是线性相加,得到$\vec{S}-\vec{T}=(0\,0-2+2\,0-2\,0+2)$。
到达$C$站后,进行数据分离,如果要得到来自$A$站的数据,$C$站就必须知道$A$站的码片序列,让$\vec{S}$与$\vec{S}\vec{T}$进行规格化内积。根据叠加原理,其他站点的信号都在内积的结果中被过滤掉了,内积的相关项都是$0$而只剩下A站发送的信号。得到$\vec{S}\cdot(\vec{S}\vec{T})=1$,所以$A$站发出的数据是$1$。同理,如果要得到来自$B$站的数据,那么$\vec{T}\cdot(\vec{S}\vec{T})=-1$,因此从$B$站发送过来的信号向量是一个反码向量,代表$0$。
@@ -808,7 +808,7 @@ OSI参考模型层次|三层:物理层,数据链路层,网络层|两层:
![PPP帧格式][PPPformat]
+ $F$:表示帧定界符,用二进制表示就是$01111110$。当数据内出现帧定界符就需要插入转义字符$7D$$0111101$。
+ $F$:表示帧定界符,用二进制表示就是$0111\,1110$。当数据内出现帧定界符就需要插入转义字符$7D$$0111\,101$。
+ $A$:表示$Address$,未完善。
+ $C$:表示$Control$,未完善。
+ 协议:表示信息部分的内容,是$IP$数据报、$LCP$数据或网络层控制数据等。
@@ -843,7 +843,7 @@ OSI参考模型层次|三层:物理层,数据链路层,网络层|两层:
![HDLC帧格式][HDLCformat]
+ $F$:表示帧定界符,用二进制表示就是$01111110$。当数据内出现帧定界符就需要插入转义字符$7D\,0111101$。
+ $F$:表示帧定界符,用二进制表示就是$0111\,1110$。当数据内出现帧定界符就需要插入转义字符$7D\,0111\,101$。
+ $A$:表示$Address$,当数据操作方式是正常响应方式或异步响应方式,都是表示从站的地址,而如果是异步平衡方式,则填充应答站的地址。
+ $C$:表示$Control$
1. 信息帧($I$):第一位是$0$,用于传输数据信息,或使用捎带技术对数据进行确认。

View File

@@ -14,6 +14,91 @@ $D.$物理层、数据链路层、网络层及高层协议都可以不同
解:$C$。路由器是第三层设备,向传输层及以上层次隐藏下层的具体实现,所以物理层、数据链路层、网络层协议可以不同。而网络层之上的协议数据是路由器所不能处理的,因此网络层以上的高层协议必须相同。本题容易误选$B$,主要原因是在目前的互联网中广泛使用的是$TCP/IP$协议族,在网络层用的多是$IPv4$,所以误认为网络层协议必须相同。而实际上,使用特定的路由器连接$IPv4$与$IPv6$网络,就是典型的网络层协议不同而实现互联的例子。
## IP协议
### IP数据报分片
**例题** 假如现在一个数据报,首部为$20$字节,数据部分$3800$字节,需要分片为长度不超过$1420$字节的数据报片,求每一个报片的片偏移量。
解:已知$MTU=1420$字节,此题目中首部为$20$字节,所以每一个分片的数据部分最大为$1400$字节。
数据部分为$3800$字节,所以可以分为三片,数据大小分别为$1400$、$1400$、$1000$字节。
所以第一个报片的数据部分是从$0$到$1399$字节的,所以该片的片偏移为$0$,因为分片后数据开头的地方不变。
第二个报片的数据部分是从$1400$到$2799$字节,且偏移量以$8$字节为单位,所以该片的偏移量为$1400÷8=175$。
第二个报片的数据部分是从$2800$到$3799$字节,所以该片的偏移量为$2800÷8=350$。
### 子网掩码
#### 网络地址
**例题** 已知$IP$地址位$141.14.72.24$,子网掩码为$255.255.192.0$,求网络地址。
解:已知子网掩码前两个八位都是$255$,表示掩码前$16$位全部是$1$,相与时不变,所以网络前$16$位依然为$141.14$。
而子网掩码最后一个八位全部是$0$,所以与$24$相与全部是$0$,从而网络地址为$141.14.x.0$。
主要看子网掩码第三个八位既有$0$又有$1$的部分。$72$用二进制表示为$0100\,1000$,而$192$用二进制表示为$1100\,0000$,子网号为$2$位,主机号为$14$位,从而进行与操作得到网络号为$0100\,0000=64$。
所以最后网络号为$141.14.64.0$。
### 构成超网
#### 路由器选址
**例题** 路由器$R0$的路由表见下表:若进入路由器$R0$的分组的目的地址为$132.19.237.5$,请问该分组应该被转发到哪一一个下一跳路由器()。
$A.R1$
$B.R2$
$C.R3$
$D.R4$
目的网络|下一跳
:-----:|:----:
132.0.0.0/8|R1
132.0.0.0/11|R2
132.19.232.0/22|R3
0.0.0.0/0|R4
解:$B$。
其中$D$表示默认路由,代表本路由表中找不到对应的路由,只能交给其他路由器查找。如果$ABC$都不对$D$才能作为选项。
如果是$R1$,网络前缀是$8$的话,目的地址的网络号就是$132.0.0.0$,所以与路由表中目的网络网络号一致,可用作为下一跳的选项。
如果是$R2$,网络前缀是$11$的话,目的地址的网络号就是$132.0.0.0$,所以也可用作为下一条的选项。
如果是$R3$,网络前缀是$22$的话,目的地址的网络号是$132.19.236.0$,与路由表中目的网络网络号不一致,所以不能作为选项。
所以$AB$都是可选的,而根据最长前缀匹配,需要选择网络前缀最长的、地址最具体的,所以选择$B$。
#### 网络可分配个数
**例题** 某网络的$IP$地址空间为$192.168.5.0/24$,采用定长子网划分,子网掩码为$255.255.255.248$,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是()。
$A.32,8$
$B.32,6$
$C.8,32$
$D.8,30$
已知$IP$为192.168.5.0/24前24位都是网络前缀又采用定长子网划分所以要对后面八位进行子网划分。
子网掩码为255.255.255.248,所以前五位为子网号,后三位为主机号。所以子网号就是$2^5=32$。主机号为$2^3=8$但是全0全1不可用所以就是6。所以最后选B。
## ARP协议
**例题** 主机发送$IP$数据报给主机$B$,经过了$5$个路由器,此过程中一共使用了多少次$ARP$协议?
因为五个路由器,所以有六段链路,所以需要选择路由六次,所以使用了六次$ARP$协议。
## 路由算法与协议
### 路由基本概念

View File

@@ -74,11 +74,11 @@
## IP协议
网际协议是TCP/IP协议栈中两个最主要的协议。与之配套的还有地址解析协议ARP网际控制报文协议ICMP、网际组管理协议IGMP还有一个逆地址解析协议RARP已不被使用。
网际协议是$TCP/IP$协议栈中两个最主要的协议。与之配套的还有地址解析协议$ARP$,网际控制报文协议$ICMP$、网际组管理协议$IGMP$,还有一个逆地址解析协议$RARP$已不被使用。
![TCP/IP协议栈][TCPIP]
IP协议使用ARP协议而ICMPIGMP使用IP协议。
$IP$协议使用$ARP$协议,而$ICMP$与$IGMP$使用$IP$协议。
### IP数据报
@@ -86,9 +86,9 @@ IP协议使用ARP协议而ICMP与IGMP使用IP协议。
![IP数据报格式][IPformat]
当单个IP数据报太长就会被划分不同的数据部分加上IP首部就是分组。
当单个$IP$数据报太长,就会被划分不同的数据部分加上$IP$首部,就是分组。
固定部分20B160bit按照五行来展示而不是真的这样排列一行32比特。
固定部分$20B=160bit$,按照五行来展示而不是真的这样排列,一行$32$比特。
![IP数据报具体格式][IPfullformat]
@@ -98,10 +98,10 @@ IP协议使用ARP协议而ICMP与IGMP使用IP协议。
首部长度 IHL|单位为4字节同时因为IP数据报固定长度最小值为20字节所以此处最小值为5即二进制的0101|4位
区分服务 DSCP + ECN|希望获得哪种服务,用的比较少|8位
总长度 Total Length|首部+数据的长度单位为1字节最大为$2^{16}-1=65535$B但是实际上永远不会达到该长度因为有MTU的限制|16位
标识 Identification|用来表示是哪一个数据报的分片,同一个数据报的分片标识相同|8位
标识 Identification|就是一个计数器,用来表示是哪一个数据报的分片,同一个数据报的分片标识相同|8位
标志 Flags|用来表示是否分片和分片是否结束中间位DFDon't Fragment为1表示禁止分片如果是0代表允许分片最低位MFMore Fragment为1表示后面还有分片如果为0表示最后一片分片|3位但实际有用的只有后两位
片偏移 Fragment Offset|用来标记分片之后该分片在原来的数据报的位置以8字节为单位|13位
生存时间 Time To Live|即TTL每经过一个路由器TTL-1,0时自动放弃根据系统不同默认的TTL不同为了防止无法传输的数据报在链路中无限传输|8位
生存时间 Time To Live|即TTL每经过一个路由器TTL-1,等于0时自动放弃根据系统不同默认的TTL不同为了防止无法传输的数据报在链路中无限传输|8位
协议 Protocol|用来标记数据部分协议名的字段值如ICMP1IGMP2TCP6EGP8IGP9UPD17IPv641ESP50OSPF89|8位
首部检验和 Header Checksum|检验首部的字段是否出错,出错就丢弃此数据报|16位
源地址 Source IP Address|发送方ip地址|32位
@@ -111,41 +111,44 @@ IP协议使用ARP协议而ICMP与IGMP使用IP协议。
#### IP数据报分片
+ 最大传送单元MTU数据链路层帧可封装的数据的上限以太网的MTU1500字节。
+ 当IP分组超过MTU时为了传输就必须要分片而如果IP分组不允许分片则无法传输会返回上层一个差错报告。
+ 最大传送单元$MTU$,数据链路层帧可封装的数据的上限,以太网的$MTU$是$1500$字节。
+ 当$IP$分组超过$MTU$时为了传输就必须要分片,而如果$IP$分组不允许分片则无法传输,会返回上层一个差错报告。
+ 除了最后一个分片,每个分片的长度必然为八字节的整数倍。
**例题** 假如现在一个数据报首部为20字节数据部分3800字节需要分片为长度不超过1420字节的数据报片求每一个报片的片偏移量。
#### 转发分组流程
已知MTU=1420字节此题目中首部为20字节所以每一个分片的数据部分最大为1400字节。
路由表包括:
数据部分为3800字节所以可以分为三片数据大小分别为1400、1400、1000字节
1. 目的网络地址
2. 目的网络子网掩码。
3. 下一跳地址。
所以第一个报片的数据部分是从0到1399字节的所以该片的片偏移为0因为分片后数据开头的地方不变。
路由器转发分组的算法:
第二个报片的数据部分是从1400到2799字节且偏移量以8字节为单位所以该片的偏移量为1400÷8=175
第二个报片的数据部分是从2800到3799字节所以该片的偏移量为2800÷8=350
1. 提取目的$IP$地址
2. 查看是否可直接交付。若网络直连路由器则直接交付目的主机。
3. 查看是否有特定主机路由(特殊地址,为了测试或安全),就直接按此路由传输
4. 检测路由表中有无合适路径,若有到达目的地址的路由,则把数据报交付给路由器指明的下一跳路由器。
5. 该路由器找不到对应地址,若该路由器有默认路由$0.0.0.0$,则发送给默认路由器,让其他路由器查看是否有该地址。
6. 超过$TTL$,丢弃并报告转发分组出错。
### IP地址
默认指IPv4地址全世界唯一的32位/4字节标识符标识路由器主机的接口。IP地址={网络号,主机号}。
默认指$IPv4$地址,全世界唯一的$32$位/$4$字节标识符,标识路由器主机的接口。$IP$地址={网络号,主机号}。
IP地址一共分为五类。
#### IP地址类别
$IP$地址一共分为五类。
![IP地址类别][IPaddresskind]
其中一些IP地址被予以保留做特殊用途
其中一些$IP$地址被予以保留做特殊用途:
![特殊IP地址][IPspecialaddress]
还有私有IP地址
全$1$的广播地址也称为受限广播地址。
![私有IP地址][IPprivateaddress]
私有IP地址也叫做可重用地址不同于一般的全球IP地址这些地址可以在机构内部自行分配使用这张网络就是专用互联网或是本地互联网当然也无法直接用于与因特网的通信。
由于网络号不能全0或全1所以基本上可用的都要减二。
由于网络号不能全$0$或全$1$,所以基本上可用的都要减二。
网络类别|最大可指派的网络数|第一个可指派的网络号|最后一个可指派的网络号|每个网络中的最大主机数
:-:|:--:|:--:|:---:|:--:
@@ -153,52 +156,77 @@ A类|126|1|126|16777214
B类|16383|128.1|191.255|65534
C类|2097151|192.0.1|223.255.255|254
为什么A类最大是126.x.x.x
为什么$A$类最大是$126.x.x.x$
因为网络号最开始第一位是0一共八位所以二进制表示位0xxxxxxx最大就是2^7-1=127但是因为127.x.x.x是特殊ip地址,所以将其去掉。
因为网络号最开始第一位是$0$,一共八位,所以二进制表示位$0xxxxxxx$,最大就是$2^7-1=127$,但是因为$127.x.x.x$是特殊$IP$地址,所以将其去掉。
为什么B类最大是191.255.x.x
为什么$B$类最大是$191.255.x.x$
因为网络号最开始第一位是10一共八位所以二进制表示位10xxxxxx最大就是10111111=191最小就是10000000=128无特殊IP地址。
因为网络号最开始第一位是$10$,一共八位,所以二进制表示位$10xxxxxx$,最大就是$10111111=191$,最小就是$10000000=128$,无特殊$IP$地址。
为什么C类最大是223.255.x.x
为什么$C$类最大是$223.255.x.x$
因为网络号最开始第一位是110一共八位所以二进制表示位110xxxxx最大就是11011111=223最小就是10000000=192无特殊IP地址。
因为网络号最开始第一位是$110$,一共八位,所以二进制表示位$110xxxxx$,最大就是$11011111=223$,最小就是$10000000=192$无特殊IP地址。
#### IP地址特点
+ 每个$IP$地址都由网络号和主机号两部分组成,因此$IP$地址是一种分等级的地址结构。分等级的好处是:
+ $IP$地址管理机构在分配$IP$地址时只分配网络号(第一级),而主机号(第二级)则由得到该网络的单位自行分配,方便了$IP$地址的管理。
+ 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
+ $IP$地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的$IP$地址,每个$IP$地址的网络号必须与所在网络的网络号相同,且这两个$IP$地址的网络号是不同的。因此$IP$网络上的一个路由器必然至少应具有两个$IP$地址(路由器每个端口必须至少分配一个$IP$地址)。
+ 用转发器或桥接器(网桥等)连接的若干$LAN$仍然是同一个网络(同一个广播域),因此该$LAN$中所有主机的P地址的网络号必须相同但主机号必须不同。
+ 在$IP$地址中,所有分配到网络号的网络(无论是$LAN$还是$WAN$)都是平等的。
+ 在同一个局域网上的主机或路由器的$IP$地址中的网络号必须是一样的。路由器总是具有两个或两个以上的$IP$地址,路由器的每个端口都有一个不同网络号的$IP$地址。
### 专用网络通信
#### VPN
当目的地址是私有专用IP地址时路由器一律不转发而如果在内网的私有IP地址要转发或接收本地网络其他主机的数据怎么办呢
可以利用公用的互联网作为本地各专用网之间的通信载体这种网络就是虚拟专用网VPN。这种网络不同于互联网是因为它只用于本地网络的通信但是又依靠互联网传输所以就需要对数据进行加密。
当VPN需要外部机构加入就是外联网VPN如果成员分布分散通过某种软件建立VPN通道这种VPN就是远程接入VPN。
#### NAT
+ 如果专用网的内部某些主机已经分配到了本地专用IP地址又想无加密的跟互联网上的主机通信就需要网络地址转换NAT
+ 只用在专用网与因特网的路由器上按照NAT软件安装了NAT软件的路由器就是NAT路由器其至少有一个有效的外部全球IP地址。
+ NAT路由器就是该本地专用网的代表负责与外部因特网联通分发外部的数据信息
+ NAT路由器维护NAT转换表包含WAN端与LAN端的散列值对。每个值都包含网络号与端口号。NAT路由器在发送和接收时都需要根据转换表更改IP地址。
网络地址转换是指通过将专用网络地址转换为公用地址从而对外隐藏内部管理的I地址。它使得整个专用网只需要一个全球$IP$地址就可以与因特网连通由于专用网本地P地址是可重用的所以$NAT$大大节省了P地址的消耗。同时它隐藏了内部网络结构从而降低了内部网络受到攻击的风险
此外,为了网络安全,划出了部分$IP$地址为私有$IP$地址。私有$IP$地址只用于$LAN$,不用于$WAN$连接(因此私有$IP$地址不能直接用于$Internet$,必须通过网关利用$NAT$把私有$IP$地址转换为$Internet$中合法的全球$IP$地址后才能用于$Internet$),并且允许私有$IP$地址被$LAN$重复使用
私有$IP$地址(可重用$IP$地址):
![私有IP地址][IPprivateaddress]
私有$IP$地址也叫做可重用地址,不同于一般的全球$IP$地址,这些地址可以在机构内部自行分配使用,这张网络就是专用互联网或是本地互联网,当然也无法直接用于与因特网的通信。
+ 如果专用网的内部某些主机已经分配到了本地专用$IP$地址,又想无加密的跟互联网上的主机通信,就需要网络地址转换$NAT$。
+ 只用在专用网与因特网的路由器上按照$NAT$软件,安装了$NAT$软件的路由器就是$NAT$路由器,其至少有一个有效的外部全球$IP$地址。
+ $NAT$路由器就是该本地专用网的代表,负责与外部因特网联通,分发外部的数据信息,发送时一定会按$NAT$转换表改变源$IP$地址或目的$IP$地址。
+ $NAT$路由器维护$NAT$转换表,包含$WAN$端与$LAN$端的散列值对。每个值都包含网络号与端口号。$NAT$路由器在发送和接收时都需要根据转换表更改$IP$地址。
+ 普通路由器工作在网络层,而$NAT$路由器工作在网络层和传输层,因为传输时需要查看和转换端口号。
#### VPN
当目的地址是私有(专用)$IP$地址时路由器一律不转发,而如果在内网的私有$IP$地址要转发或接收本地网络其他主机的数据怎么办呢?
可以利用公用的互联网作为本地各专用网之间的通信载体,这种网络就是虚拟专用网$VPN$。这种网络不同于互联网是因为它只用于本地网络的通信,但是又依靠互联网传输,所以就需要对数据进行加密。
当$VPN$需要外部机构加入就是外联网$VPN$;如果成员分布分散,通过某种软件建立$VPN$通道,这种$VPN$就是远程接入$VPN$。
### 子网与超网
分级IP地址的缺点
分级$IP$地址的缺点:
1. IP地址空间利用率较低。
2. 两级IP地址不够灵活。
1. $IP$地址空间利用率较低。
2. 两级$IP$地址不够灵活。
#### 子网划分
+ 由两级IP地址网络号+主机号变为三级IP地址网络号+子网号+主机号),将原来的主机号分割出来一部分作为子网号,子网的划分由单位内部完成,但是对外仍表现一个网络,外部无法看到本单位内子网的划分。
+ 子网号可以全0或全1,但是主机号仍然不能全0全1
+ 子网的标识依靠子网掩码,其中网络号和子网号的部分全部位数为1,而主机号部分全部为0
+ 将子网掩码与IP地址逐位进行与操作就可以得到子网网络地址。
+ 由两级$IP$地址(网络号+主机号)变为三级$IP$地址(网络号+子网号+主机号),将原来的主机号分割出来一部分作为子网号,子网的划分由单位内部完成,但是对外仍表现一个网络,外部无法看到本单位内子网的划分。
+ 子网号可以全$0$或全$1$,但是主机号仍然不能全$0$全$1$
+ 子网的标识依靠子网掩码,其中网络号和子网号的部分全部位数为$1$,而主机号部分全部为$0$
+ 将子网掩码与$IP$地址逐位进行与操作,就可以得到子网网络地址。
+ A类地址的默认子网掩码是255.0.0.0。
+ B类地址的默认子网掩码是255.255.0.0。
+ C类地址的默认子网掩码是255.255.255.0
#### 子网掩码
在使用子网掩码的条件下,路由表不仅要给出目的网络地址和下一跳地址外,还需要给出目的网络的子网掩码
+ $A$类地址的默认子网掩码是$255.0.0.0$。
+ $B$类地址的默认子网掩码是$255.255.0.0$。
+ $C$类地址的默认子网掩码是$255.255.255.0$。
二进制|十进制
:-------:|:---:
@@ -211,98 +239,44 @@ C类|2097151|192.0.1|223.255.255|254
1111 1110|254
1111 1111|255
<span style="color:orange">注意:</span>可用子网数量不用减二。
**例题** 已知IP地址位141.14.72.24子网掩码为255.255.192.0,求网络地址。
已知子网掩码前两个八位都是255表示掩码前16位全部是1相与时不变所以网络前16位依然为141.14。
而子网掩码最后一个八位全部是0所以与24相与全部是0从而网络地址为141.14.x.0。
主要看子网掩码第三个八位既有0又有1的部分。72用二进制表示为0100 1000而192用二进制表示为1100 0000子网号为2位主机号为14位从而进行与操作得到网络号为64。
所以最后网络号为141.14.64.0。
#### 子网分组转发
路由表包括:
1. 目的网络地址。
2. 目的网络子网掩码。
3. 下一跳地址。
路由器转发分组的算法:
1. 提取目的IP地址。
2. 查看是否可直接交付。
3. 查看是否有特定主机路由,就直接按此路由传输。
4. 检测路由表中有无合适路径。
5. 默认路由0.0.0.0,发送给其他路由器查看是否有该地址。
6. 超过TTL丢弃并报告转发分组出错。
<span style="color:orange">注意:</span>由于子网可以全$0$和全$1$,所以可用子网数量不用减二。
#### IP广播
如之前的保留地址所展示,如果需要进行广播,则包含两种广播方式。
受限有限广播地址是32位全1的IP地址(255.255.255.255)。受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址此时主机可能还不知道它所在网络的网络掩码甚至连它的IP地址也不知道。在任何情况下路由器都不转发目的地址为受限的广播地址的数据报这样的数据报仅出现在本地网络中。
受限有限广播地址是32位全1的$IP$地址(255.255.255.255)。受限的广播地址是255.255.255.255。该地址用于主机配置过程中$IP$数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的$IP$地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。
直接广播地址包含一个有效的网络号和一个全1的主机号如果我们要求一个IP地址的直接广播地址那么需要根据IP地址与子网掩码将网络号部分与出来然后将所有的主机号位全部置1从而得到的地址就是该网络地址的直接广播地址。
直接广播地址包含一个有效的网络号和一个全1的主机号如果我们要求一个$IP$地址的直接广播地址,那么需要根据$IP$地址与子网掩码将网络号部分与出来然后将所有的主机号位全部置1从而得到的地址就是该网络地址的直接广播地址。
#### CIDR
+ 一般子网划分在同一个单位下的子网掩码都是相同长度的而无分类编址CIDR就是变长的子网掩码。
+ CIDR构建的超网可以在单位内部根据不同部门的主机个数分配不同数量的子网IP地址。
+ 通过CIDR就将子网划分的三级IP地址又回归为两级IP地址网络前缀+主机号)。
+ CIDR记法IP地址后加上/,然后写上网络前缀的位数。
+ 一般子网划分在同一个单位下的子网掩码都是相同长度的,而无分类编址$CIDR$就是变长的子网掩码。
+ $CIDR$构建的超网可以在单位内部根据不同部门的主机个数分配不同数量的子网$IP$地址。
+ 通过$CIDR$就将子网划分的三级$IP$地址又回归为两级$IP$地址(网络前缀+主机号)。
+ $CIDR$记法:$IP$地址后加上/,然后写上网络前缀的位数。
+ 也可用使用:二进制网络前缀*。
+ CIDR把网络前缀都相同的连续的IP地址组成一个CIDR地址块。
+ $CIDR$把网络前缀都相同的连续的$IP$地址组成一个$CIDR$地址块。
如根据128.14.35.7/20可以得到其二进制是10000000 00001110 0010|0011 00000111所以其最小地址就是将竖线后面的位全部变为0,最大地址就是将竖线后的位全部变为1即为128.14.32.0128.14.47.255,可用地址就是$2^{12}-2$个地址块就是128.14.32.0/20。
如根据$128.14.35.7/20$,可以得到其二进制是$1000\,0000\quad0000\,1110\quad0010|0011\quad0000\,0111$,所以其最小地址就是将竖线后面的位全部变为$0$,最大地址就是将竖线后的位全部变为$1$,即为$128.14.32.0$与$128.14.47.255$,可用地址就是$2^{12}-2$个,地址块就是$128.14.32.0/20$
#### 构成超网
将多个子网构成一个较大的子网就是构成超网,也就是路由聚合。
将多个子网构成一个较大的子网就是构成超网,即将网络前缀都相同的连续$IP$地址组成“$CIDR$地址块”。一个$CIDR$地址块可以表示很多地址,这也就是路由聚合。
方法就是将网络前缀缩短。
最长前缀匹配使用CIDR时查找路由表时可能得到多格匹配结果应该选择具有最长网络前缀的路由前缀越长地址块越小路由也越具体
如有两个路由表项$206.1.0.0/17$和$206.1.128.0/17$,路由器会发现这两个表项到的网络地址都是同一个,所以可以合并为一个更大的地址块$206.1.0.0/16$
**例题** 路由器R0的路由表见下表:若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组应该被转发到哪一一个下一跳路由器()
A. R1 B. R2 C. R3 D. R4
目的网络|下一跳
:-----:|:----:
132.0.0.0/8|R1
132.0.0.0/11|R2
132.19.232.0/22|R3
0.0.0.0/0|R4
其中D表示默认路由代表本路由表中找不到对应的路由只能交给其他路由器查找。如果ABC都不对D才能作为选项。
如果是R1网络前缀是8的话目的地址的网络号就是132.0.0.0,所以与路由表中目的网络网络号一致,可用作为下一跳的选项。
如果是R2网络前缀是11的话目的地址的网络号就是132.0.0.0,所以也可用作为下一条的选项。
如果是R3网络前缀是22的话目的地址的网络号是132.19.236.0,与路由表中目的网络网络号不一致,所以不能作为选项。
所以AB都是可选的而根据最长前缀匹配需要选择网络前缀最长的、地址最具体的所以选择B。
**例题** 某网络的IP地址空间为192.168.5.0/24采用定长子网划分子网掩码为255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是()。
A. 32, 8 B. 32, 6 C. 8, 32 D.8, 30
已知IP为192.168.5.0/24前24位都是网络前缀又采用定长子网划分所以要对后面八位进行子网划分。
子网掩码为255.255.255.248,所以前五位为子网号,后三位为主机号。所以子网号就是$2^5=32$。主机号为$2^3=8$但是全0全1不可用所以就是6。所以最后选B。
最长前缀匹配:使用$CIDR$时,查找路由表时可能得到多个匹配结果,应该选择具有最长网络前缀的路由,前缀越长,地址块越小,路由也越具体
### IPv6
无论是NAT技术还是CIDR技术都无法完全解决IPv4地址耗尽的问题所以就出现了IPv6从根本上解决地址耗尽的问题。
无论是NAT技术还是CIDR技术都无法完全解决$IP$v4地址耗尽的问题所以就出现了$IP$v6从根本上解决地址耗尽的问题。
解决的问题有:
1. IP地址不足。
1. $IP$地址不足。
2. 改进首部格式简化IP地址类型。
3. 快速处理/转发数据报。
4. 支持QoS服务质量指一个网络能够利用各种基础技术为指定的网络通信提供更好的服务能力是网络的一种安全机制用来解决网络延迟和阻塞等问题的一种技术
@@ -331,7 +305,7 @@ IPv6帧包括40字节即320位的基本首部再加上不超过65535字节的
1. 地址空间扩大由32位变为128位。
2. 将校验和字段彻底移除,减少每跳处理时间。
3. 将可选字段移出首部,变成扩展首部,更加灵活,且路由器一般不对扩展首部检查,提高处理效率。
4. 支持即插即用不需要DHCP协议。
4. 支持即插即用,不需要$DHCP$协议。
5. 首部是8字节的整数倍而IPv4首部是4字节的整数倍。
6. 只能在主机处分片而IPv4能在主机和路由器处分片。如过大在路由器会无法分片而无法传输的话会用ICMPv6返回差错报文
7. 支持资源预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
@@ -361,33 +335,29 @@ IPv6帧包括40字节即320位的基本首部再加上不超过65535字节的
## ARP协议
在实际网络的链路上传输数据帧时都必须使用MAC地址所以ARP协议就是完成主机或路由器IP地址到MAC地址的映射从而决定下一跳的走向。
在实际网络的链路上传输数据帧时,都必须使用$MAC$地址,所以$ARP$协议就是完成主机或路由器$IP$地址到$MAC$地址的映射,从而决定下一跳的走向,维护$ARP$表
数据帧的IP地址不变但是源与目的MAC地址会在不同的路由器中发生变化。
数据帧的$IP$地址不变,但是源与目的$MAC$地址会在不同的路由器中发生变化。
### ARP协议使用流程
1. 检查在主机或路由器上的ARP高速缓存如果有对应项就写入MAC帧。
2. 没有对应项就用FF-FF-FF-FF-FF-FF作为目的MAC地址并广播ARP请求分组同一个局域网内的所有主机都能收到该请求。
3. 目的主机收到请求后会向源主机单播一个ARP响应分组源主机收到后将该映射写入ARP缓存中。10-20min更新
4. 如果源主机将源MAC地址与目的MAC地址与操作发现目的主机不在同一个局域网就查询本局域网的默认网关地址并填入目的MAC地址传送到其他局域网。
1. 检查在主机或路由器上的$ARP$高速缓存,如果有对应项就写入$MAC$帧。
2. 没有对应项,就用$FF-FF-FF-FF-FF-FF$作为目的$MAC$地址,并广播$ARP$请求分组,同一个局域网内的所有主机都能收到该请求。
3. 目的主机收到请求后会向源主机单播一个$ARP$响应分组,源主机收到后将该映射写入$ARP$缓存中。($10-20min$更新)
4. 如果源主机将源$MAC$地址与目的$MAC$地址与操作,发现目的主机不在同一个局域网,就查询本局域网的默认网关地址并填入目的$MAC$地址,传送到其他局域网。
### ARP协议的典型情况
1. 主机A发送给本网络的主机B用ARP找到主机B的硬件地址。
2. 主机A发送给另一网络的主机B用ARP找到本网络上一个路由器网关的硬件地址。
3. 路由器发送给本网络的主机A用ARP找到主机A的硬件地址。
4. 路由器发送给另一网络的主机B用ARP找到本网络上一个路由器网关的硬件地址。
**例题** 主机发送IP数据报给主机B经过了5个路由器此过程中一共使用了多少次ARP协议
因为五个路由器所以有六段链路所以需要选择路由六次所以使用了六次ARP协议。
1. 主机$A$发送给本网络的主机$B$:用$ARP$找到主机$B$的硬件地址。
2. 主机$A$发送给另一网络的主机$B$:用$ARP$找到本网络上一个路由器(网关)的硬件地址。
3. 路由器发送给本网络的主机$A$:用$ARP$找到主机$A$的硬件地址。
4. 路由器发送给另一网络的主机$B$:用$ARP$找到本网络上一个路由器(网关)的硬件地址。
## ICMP协议
网际控制报文协议支持差错报告与网络探寻。主要通过发送特定ICMP报文来实现。
网际控制报文协议支持差错报告与网络探寻。主要通过发送特定$ICMP$报文来实现。
ICMP协议是网络层的协议ICMP报文是作为IP报文的一部分而传输的。
$ICMP$协议是网络层的协议,$ICMP$报文是作为$IP$报文的一部分而传输的。
![ICMP帧格式][ICMPformat]
@@ -400,30 +370,31 @@ ICMP协议是网络层的协议ICMP报文是作为IP报文的一部分而传
类型|值|说明
:-:|:-:|:-:
终点不可达|3|当路由器或主机不能交付数据报时就向源点发送终点不可达报文
源点抑制|4|当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
改变路由(重定向) |5|路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
时间超过|11|当路由器收到生存时间TTL=0的数据报时除丢弃该数据报外还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时就把已收到的数据报片都丢弃并向源点发送时间超过报文
参数问题|12|当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文
改变路由(重定向) |5|路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
![ICMP差错报文数据字段][ICMPdata]
#### 不应发送ICMP差错报文的情况
不应发送$ICMP$差错报文的情况
1. 对ICMP差错报告报文即使差错报文本身出错也不会管
1. 对$ICMP$差错报告报文(即使差错报文本身出错也不会管)。
2. 对第一个分片的数据报片之后的所有后续数据报片。
3. 对具有组播地址的数据报。
4. 对具有特殊地址如127.0.0.1等)的数据报。
4. 对具有特殊地址(如$127.0.0.1$等)的数据报。
#### ICMP询问报文
类型|值|说明
:-:|:-:|:-:
回送请求和回答报|8或0|主机或路由器向特定目的主机发出的询问收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态
时间戳请求和回答报|13或14|请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
回送请求和回答报|8或0|主机或路由器向特定目的主机发出的询问收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态
时间戳请求和回答报|13或14|请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
### ICMP应用
1. ping测试两个主机之间的连通性使用了ICMP回送请求和回答报文。
2. traceroute跟踪一个分组从源点到终点使用了ICMP时间超过差错报告报文。
1. $ping$:测试两个主机之间的连通性,使用了$ICMP$回送请求和回答报文。工作在应用层,直接使用网络层$ICMP$,而未使用$TCP$或$UDP$。
2. $traceroute$:跟踪一个分组从源点到终点,使用了$ICMP$时间超过差错报告报文。工作在网络层。
## 路由算法与协议

File diff suppressed because one or more lines are too long