网络层的通信:主机到主机
IP address:TCP/IP中的逻辑地址。
IPv4——32位, 2 32 2^{32} 232个地址
IPv6——128位, 2 128 2^{128} 2128个地址
IPv4地址是唯一的。唯一指的是每一个地址定义了在因特网上仅有一个设备。因特网上的设备永远不会有同样的地址。
地址空间指的是指该协议能用的地址的总个数。
IPv4能用的地址的总个数为 2 32 2^{32} 232。
点分十进制表示法,每个点分数的范围为0~255
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h51hCbf2-1664536049280)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/46fd6e97f59331f9edbb89dd229bd3f7-image-20220823161415543-dbb12c.png)]
分类寻址中,地址空间被分为A,B,C,D和E五类
当一个地址用二进制或者点分十进制表示时,可以由开头前几位求出地址的类型:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lTzER7l-1664536049281)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/222729a3b36879f5946345ead471684e-image-20220823161709927-1ceb56.png)]
注意,D类和E类是没有主机号的。
为那些具有大量的主机或者路由器的大型组织机构设计
为中型机构设计
为小型机构设计
多播可发送一个消息给同一多播组中的一组成员设备。
两种多播
为将来使用而保留
A类,B类,C类的掩码如下:
以/n的形式表示掩码,在classful Addressing中n是8,16和24.这种标记法称为Classless Interdomain Routing(无类域间路由选择 CIDR)
D类和E类没有掩码.
在IP地址空间中,保留了几个用于私有网络的地址。私有网络常用于公司,组织和个人网络,他们没有置于因特网中
划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
从主机号借用若干个位作为子网号subnet-id,而主机号Host-id也就相应减少了若干个位
I
P
:
:
=
{
<
n
e
t
−
i
d
>
,
<
s
u
b
n
e
t
−
i
d
>
,
<
h
o
s
t
−
i
d
>
}
IP ::= \{
当没有划分子网时,IP地址是两级结构;
划分子网后IP地址变成了三级结构
划分子网只是把IP地址的主机号host-id这部分再进行划分,而不改变IP地址原来的网络号net-id
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrXX0L49-1664536049283)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/0cfbe50828d9312024c56027ffef2653-image-20220823164327561-df5e13.png)]
两台计算机通信的过程:
1.判断自己与对方是否在同一网段
2.不相同,二者不在同一网段。封装帧时以网关的MAC地址作为目的MAC地址,交换机会把帧交给路由器接口
3.相同,二者在同一网段。封装帧时直接使用目标主机IP的MAC地址作为目的MAC地址,直接将帧发给目标地址
EXAMPLE:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvdlO5hW-1664536049284)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/722b24b2792ecb5edcd0401d9e3d47d4-image-20220823164501994-2437c0.png)]
(a)A和B可以互通
(b)A可以发给B,但是B无法发给A
无类编址仍提供了地址块
网络前缀来替代网络号和子网号
三级编址 -----> 两级编址
在无类寻址中,当一个小的或者大的实体需要连接因特网时,给他分配一个合适的地址块。
块的大小(地址的个数)按实体大小规模与性质来决定。
Restrictions:
CIDR的特点:
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
CIDR使用各种长度的**“网络前缀” (network-prefix)**来代替分类地址中的网络号和子网号。
I
P
:
:
=
{
<
n
e
t
v
o
r
k
−
p
r
e
f
i
x
>
,
<
h
o
s
t
−
i
d
>
}
IP ::= \{
IP地址从三级地址又回到了二级地址
CIDR把网络前缀都相同的连续IP地址组成“CIDR地址块”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UuK734iX-1664536049285)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/346b8bdaeb4901307868d7369d2e8361-image-20220823165041373-f35d46.png)]
背景:家庭用户和小型商业公司的需求增加,IP地址短缺
NAT:使用户在内部拥有大量的地址,在外部拥有少量的地址。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGkDY0qR-1664536049285)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/9164e7588fd1d9ed4d6a7ba2ed9c7a90-image-20220823165212300-4d6c57.png)]
路由器将一个专用网络与全局因特网相连的路由器有两个地址:
所有外发的分组都通过NAT路由器发送出来,该路由器用全球NAT地址来替代分组中的源地址。
所有的输入也要通过NAT路由器,该路由器用相应的专用地址来代替分组中的目的地址。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GAh2Ne3Y-1664536049286)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/bd4bf69d6f6b6354f8d4cfaac258b8c5-image-20220823165252755-947865.png)]
如何知道来自因特网的分组的目的地址?每个专用的IP地址属于某个特定的主机,NAT路由器有一个转换表。
NAT只有一个external address
实现私有地址和全球公有地址的一对一映射,公有地址分配给唯一且固定的内网主机。
转换表有两列:
Private address & External address
NAT有多个地址。
当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n个主机接入到因特网。NAT路由器IP地址数量有限时,专用网内较多数量的主机可轮流使用NAT路由器的全球IP地址。
同时使用IP地址+端口号
为了更有效地利用NAT路由器上的全球IP地址,常用的NAT转换表把传输层端口号也利用上。
使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址,因而可以同时和因特网上的不同主机进行通信。
静态NAT:实现了私有地址和全球公有地址的一对一映射,一个公有IP只会分配给唯一且固定的内网主机
动态NAT:
将内部网络的私有IP地址转换为公有IP地址时,IP地址对是不确定的、随机的,所有被授权访问Internet的私有IP地址可随机转换为任何指定的公有IP地址。
当ISP提供的共有IP少于网络内部计算机数量
网络地址端口转换PAT(Port address Translation):把内部地址映射到外部网络的一个IP地址的不同端口上。PAT与动态地址NAT不同,它将内部连接全部映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y7QFQ7z9-1664536049287)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/1237383701d97e93b3f59f0879410d5c-image-20220823165637707-cc84c5.png)]
PAT NOTE:
PAT把专用网内不同的源IP地址,都转换为同样的全球IP地址。
对源主机所采用的TCP端口号(无论是否相同),转换为不同的新的端口号。
从层次的角度看,PAT的机制有些特殊。
PAT路由器工作在传输层!
128位,十六进制冒号表示法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIZioXix-1664536049293)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/1312b888d6fe701fd18dd24edb2c5725-image-20220823170422421-fe16e4.png)]
缩短:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7lpzfMx-1664536049294)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/058feb8034a8d849a573f8d06bf57fdf-image-20220823170443905-739e48.png)]
2 128 2^{128} 2128个地址,划分为多个类,可变长类型前缀
基于提供者的单播地址前缀:
定义一个单独的计算机,发送到单播地址的分组必须传递到这个指定的计算机。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hr1nitse-1664536049294)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220104220733150.png)]
多播地址:
定义的是一组主机,而非一个主机。报文会发给每一个成员
任播地址:
发送给改组的任意一个成员
{
当前:
I
P
v
4
将来主流:
I
P
v
6
由A发送数据报到D,仅仅数据链路层和物理层,无法帮助路由器做出从哪个端口转发出去的选择。
需要设计网络层,IP地址进行路由选择。
网络层不仅负责主机间的传递,而且还负责通过路由器或者交换机对分组进行路由选择。
网络层中的交换是通过Packet Switching数据报交换的方式实现的。
p
a
c
k
e
t
s
w
i
t
c
h
i
n
g
{
面向连接的服务connection oriented service
无连接的服务connectionless service
packet\ switching
源端在发送一个分组之前首先与目的端建立一个连接,建立连接后,分组可以按照顺序依次从相同的源端发送到相同的目的端。
分组逻辑上连接在一起。
无连接是指交换机或路由器不保存有关连接状态的信息,不需要建立连接,也不需要拆除连接。
网络层协议独立地对待每个分组,而且每个分组与其他的分组没有任何关系。
分组可能不会沿着同样的路径到达目的地
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsiojHtN-1664536049295)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/29b51509eb66268018368d4d828c1d10-image-20220823171253857-7c76dd.png)]
Internet Protocol version4 网际协议第四版是TCP/IP协议使用的传输机制。
特点:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dcIxO3rS-1664536049295)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/1cb608e63c3753de642dd50fb759d3df-image-20220823172411830-e76053.png)]
数据报
20
−
65536
b
y
t
e
s
{
头部
H
e
a
d
e
r
:
20
−
60
b
y
t
e
s
{
固定首部
:
20
b
y
t
e
s
选项
:
40
b
y
t
e
s
数据
D
a
t
a
数据报20-65536bytes
VERSION:IP协议版本,现为IPv4,后将被IPv6取代
HLEN:头部长度,占4bit,表示20~60bytes——单位是4byte
Service:有服务类型Service type和差分服务Differentiated Service两种解释,占8bit
当做服务类型解释时,前三位为优先位Precedence,后四位为服务类型TOS位
a. Precedence
Precedence的3bit值从000到111,共8个优先级,当出现了拥塞等问题时,优先级较低的数据报将被丢弃。
IPv4中未使用优先级字段
b. TOS位
Differentiated Service
前6位为码点codepoints,后2位不用。
c
o
d
e
p
o
i
n
t
的两种使用方法
{
当码点字段最右边
3
位都是
0
时:最左边
3
位与服务类型中的优先级相同。
最右边三位不全为
0
,则六位含义为
64
种服务类型
{
第一类:
I
E
T
F
分配
32
种
第二类:本地机构
16
种
第三类:实验目的
16
种
codepoint的两种使用方法
Total Length:
总长度 = 数据长度 + 首部长度 = 总长度 + HLEN * 4
某些网络不允许65536bytes长度的数据报,则需要进行分段。总长度不得超过MTU。
【标准以太网允许的最小报文长度为64bytes
,数据部分最小为64 - 18 bytes = 46 bytes
】
【标准以太网允许的最大报文长度为1518bytes
,数据部分最大为1518-18bytes = 1500 bytes
】
数据长度
{
最小:
46
b
y
t
e
s
最大:
1500
b
y
t
e
s
数据长度
所以当IP数据报封装在标准以太网的帧中,当长度不足46Bytes时需要进行位数填充。
超过1500bytes时,需要进行分段。
identification:16bits
计数器,用于产生数据报的标识,在分段中使用
flag :标志,后两位有效
Fragmentation offset:片偏移 13bit
该片在原片中的位置,占13bits,以8byte为偏移单位
Time to live:生存时间,占8bit
标识数据报可经过路由器的最大值。
原因:若路由表故障,那么报文可能在两个或者更多的路由器之间传输很长的时间。
含义
{
原:维护时间戳,统一时间,比较复杂
现:路由器数,约定为任意两主机之间的路由器个数的
2
倍
含义
Protocol:高层的协议,如TCP,UDP
以便接收方网络层将数据交付给那个处理过程。
Header checksum:占16bits
只检验数据报的首部,不包括数据的部分。
数据报可以通过不同的网络进行传播
{
刚刚经过的网络:收到的帧的格式,长度
将要传输的网络:发出去的帧的格式,长度
最大传输单元MTU(maximum transmission unit
):数据字段的最大长度。
数据报封装成帧时,数据报的总长度必须小于这个最大数据长度。
由网络所使用的硬件和软件给出的限制所定义的。
IP数据报的最大长度时65535bytes。如果使用Hyperchannel那么不用进行分段。然而对于其他的物理网络,就要对数据报进行分割。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pBNBk6lx-1664536049297)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/d7e2804b71106b9f72cfe616638315fc-image-20220823190046127-6909f8.png)]
16bits,标识一个从源主机发出的数据报。数据报离开源主机后,这个字段与IPv4地址唯一定义这个数据报。
使用计数器来标识数据报。
IPv4发送一个数据包时,就将当前计数器中的值复制到identification字段中,并将此计数器的值+1。
当数据报分段时,标识字段的值就复制到所有的分段中:所有的分段有与原始数据报相同的identification。
帮助在目的端重组数据报。
3位的字段。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZH0NARRj-1664536049297)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105110237485.png)]
第一位保留为以后使用
第二位称为**“不分段”位 Do not fragments**
DF = 1:机器不能对该数据报进行分段。
如果无法将此数据报通过任何可用的物理网络,那么丢弃数据包,并向主机发送ICMP差错报文
DF = 0:根据需要对数据报进行分段
第三位为**“多分段”位More fragments**
13bit,表示这个分段在整个数据报中的相对位置。他是在原始数据报中的数据偏移量,以8字节为度量单位。
选项部分最多为40bytes。
分组 = 基本头部 + 有效载荷 = Base header + Payload
Version:版本,IPv6,即0110
Priority:优先级,定义了发生通信拥塞时的分组的优先级
IPv6的优先级字段定义了从相同源端发出每一个分组相对于其他的分组的优先级。
网络拥塞时,丢弃优先级低的分组
I
P
v
6
的通信量划分
{
c
o
n
g
e
s
t
i
o
n
−
c
o
n
t
r
o
l
l
e
d
可进行拥塞控制
n
o
n
c
o
n
g
e
s
t
i
o
n
−
c
o
n
t
r
o
l
l
e
d
不可进行拥塞控制
IPv6的通信量划分
congestion-controlled 可进行拥塞控制的通信量
可进行拥塞控制的通信量允许分组延迟到达,或丢失,或不按顺序接收
被指定为0-7的优先级。0是最低的,7是最高的。
noncongestion-controlled 不可进行拥塞控制的通信量
期待最小延迟的通信量,丢弃分组是不希望的,重传也是不可能的。
即,源端不能自己适应拥塞,实时音频和视频是这类通信量的很好的例子
优先级8~15被分配给不可进行拥塞控制的通信量 noncongestion-controlled traffic
flow label:流标号,用来对特殊的数据进行专门处理
从特定源端向特定目的端发送的分组序列,如果需要路由器的特殊处理,则称为分组流。
一个流是共享某些特性的分组序列,源地址和流标号的值唯一定义了一个分组流。
如相同的路径,使用相同的资源,具有相同的安全性,等等。
支持流标号的路由器有一个流标号表,这个表为每个活动的流标号设置一个项目,项目定义流标号需要的服务。
简单应用:加速路由器对分组的处理。
不用查找路由表并用路由选择算法确定下一跳的地址,直接在流标号表中查找下一跳的地址
复杂形式:支持实时音频和视频的传输
进程可以事先对这些资源进行预留。
流标号使用的三个原则
流标号由源主机指定给分组,是1到 2 24 − 1 2^{24} - 1 224−1之间的随机数。
如果主机不支持流标号,则置为0
所有属于同一个流的分组必须具有相同的源地址、目的地址、优先级和选项。
Payload length:2字节定义了除了基本头部在内的IP数据报的总长度
Next header:跟在基本头部之后的下一个头部。
可以是扩展首部
也可以上层协议的UDP或者TCP的头部
Hop Limit:跳数限制
和IPv4中的TTL功能相同
6个扩展头部,很多是IPv4的选项
扩展头部
{
hop by hop option
Source routing
Fragmentation
Authentication
Encrypted security payload
Destination option
扩展头部
包括Pad1、PadN和特大有效载荷。
将IPv4的严格的源路由和松散的源路由的概念结合在一起。
和IPv4概念相同,但是发生的地方不同。
{
IPv4:源端或者路由器进行分段
IPv6:只有源端才能进行分段,源端使用路径MTU发现技术,找到最小的MTU,进行分段
IPv4到IPv6的过渡需要平滑,设计了三种策略:
T
r
a
n
s
i
t
i
o
n
s
t
r
a
t
e
g
i
e
s
{
双栈协议
D
u
a
l
s
t
a
c
k
隧道技术
T
u
n
n
e
l
i
n
g
头部转换
H
e
a
d
e
r
t
r
a
n
s
l
a
t
i
o
n
Transition\ strategies
一个站点同时运行IPv4和IPv6。
当把分组发送到目的端时,主机要向DNS进行查询。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2LAJR6bW-1664536049298)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105171638319.png)]
两台使用IPv6的计算机通信,但是分组要经过IPv4的区域,那么分组需要有IPv4的地址
IPv6分组封装成IPv4分组,离开时去掉封装
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXs3Y8kD-1664536049298)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105171802910.png)]
头部格式通过头部转换彻底改变:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxcxmO5R-1664536049298)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105171920757.png)]
IP:best-effort delivery protocol,尽力传输协议。
没有流量控制和差错控制等特性,是使用逻辑寻址的主机到主机的协议。
IP协议需要其他的协议的帮助。
{
分组组装成帧,需要物理地址(
h
o
p
−
t
o
−
h
o
p
):
A
R
P
地址解析协议
物理地址到逻辑地址的映射
{
R
A
R
P
B
O
O
T
P
D
H
C
P
流量控制和差错控制:
I
C
M
P
协议
多播协议:
I
G
M
P
协议
物理地址
本地地址,管辖范围是本地网络。
物理地址在本地范围内是唯一的,但是在全局上不是。
物理地址大多是用硬件实现的。如以太网的48位的MAC地址,被写入主机或者路由器的网卡上
分组传递到主机/路由器需要两级地址:
{
物理地址
逻辑地址
两种映射实现物理地址<——>逻辑地址
将一个逻辑地址与物理地址联系起来,这个表储存在网络上的每个机器上。
通过【查表】,由IP地址得到物理地址。
局限性:物理地址可能因为某些原因改变
(1)更换网卡
(2)LocalTalk,计算机加电时,地址改变
(3)移动计算机从一个物理网络转换到另一个物理网络,引起物理地址的改变
当机器知道逻辑地址和物理地址之一时,可以利用协议求出另一个地址。
IP地址的获得:
但是IP数据报需要封装成帧,需要有接收方的物理地址。
主机或路由器发送一个ARP查询分组,该分组:
A
R
P
分组
{
发送方的物理地址
发送方的
I
P
地址
接收方的
I
P
地址
ARP分组
ARP查询在网络上广播broadcast:
该物理网络上的每一个系统都接收到此分组,但是只有系统B才会回答。
系统B会发送一个包含他的物理地址的ARP回答分组。【单播unicast】
然后系统A使用接收到的地址来发送到该目的地的所有地址。
会不会出现:B不在本网络上,那B没法回复,广播到了路由器,由路由器检查后返回路由器的物理地址。路由器怎么知道没人回复A
不会,A会先查自己的路由表,如果B不在本网络,那么一定广播的是路由器的IP,问路由器的MAC
路由器路由选择时为什么要运行ARP?和IP匹配后直接从路由表指示的那个端口发出去不就行了?
要获得下一跳的MAC地址
若系统A到系统B的每个分组均需要ARP请求广播:低效
系统通常发给多个分组到同一个目的地。接收到ARP回答的系统将他的映射保存在高速缓存中,保持20-30分钟(除非高速缓存已满)。之后发送ARP之前,现在高速缓存中寻找。
ARP分组是直接封装在数据链路帧中的,以太网帧如下:
Type字段指出了此帧携带的是ARP分组
ARP的工作过程:
发送方知道目标的IP地址
IP请求ARP协议产生一个ARP请求报文,填入发送方的物理地址,发送方的IP地址,目标的IP地址。目标的物理地址未知填入0
将报文发送给数据链路层,被封装成帧,使用发送方的物理地址作为源地址,而将物理广播地址作为目的地址。
每一个主机和路由器都收到这个帧。因为这个帧包含了广播的目的地址,所有所有的站点都将此报文送给ARP。除了目标机器外,所有的机器都丢弃这个分组。目标机器识别这个IP地址。
目标机器使用ARP回答报文进行应答,此回答报文包含了他的物理地址。使用单播
发送方接收到这个回答报文,他现在知道了目标机器的物理地址
携带发送给目标机器的IP数据报现在封装成帧,用单播发送给目的端。
Proxy ARP有子网化的效果
代理ARP是可以代表一组主机的ARP。
每当运行代理ARP的路由器收到一个寻找这些主机中的其中一个主机的IP地址的ARP请求时,ARP发送一个ARP回答,宣布他自己的物理地址,真正收到数据报后转发给相应的主机。
主机只知道其物理地址,不知道IP地址的情况:
Reverse Address Resolution Protocol:为仅知道物理地址的机器寻找他的IP地址而设计的。
每一个主机都有一个或者多个IP地址,这些地址是唯一的,并与物理地址无关。要创建一个数据报,那么主机就要知道他自己的IP地址。一个机器的IP地址通常可以从存储在磁盘文件中的配置文件中读出。
对于上面的无法知道IP地址的情况。可以根据自己的物理地址使用RARP协议从物理地址求得IP地址。
a. 过程
b. RARP缺点
不能通过网络边界,需要为每个子网指定一个RARP服务器。(几乎不用)
引导程序协议:客户机/服务器程序。
BOOTP是一个应用层协议。
BOOTP 报文被封装在UDP分组中,UDP分组被封装在IP数据报中
客户机使用:
两种情况:
客户机和BOOTP服务器在同一个网络上
客户机和BOOTP服务器不在一个网络上
使用一个主机或者路由器作为中介,中介知道BOOTP服务器的单播地址。
relay agent中继代理:收到这种类型的分组时,他在单播的数据报中封装报文并发送到BOOTP服务器。
BOOTP知道来自中继代理的报文,因为在请求字段中定义了中继代理的IP地址。接收到回答后,中继代理向BOOTP客户机转发它。
缺点:只能静态配置,不能动态配置。
主机请求IP地址,BOOTP查表,寻找与物理地址匹配的IP地址:关系必须已经存在。
动态主机配置协议:Dynamic Host Configuration Protocol
提供
{
静态
/
动态
人工
/
自助
地址配置
提供
a. static address allocation
与BOOTP相同,查询数据库,返回与物理地址匹配的IP地址
b. dynamic address allocation
有一个可用的IP地址池。DHCP客户机请求一个临时地址时,DHCP服务器查找可用的IP,指定一个在可协商期内有效的IP地址。
c. 请求过程
客户机发出请求时,DHCP先查找静态的,有则返回;否则在动态IP地址池中选择一个并返回,添加到动态的数据库
d. Manul and Automatic Configuration
DHCP可人工,可自动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tpTBn0lL-1664536049299)(…/…/…/…/Users/%E5%AD%99%E8%95%B4%E7%90%A6/AppData/Roaming/Typora/typora-user-images/image-20220824001825822.png)]
IP协议缺少差错控制和流量控制,需要ICMP配合IP使用。
m
e
s
s
a
g
e
t
y
p
e
{
error reporting message:向主机或者路由器报告错误(无法纠错)
query message:帮助主机
/
网络管理员从一个路由器
/
主机得到特定信息
message\ type
ICMP特点:
ICMP报文有一个8字节的头部和可变长的数据部分,8字节头部
ICMP使用IP数据报中的源IP地址,向原始的源方发送差错报告报文
差错报文的原因:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYvKqyzL-1664536049300)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105223227611.png)]
ICMP不产生差错报告的情况:
{
I
C
M
P
错误报告本身不再产生差错报告
分段的报文,不是第一个分组不产生错误报文
多播的
I
C
M
P
不产生差错报文
特殊的地址:全
0
/
全
1
不再发送差错报文
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqeBYrk2-1664536049300)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105223805241.png)]
当路由器不能找到路由或者主机不能传递数据时候,丢弃这个数据报,然后发回目的端不可达报文。
目的端不可达报文或者由路由器产生,或者由目的主机创建。
IP无流量控制,可能在路由器或者目的主机中产生拥塞,当来不及处理溢出的缓存队列时,只能将数据报丢弃。
使用ICMP的目的有两个:
TTL减为0时,数据报被丢弃,发送超时的ICMP报文
所有的分片没有在有限的时间内到达
IP首部中产生错误或者二义性,路由器或者主机丢弃这个分组,然后向源方发送参数问题报文。
路由器参与路由选择更新,但是主机不参与路由选择更新。
通常主机只知道一个默认路由,当主机向另一个网络发送报文时,就错误地发送给了这个默认路由
默认路由需要:
ICMP对某些网络进行诊断,4种报文实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kM0llV0e-1664536049301)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105225640076.png)]
回送请求和回答报文:诊断目的设计。确定两个系统是否能够通信
e.g. ping命令
时间戳请求和回答:确定IP数据报在两个机器之间的往返时间。
可用于时钟同步。
主机知道自己的IP,但是可能不知道自己的掩码。获取对应地址的地址掩码,向路由器发送地址掩码请求报文。不知道路由器地址时进行广播。路由器收到,使用地址掩码回复报文回复。
主机需要知道路由器是否正常工作。
ping:确定一个主机是否正常工作
如果目标主机工作,那么他用ICMP报文回答
traceroute程序:追踪中间路由的地址。
利用:【时间超时TTL】+【目的端不可达】两种差错报文。
Delivery:在网络层的控制下利用底层网络对一个分组进行处理
Forwarding:将一个分组传递到下一个站点的方法
Routing:转发过程中创建路由表的方法
路由选择协议routing protocol:用于不断更新在转发和路由选择中要查找的路由表。
delivery:网络层控制下利用底层网络对一个分组进行处理。
Note:
转发:将分组路由到他的目的端,转发要主机或者路由器有一个路由表。当主机有分组要发送时,或是路由器已收到一个分组要转发时,就要查找路由表以便求得到达最终目的端的路由。
路由表的设计:
假定主机和路由器使用classless addressing。在无类寻址中,路由表对涉及到的每一个地址块都有一行信息。
路由表需要根据网络地址进行查询,但是分组中只有目的地址而没有网络地址,所以我们还需要掩码mask。
在无类寻址中,一个路由表至少要有4列:
其中next-hop address指的是下一个路由器的ip地址。
Example:制作R1的路由表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyjK8flA-1664536049301)(…/…/…/…/Users/%E5%AD%99%E8%95%B4%E7%90%A6/AppData/Roaming/Typora/typora-user-images/image-20220824135100244.png)]
路由表中的掩码存放按照从长到短的原则排列,不按此顺序可能出现问题。
classless addressing将地址空间划分成可管理的地址块。
地址块的增多将增大路由器的寻找:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JmXpxsnd-1664536049301)(…/…/…/…/Users/%E5%AD%99%E8%95%B4%E7%90%A6/AppData/Roaming/Typora/typora-user-images/image-20220824135416468.png)]
Example:
路由:从某一网络设备出发去往某个目的地所经过的路径。路由器通过查询路由表为数据报选择转发路径。
路由表只存在于终端计算机、路由器及三层交换机中,二层交换机中不存在路由表。
路由表中的常用字段:
静态路由的优先级高于动态路由的优先级。
static routing table:有人工输入项目,大型网络不适用
dynamic routing table:使得路由表自动更新
需要有动态路由表,所以产生了多种路由选择协议。
路由器将收到的分组转发到哪个网络?取决于最优化原则
取决于度量metric
m
e
r
i
c
取决于协议的类型
{
R
I
P
:同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是
1
O
S
P
F
:允许管理员基于服务类型指定通过网络的代价
{
最大吞吐量
最小延迟
.
.
.
.
B
G
P
:可由网络管理员设置的策略
meric取决于协议的类型
互联网划分为自治系统autonomous system。
autonomous system :一个单一的管理机构管辖下的一组网络和路由器。
在自治系统内的路由选择称为域内路由选择interadomain routing
{
R
I
P
[Routing Information Protocol]:基于【距离向量
D
i
s
t
a
n
c
e
v
e
c
t
o
r
】的协议
O
S
P
F
[Open Shortest Path First]:基于【链路状态
l
i
n
k
s
t
a
t
e
】的协议
B
G
P
[Border Gate Protocol]:基于【路径向量
p
a
t
h
v
e
c
t
o
r
】的协议
在距离向量路由选择中,任何两个节点之间路由的最低代价是最小距离的路径。
每个节点都保留一张到其他的节点的最小向量距离表。每个节点也用这张表表示路由中的下一个节点指导分组流向目的节点。
最开始时:每个节点仅知道与他直接连接的邻站的距离
我们假定一个节点能向邻站发送报文并得到与这些邻站的距离。
初始的表如下:
距离向量路由选择的总的思想是与邻站共享路由信息
每个站点向邻站发送完整的表,让邻站决定哪个信息是有用的。
step1:接收节点在表的第二列加上它与发送节点之间的代价值。
step2:将发送节点名作为第3列【发送节点作为next】
step3:
什么时候更新?
{
周期性:通常
30
s
触发更新,路由表有变化时
{
节点接收邻站的表,引起自己的表的更新
节点检测到邻站链路有故障
解决方案:
定义无穷大defining infinity:将一个较小的值定义为无穷大,RIP使用16
分割范围 split horizon:每个节点仅能通过接口发送表的一部分,B的信息是从A获得的,那么这条信息将不会通知给A
在上图中,删除最后一样发送给A,那么问题不会发生
分割范围与毒性逆转Poison Reverse:分割范围与毒性逆转结合起来。节点B依旧通知X的值,但是如果信息源是A,那么用无穷大的距离表示警告
RIP:路由选择信息协议,在自治系统内使用域内路由选择协议
RIP基于的事实:
RIP优点:实现简单,开销较小
RIP缺点:
RIP算法:
注意收到的相邻的节点,所以默认两个节点直接的距离是1.即+1.
链路状态路由选择与距离向量路由选择基本原理不同:每个节点有该区域的全部拓扑结构
全部拓扑结构
{
所有节点和链路的列表
如何连接
{
类型
代价
条件
全部拓扑结构
基于假设:整个拓扑可以由每个节点的知识复合而成——迪杰斯特拉算法
如果网络中的任意一个点改变,就必须更新整个拓扑。
step1:为每个节点建立LSP(link state packet)
step2:使用一种可靠的方法向其他的路由器扩散LSP,称为flodding洪泛
step3:为每个节点构成一个最短路径树——Dijkstra
step4:基于最短路径树计算路由表
Open Shortest Path First 开放最短路径协议:基于link state的协议
OSPF在自治系统的基础上划分区域。一个area是包含在autonomous system中的一些网络,主机和路由器的集合。
自治系统可以划分为不同的区域,在一个区域中的所有网络必须是互相连接的。
自治系统中有一个特殊的area称为主干backbone,其他的区域称为从区域secondary area。
自治系统中的所有的区域必须连接到backbone上。
每个区域有一个区域标识,主干区域的标识是0.
path vector:自治系统之间的路由选择。
原理与距离向量路由选择相似。
path vector routing
中,假定每个AS中有一个节点的行为代表了整个自治系统,该节点称为代言节点speaker node。
一个自治系统的speaker node生成一个路由表并且通知相邻的自治系统中的代言节点。
初始化:每个代言节点只知道自己的自治系统内的节点的可达性。
每个代言节点与邻站的speaker node共享路由表
A1与C1和B1共享,C1与A1和D1共享…
当代言节点从邻站收到一个两列的路由表时,更新自己的路由表。
更新内容
{
增加不在表中的节点
A
S
与发送方之间的路径
更新内容
Path Vector Routing优点:
边界网关协议 Border Gateway Protocol
自治系统的类型:
特点:
边界网关协议 Border Gateway Protocol
自治系统的类型:
特点: