第四章 网络层1

一、交换和路由

交换机(Switch):主要用于将一栋大厦或一个校园里的多台设备连接到同一个网络上。

路由器(Router):主要用于将多个网络连接起来。

交换技术和路由技术的最大区别在于他们寻址的方式以及报文的转发方式上

  • 交换技术是发生在2层也就是数据链路层上,是直接利用mac地址建立会话;路由技术发生在网络层,需要通过ip地址建立路由表,然后进行数据通信
  • 在报文的转发方式上,交换技术是使用先收再转,路由技术是采用边收边转。

(一)了解各种网络设备(转发器、集线器、网桥、路由器等)所工作的层次和基本特性

1.转发器

转发器(Repeater)又被称为中继器或放大器,执行物理层协议,负责第一层(物理层)的数据中继,实现电气信号的“再生”。用于互连两个相同类型的网段,主要功能是延伸网段和改变传输媒体,从而实现信息位的转发。它本身不执行信号的过滤功能。

2.集线器

集线器(HUB)很像一个多接口的转发器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。它不具有智能处理能力,处理的数据只是电流而已,它采用共享带宽的工作方式,附接端口的所有计算机采用CSMA/CD方式竞争带宽的使用, 任一时刻只能由两台计算机之间进行通信。 

3.网桥

网桥(Gate Bridge)负责第二层(数据链路层)的数据中继。互连两个独立的、仅在低两层实现上有差异的子网。(交换机:实质上是一个多接口的网桥。)

4.路由器

路由器(Router)负责第三层(网络层)的数据中继。它能理解数据中的IP地址,如果它接收到一个数据包,就检查其中的IP地址,如果目标地址是本地网络的就不理会,如果是其他网络的,就将数据包转发出本地网络。它的作用在于连接相同或不同类型网络,并且能找到网络中数据传输最合适的路径即路由选择。

提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送

(二)了解数据平面和控制平面的不同要求

路由器:

1.数据平面

  • 从接口收到一个IP分组后查找转发表, 转发到下一跳
  • 如何转发分组,尽可能快转发

2.控制平面

  • 维护转发表
  • 如何转发分组,尽可能快转发

(三)了解虚电路和数据报的基本特性和区别,什么是动态虚电路?

1.虚电路(virtual circuit) 方式:面向连接的方式

  • 连接建立、数据传输和连接释放三个阶段
  • 仅仅在连接建立时进行一次路由选择,以后该连接上的所有分组沿着预先建立的路径传输
  • 虚电路: 建立了一条逻辑上的连接
    • 仍然采用分组交换(存储转发)方式,收到分组后在往下一个节点方向的端口处排队,等待链路空闲后发送

2.数据报(datagram)方式:无连接方式

  • 无需建立连接,在数据传输时决定路由
  • 每个分组根据头部包括的目的地址等控制信息来独立决定路由
  • 分组经过路径可能会各不相同,可能会丢失、延迟、失序

3.虚电路和数据报区别

 
数据报
虚电路 
路由选择
每个分组单独选择路由,查找转发表 
建立虚电路时选择路由,构建虚电路表,以
后所有分组都使用该路由
延时
分组传输延时
虚电路建立,分组传输延时 
节点失败的影响
除了在崩溃时正在由该节点
处理的分组会丢失,其他分组无影响
所有经过失效节点的虚电路都要被终止
拥塞控制和服务质量QoS
(Quality of Service)
难,分组可能失序到达
可进行准入控制,可进行差错和流量控制
地址(头部开销) 
每个分组包括源端和目的端的完整地址
每个分组含有一个短的虚电路号
状态信息
子网无需为分组流保存状态信息 
每个节点要保存一张虚电路表

4.动态虚电路

动态建立虚电路

  • 节点根据连接建立请求的源和目的地址等信息查找路由表,决定下一跳节点
  • 节点决定链路上区分虚电路的虚电路号,上一跳链路和下一跳链路采用不同的虚电路号
  • 实践中,一般由下一跳节点选择一个在该链路上唯一的虚电路号 

缺点:传输时延长——实时建立虚电路会非常耗时,使得链路建立的时间变长。释放虚电路,也会非常复杂和耗时(当传输大量短数据时,可能建立虚电路连接的时间比数据传输的时间都长)。

优点:按需建立虚电路,可以使得物理链路资源最大化的利用,不会像提前建立虚电路一样占用大量的资源。

(四)逐跳路由和源路由:扩散法和逆向学习法

根据选择路由的方式可以分为逐跳路由和源路由

1.逐跳路由

  • 每个节点仅知道路径上的下一跳节点
  • 每个节点只需要维护到目的地的下一跳节点信息即可
    • 可能短暂出现路由回路

2.源路由

发送者(源)决定途中经过的节点,并将其记录在分组头部

  • 通过第三方(如人工配置)获得网络的拓扑,决定路径或通过扩散等动态发现协议发现路径
  • 分组头部长度限制了源路由的规模

途中节点根据分组中的源路由信息,决定下一跳节点

源路由也可用于数据报和虚电路网络等

适合流量工程(traffic engineering),可以根据网络的拓扑和流量情况,决定分组流所经过的路径

3.扩散法(Flooding)

根据本地信息选择路由

将收到的分组向除到来链路外的所有其他链路转发

扩散法会将分组沿着各种可能的路径转发到所有节点

可用于:

  • 健壮性要求较高的场合,比如战地网络等
  • 判断可达性:只要连通则一定可达
  • 信息的分发:比如链路状态分组的扩散
  • 寻找节点间的最短路由:最早到达目的节点的路径

4.逆向学习法

仅仅根据本地信息选择

每个分组中包含源节点和经过节点的个数(或者花费

节点接收到分组时可了解到到源节点方向的路径花费,经过一段时间学习到最短路径

节点仅记录较好路径的变化,原有最短路径上的节点或者链路崩溃时无法了解到, 需要重新刷新节点对当前网络的了解

  • 频繁刷新:学习最短路径需要一段时间,从而可能使用不确定的路径
  • 周期过长:网络变化的反应太慢

二、了解Internet的设计原则:掌握什么是命运共享(无状态)、软状态、端到端

1.Internet的设计原则

  1. 目标1:连接各种类型的异构网络
  2. 目标2:路由器和链路故障仍能通信
  3. 目标3:有效利用网络的资源,支持各种类型的应用

针对目标2:

2.命运共享

命运共享(fate-sharing)策略:只要网络连通,端系统间的通信仍然可继续

3.无状态

无状态的路由设计:路由器不需要为端系统间的分组流维护状态信息

4.软状态

软状态机制:路由表的维护通过定期地刷新(路由信息交换)来完成,超时时状态被移走

5.端到端

端到端的设计原则:

  • 逐跳的差错控制和流量控制仍然会由于中间节点的问题需要在端系统实现这些复杂的功能
  • 在某中实现复杂的功能仅仅优化性能,而不是保证正确性

三、了解IP提供的单播、组播、广播和联播服务的特性

IP 只要求下层物理网络提供基本的数据递交功能以及MTU不低于576字节,提供不可靠无连接方式的数据递交服务

1.单播

单播(unicast):一到一

2.组播

组播/多播(multicast):一到多或者多到多

3.广播

广播(broadcast):一到所有

4.联播

联播/任播(anycast):一到多中任意一个

四、IP分组格式:掌握主要字段的作用,包括TTL/总长度/头部长度/Checksum等,了解IP选项的局限性

1.IP分组格式

IP分组头的长度为20-60字节。值得一提的是,TCP报头长度也为20-60字节。

2.主要字段的作用

  1. 版本字段:字段值为4表示IPv4,字段值为6表示IPv6。
  2. 分组头长度字段:该字段长度为4位,定义了以4字节为一个单位的分组头长度,分组头长度为20-60字节,因此该字段最小值为5(20字节),最大值为15(60字节)。
  3. 服务字段:占8bit,用于指示路由器如何处理分组。
  4. 总长度字段:该字段长度为16位,定义了以字节为单位的分组总长度,是分组头长度与数据长度之和。因为16位,所以最大长度为2^16-1,65535字节
  5. 标识字段: 根据标识字段ID值是否相同来判断不同的段是否属于同一个分组,从而确保不会混淆。
  6. 标志字段: DF=1表示不能对分组进行分段,DF=0表示可以分段。MF=1表示不是最后一个分段,MF=0表示接受的是最后一个分段。
  7. 段偏移: 表示分段在整个分组中的相对位置,段偏移是以8字节为单位来计数
    • 前面的分段携带数据长度为8的倍数
  8. 生存时间字段:
    • 生存时间字段又叫TTL,用来设定分组在互联网中的“寿命”,避免分组在网络中无限循环、无休止转发。通常是用转发分组最多的路由器跳数来实现。
    • 设计TTL是用来限制一个分组在互联网中的最大生存时间,TTL的初始值由源主机设置,经过一个路由器,它的值减1。当TTL的值变为0时,分组就被丢弃,并发送ICMP报文通知主机。
  9. 协议字段:指使用IP协议的高层协议类型,如ICMP、IGMP、TCP、UDP等。
  10. 头检验和字段:
    • 长度为16位,用于保证分组头数据完整性,只需要对分组头进行检验和计算而不需要对整个分组进行,因为高层数据会有自己相应的检验字段,检验和的方法和UDP、TCP的检验和类似。
  11. 地址字段:地址字段包括源地址与目的地址,都是32位。

3.IP选项的局限性

  1. 地址空间(32比特)有限
  2. 路由表越来越庞大,路由效率低
  3. 头部过于复杂:检验和,可变长,IP选项,无法快速处理和转发
  4. 没有安全性考虑
  5. 无法提供QoS保障
  6. 没有移动性支持
  7. 采用DHCPv4自动配置或者手工配置TCP/IP参数

五、掌握分段和重组:分段ID/分段偏移/长度/More Flag/Don't Fragment Flag

1.分段

每种网络规定数据链路层的帧的数据字段的最大长度称为最大传输单元(MTU)。

不同网络的数据链路层MTU的长度可能不同,因此路由器在接收到分组并准备转发到目的主机时,首先要根据下一个网络的数据链路层MTU,决定该分组在转发之前是否需要分段。当IP分组的长度大于MTU的长度时,就必须对IP分组进行分段

标识字段: 根据IP源地址和目的地址、标识字段ID值是否相同来判断不同的段是否属于同一个分组,从而确保不会混淆。

标志字段:(Don't Fragment Flag)DF=1表示不能对分组进行分段,DF=0表示可以分段。(More Flag)MF=1表示不是最后一个分段,MF=0表示接受的是最后一个分段。

每个分段包含分段偏移(13bit):

  • 分段携带的数据在原始IP分组中携带的数据部分所处位置的偏移量。单位为8个字节
  • 前面的分段携带数据长度为8的倍数
  • IP头部中的总长度与头部长度可知道分段携带的数据部分长度

2.重组

逐跳重组(透明分段法):可能多次分段和重组,每跳必须是同一个出口

接收方重组:途中可分段,最后在接收方重组

六、IP地址:了解A/B/C和D类地址,掌握子网分配方案,包括变长子网掩码

1.IP地址

采用点十进制方法描述:每个字节转换为十进制数字,中间以.隔开

考虑到不同的网络规模,引入A类、B类和C类地址,主机部分可以3、2或1个字节

主机部分:

  • 全0:表示本网络
  • 全1:可作为目的地址,表示网络中的所有主机,定向广播地址

网络部分和主机部分:

  • 全1: 255.255.255.255,可作为目的地址,本地/有限(limited) 广播地址,表示接口上的所有IP主机
  • 全0:0.0.0.0
    • IP分组头部的源地址:表示尚未知道所用的IP地址
    • 路由表中的目的网络地址:表示缺省路由

网络部分:

  • 全0:表示尚未知道网络部分的地址,很少使用

2.子网分配方案

三层层次结构:网络ID+子网ID+主机ID

IP地址 ::= {<网络号>, <子网号>, <主机号>}

外部路由器知道怎么到达网络ID,而本地路由器知道子网怎么划分,知道怎么到达子网中的主机

引入子网掩码知道子网的网络部分和主机部分

  • 32比特的整数,可采用点十进制方法描述
  • 如果为主机部分,则对应的比特为0,否则为1
  • 可采用按位与运算来截取网络部分
  • 实践中一般主机部分为最后的一些比特,用/n描述,n表示前面n个比特(前缀)都为网络部分

3.变长子网掩码

变长子网掩码(Variable Length Subnet Mask):

不同子网可采用不同长度的子网掩码。

  1. 先确定主机位的位数
  2. 先从IP需求大的子网下手

(一)CIDR:掌握如何进行汇集

 CIDR中文全称是无分类域间路由选择,英文全称是Classless Inter-Domain Routing,引入CIDR,抛弃IP地址类的边界,通过地址汇集的方法来描述连续地址块(某个网络)。

它使用如下的IP地址表示法:
IP地址 ::= {<网络前缀>, <主机号>} / 网络前缀所占位数

用于描述网络部分的网络掩码可以是任意长度,从0到32

  • 长度为31的掩码有两个地址,常用于路由器之间的点到点链路上。主机部分为0和1不 被解释为网络或广播地址
  • 长度为0的掩码相当于任意IP地址,表示缺省路由

转发表中可能会有多个表项匹配,需要采取最长前缀匹配原则:网络掩码最长的匹配

七、IP转发: 掌握IP转发的基本过程,掌握如何进行最长前缀匹配。了解Trie

1.IP转发

接收分组,查找转发表将分组转发到相应的外出接口

转发表根据路由表来确定

转发表一般包含:目的网络/网络掩码/下一跳/网络接口

  • 网络掩码为255.255.255.255(/32)的路由为主机路由
  • 网络掩码为0.0.0.0(/0)的路由为缺省路由,当转发表中找不到路由时采用
  • 直接路由:目的节点和当前主机在同一网络,可直接通过对应的接口递交
  • 间接路由:需要通过下一跳路由器转发

转发过程中不改变源和目的IP地址,改变的是MAC地址

2.最长前缀匹配

最长前缀匹配原则:如果路由表查表转发分组时发现有多条路由可选择时,则选择网络前缀最长的那条进行转发

3.Trie

基本性质

  1. 根节点不包含字符,除根节点意外每个节点只包含一个字符。
  2. 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。
  3. 每个节点的所有子节点包含的字符串不相同。

八、掌握ARP的基本操作过程,了解什么是gratutious ARP,掌握ARP伪装攻击

1.ARP

ARP(Address Resolution Protocol ) ,即地址解析协议,负责把目的主机的IP 地址解析成目的MAC地址

ARP地址和MAC地址映射保存在ARP缓存中,一定时间(60秒或30秒)后移走

  • ARP请求的目的站点(如B)缓存A的映射
  • ARP响应的接收者A缓存B的映射,ARP是无状态协议,并不记录是否发送过请求
  • 其他接收到ARP请求的站点(如C)在缓存中已包含A的映射时更新映射

ARP请求

  • 要解析地址时:在广播网络(Ethernet)中广播发送,目的MAC地址为全1

ARP响应

  • 单播发送,目的MAC地址为收到ARP请求中的发送者硬件地址

2.gratutious ARP

Gratuitous ARP不同于一般的ARP请求,它并非期待得到IP对应的MAC地址,而是当主机启动的时候,将发送一个Gratuitous arp请求,即请求自己的IP地址的MAC地址。

(1)验证IP是否冲突

一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。发送主机并不需要一定收到此请求的回答。如果收到一个回答,表示网络中存在与自身IP相同的主机。如果没有收到应答,则表示本机所使用的IP与网络中其它主机并不冲突。

(2)更换物理网卡

如果发送ARP的主机正好改变了物理地址(如更换物理网卡),可以使用此方法通知网络中其它主机及时更新ARP缓存。

3.ARP伪装攻击

A要和B通信,首先A广播ARP请求,B发送响应给A

攻击者伪造一个ARP响应,单播发送给被攻击者

节点收到伪造的响应后会更新缓存,即poisoning ARP缓存

X将收到的来自于A(或B)的分组转发给B(或A) A和B并没有觉察到中间人X的存在

九、ICMP:了解ICMP差错报告:那些IP分组会发送差错报告,差错报告包含哪些信息

1.ICMP

ICMP是Internet网络层协议的一部分,全称是 Internet Control Message Protocol,即互联网控制报文协议

  • 差错报告:在IP分组由于TTL超时,目的不可达,不能分段等无法递交时报告差错
  • 网络管理:判断目的地的连通情况以及途中经过的路由器(ping/traceroute)
  • 端系统配置:路由器和端系统之间通过ICMP消息为端系统配置某些协议参数(如缺省路由器)

严格来说,ICMP 既不是一个网络层协议,也不是一个传输层协议,而是介于两者之间的一个协议。

它的主要功能是传输网络诊断信息,信息主要包括两类:

  • 一类是 查询类报文 :主要用于信息的查询和采集,比如采集传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等等。
  • 一类是 差错诊断类报文 :主要用于诊断网络故障,比如传输报文被丢弃的原因是什么等等。

进一步看,ICMP 报头为 4 个字节:

  • 类型 type:占 1 个字节,表示较大范围类型分类的 ICMP 报文
  • 代码 code:占 1 个字节,表示较小范围类型分类的 ICMP 报文(type的细分)
  • 校验和 checksum:占 2 个字节,ICMP checksum 的计算方法类似于 IP checksum,但是不同的是 IP 只校验头部,ICMP 校验头部+数据部分

2.差错报告

ICMP差错报告报文只能报告差错,不能纠正差错,差错的纠正留给高层协议去做,它根据源IP地址将差错报告报文发送给IP数据报的源发送站点。共有五种差错报告报文:

  1. 目的不可达(类型号为3):当路由器找不到路由或者主机不能交付IP数据报时,就丢弃IP数据报,路由器或者主机向IP数据报的源站发送“目的不可达”报文。
    • 目的不可达的情况有:主机不可达;网络不可达;协议不可达(IP数据报要交付的协议TCP未运行);端口不可达;IP数据报需要分片,但DF标志已设置为1或源路由选择失败等。
    • 目的不可达报文的应用:如使用“禁止分片”的IP数据报进行路径MTU的探测等。
  2. 源站抑制(类型号为4):IP没有流量控制机制。路由器和主机的缓冲区有限,如果发送方发送数据的速率过快。将会导致缓冲区产生溢出。这时路由器或主机只能把某些IP数据报丢弃。
    1. 源站抑制报文的应用:给IP协议增加了一种流量控制功能。
  3. 时间超过(类型号为11):可分为两种情况,第一种是TTL=0:当IP数据报通过路由器时,IP首部的TTL字段减一,当路由器发现收到IP数据报的TTL=0时,就丢弃该报文,同时该路由器向源站点发送ICMP超时报文。第二种是分片不能重组:如果组成IP数据报的所有分片未能在规定的时限内达到目的主机,就不能进行分片的重组,则目的主机会丢弃已经收到的分片,并向源站点发送ICMP超时报文。
    • 时间超过报文的应用:Windows下的Tracert命令行工具是一个探测路由的程序,可以探测IP数据报达到目的时所经过的路由,它利用时间超过ICMP报文和IP数据报首部中的TTL值来实现其功能。
  4. 参数问题(类型号为12):如果路由器或目的主机发现IP数据报首部的某个字段不正确时,就丢弃该数据报并向源站发送ICMP参数问题报文。
  5. 改变路由(重定向,类型号为5):在特定情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由,路由器也会把初始数据报向它的目的转发。

不是所有的IP分组在无法递交时都会触发ICMP差错报告

  1. ICMP不报告ICMP消息本身的错误
  2. ICMP不报告IP分组头部检验和错误
  3. ICMP只报告IP分组的第一个分段的错误
  4. ICMP不报告广播和组播分组的错误

3.差错报告信息

ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。

  • 类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。
  • 代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。
  • 校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。
  • 标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。

(一)掌握Ping/traceroute/path MTU Discovery如何实现?

1.Ping

ping 命令用来在IP 层次上调查与指定机器是否连通,调查数据包往复需要多少时间。为了实现这个功能,ping 命令使用了两个ICMP 报文。

ping host消息包括ID、顺序号和可选的数据部分

  • 测试节点之间是否可达
  • 测试RTT
  • 测试丢包情况
  • -R选项使用IP选项纪录路由,可以记录途中经过的路由器,但最多9个路由器

ICMP的一个重要应用是PING,用来测试两个链接之间的联通性。PING是应用层直接使用网络层ICMP的一个例子。不通过传输层。

PING发送的是回送请求报文,服务器如果正常工作的话会回复回送应答报文。往返的ICMP上有时间戳,因此可以计算出往返时间。最后可以得出发送到哪个机器的IP地址,发送的、收到的和丢失的分组数。

2.traceroute

为了调查到通信对方的路径现在是怎么样了,使用的是traceroute 命令。用来跟踪一个分组从源点到终点的路径。

  1. 具体跟踪的做法是:源向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP数据报。第一个数据报P1的生存时间TTL为1,当P1达到路径上的第一个路由器R1时,R1先收下他紧接着将TTL的值减1。此时TTL为0了于是R1丢弃P1,并向源主机发送一个ICMP时间超过差错报告报文。
  2. 源主机接着发送第二个数据报P2。并将TTL设为2。P2先到达路由器R1.R1收下P2后将P2的TTL减一后再转发给R2,此时R2收到P2,先收起来然后将TTL减一变为0于是丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。
  3. 这样一直继续下去。当最后一个报文正好到目的主机时。TTL为1,主机不转发数据报也不讲TTL减1,但因数据报中存放的是UDP无法交付。因此发送一个ICMP终点不可达差错报告报文。

源主机就实现了自己的目的,这些路由器和最后一个终点不可达发送的ICMP正好给出了源主机想知道的路由信息。到达目的主机所经过的路由的IP地址以及达到其中每一个路由器的往返时间。

3.path MTU Discovery

PATH MTU Discovery:通过ICMP协议探测途中允许的MTU的下界,以后发送的IP分组都不超过该 MTU。

  • 发送一个足够大的分组(DF标志为1):可以取本地MTU和对方的MSS所计算的MTU的最小值
  • 如果途中网络的MTU不够大,源节点将收到ICMP不能分段差错报告
  • 发送一个小一些的分组(DF标志为1),进一步探测是否可以经过那些网络
  • 重复直到探测到可接受的程度,或者没有收到ICMP分段差错报告

十、掌握DHCP的基本工作过程,主要是DHCPDISCOVER/OFFER/REQUEST/ACK的作用,了解DHCP Relay

1.动态主机配置协议DHCP(Dynamic Host Configuration Protocol)

DHCP:(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

DHCP的作用:为客户机分发IP地址,子网掩码,网关,DNS服务,租期等参数。

DHCP的架构:架构为C/S结构:C——Client客户机 S——Server服务器

  • DHCP服务对应传输层是UDP协议,因为是C/S架构,所以DHCP服务是分为DHCP客户机占用UDP67号端口,DHCP服务器占用UDP68号端口

DHCP工作原理

  1. DHCP客户机发送DHCP discovery请求。注:DHCP客户机向DHCP服务器发送DHCP请求,来请求IP
  2. 局域网中的所以DHCP服务器都会回复DHCP offer,为客户机提供IP地址
  3. 客户机选择第一台DHCP服务器回复的IP地址,并且要发送DHCP request通告给局域网内所有的DHCP服务器,它选择了哪个IP和哪个DHCP服务器
    • 备注:客户机发送DHCP request通告的原因有两层,第一层是通告给所有的DHCP服务器,让其他没有被选中的DHCP服务器把未使用到的地址进行回收,第二次是通告给被选中的DHCP服务器,这个地址DHCP的客户机要使用了。
  4. 被选中的DHCP服务器收到DHCP request消息后,会给DHCP客户机回复一个DHCP ack,正式确认此IP可以被客户机使用,DHCP客户机将此IP与自己的MAC绑定起来以便于下次继续使用,而其他DHCP服务器将把分配给DHCP客户机的IP回收。

DHCP种的租期

  • DHCP客户机使用IP地址是有限的。一般来说DHCP客户机使用DHCP分配得到的IP地址到了租期的50%时,会主动的向DHCP服务器发出续约请求,DHCP服务器接受到请求后,DHCP服务器会检查此IP地址有没有被别的DHCP客户机抢先占用,如果没有就续约成功,如果被占用则续约失败,此时DHCP客户机将重新发起DHCP discovery请求来获得新的IP地址

2.报文

(1)Discover

DHCP客户端寻找DHCP服务器位置时所使用的报文。DHCP请求客户端时,因不知服务器位置,便在本地网络中以广播形式发送Discover请求报文。所有收到该报文的DHCP服务器会发送应答报文,以此知道服务器在网络中的位置。

(2)Offer
DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关 DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,但最终还需要客户端通过ARP来检测该IP地址是否重复。

(3)Request
DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是第一个Offer应答报文对应的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文通告选择的服务器。希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期到达50%时,会向DHCP服务器发送单播Request请求报文延续租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求延续租约。

(4)ACK
DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址。

(5)NAK
如果DHCP服务器收到Request请求报文后,没有发现有相应的租约记录,或者由于某些原因无法正常分配地址,则向DHCP客户端发送NAK应答报文,通知用户无法分配合适的IP地址。

(6)Release
当DHCP客户端不再需要使用分配IP地址时(一般出现在客户端关机,下线等状况)就会主动向DHCP服务器发送RELEASE请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址。

(8)Decline
DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以获得新的IP地址。

(9)Inform
DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。

3.DHCP Relay

DHCP Relay:DHCP中继(也叫做DHCP中继代理),其可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能
如果DHCP客户端与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的IP地址。
如果不在同一个物理网段,则需要DHCP Relay(DHCP中继代理)
用DHCP Relay代理可以去掉在每个物理的网段都要有DHCP服务器的必要,它可以传递信息到不在同一个物理子网的DHCP服务器,也可以将服务器的消息传回给不在同一个物理子网的DHCP客户机

DHCP Relay原理

  1. 当DHCP Client启动并进行DHCP初始化时,它会在本地网络广播配置请求报文
  2. 如果本地网络存在DHCP Server,则可以直接进行DHCP配置,不需要DHCP Relay
  3. 如果本地网络没有DHCP Server,则与本地网络相连的具有DHCP Relay功能的网络设备收到该广播报文后,将进行适当处理并转发给指定的其它网络上的DHCP Server
  4. DHCP Server根据DHCP Client提供的信息进行相应的配置,并通过DHCP Relay将配置信息发送给DHCP Client,完成对DHCP Client的动态配置

DHCP Relay设备修改DHCP消息中响应字段,把DHCP的广播包改成单播包,并负责在服务器与客户机直接转换

三层交换机可以作为DHCP Relay代理

十一、掌握NAT和NAPT的工作原理

1.NAT

 NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。

  • 网络被分为私网公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关
  • 网络访问只能先由私网侧发起,公网无法主动访问私网主机
  • NAT 路由器在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换
  • NAT 路由器的存在对通信双方是保持透明的;
  • NAT 路由器为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

NAT:一个全局IP对应一个私有IP(即一台计算机)(或者有一个IP地址池,里面有很多外部IP地址,当有内部IP地址要出去的时候,就随机选一IP地址作为其出口IP)。一对一,一个内部地址转换成一个外部地址进行通信。

2.NAPT

NAPT: Network Address Port Transfer 网络地址端口转换。也叫PAT。内网路由器或FW。

NAPT:一个全局IP+不同的端口号对应多个私有IP+端口号(即多台计算机不同端口),需要一个全局IP对应多台计算时,比如局域网内部计算机访问外界网络时,就得用NAPT。一对多,多个内部地址使用同一地址不同端口转换成外部地址进行通信。缺点在于其通信仅限于TCP或UDP。

  • 从内部网络到外部网络的方向:转换源地址+端口号
  • 从外部网络到内部网络的方向: 转换目的地址+端口号

一般80端口号作为网页服务器的访问端口

十二、掌握IP隧道的基本思想。了解GRE封装方式

1.IP隧道

IP 隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。

它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址(添加新的IP头)。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。IP隧道技术主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一IP地址,令一端也有唯一的ip地址。

从隧道出来之后:原有IP分组头部除了其TTL减一和必要的检验和的重新计算外,其他头部字段都不变

2.GRE

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。

GRE头部帧

GRE采用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协议。Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装

posted @ 2022-12-25 11:19  ImreW  阅读(95)  评论(0编辑  收藏  举报