1 两种服务

1.1 网络层提供的两种服务

在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是网络层提供的两种服务在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。

争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? ?

两种服务:网络层应该向运输层提供怎样得服务

  • 虚电路服务
  • 数据包服务

1.2 虚电路服务

  • 面向连接的通信方式
  • 建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。

如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点。

虚电路是逻辑连接

  • 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
  • 请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。

1.3 数据包服务

2 因特网采用的设计思路

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。

网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。

尽最大努力交付的好处:

由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。

如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。

采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。

虚电路服务与数据报服务的对比:

对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

3 网际协议 IP

3.1 虚拟互联网

网络层中间设备

中间设备又称为中间系统或中继(relay)系统。

  • 物理层中继系统:转发器(repeater)。
  • 数据链路层中继系统:网桥或桥接器(bridge)。
  • 网络层中继系统:路由器(router)。
  • 网络层以上的中继系统:网关(gateway)。

注: 现在说的网关一般指的是路由器接口,网关地址一般习惯使用本网段第一个地址或者最后一个地址

3.2 虚拟互连网络的意义

所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。

使用 IP 协议的虚拟互连网络可简称为 IP 网。

使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

4 IP地址


5 CIDR 和 VLSM

  • 有类网络:

    也叫主类网络或标准网络,就是指把IP地址能归结到的 A 类、B 类、C 类 IP,使用的是标准的默认子网掩码。

  • 无类网络:

    相对于有类网络,无类网络 IP 地址的掩码是变长的。在有类网络的基础上,拿出一部分主机 ID 作为子网 ID。

  • 超网:

    把多个小网络组合成一个大网络,称为超网(SuperNetting),也可以说子网掩码长度小于相对应的有类网络的叫超网。

  • 子网:

    有类网络划分成更小后的网络,称为子网(Subnet),也可以说子网掩码长度大于相对应的有类网络的叫子网。

5.1 CIDR 无类别域间路由

CIDR(Classless Inter-Domain Routing,无类别域间路由)本质是消除了传统的A类、B类和C类地址以及划分子网的概念,将多个地址块聚合在一起生成一个更大的网络,从而包含更多的主机。

CIDR 采用 8-30 位可变网络 ID(最大可用的只能为 30 位,即保留 2 位给主机位),而不是 A、B、C 类网络 ID 所用的固定的 8、16 和 24 位。

CIDR 表示方法:IP 地址 / n,n 表示 IP 地址中的前 n 位代表网络部分(n个二进制数1),其余(32-n)位代表主机部分。这种方法称为“斜线记法”,它又称为 CIDR 记法。

举个栗子:子网掩码 255.255.255.192,用 CIDR 表示是多少呢?

  1. 首先确认的是这是个 C 类网络地址( C 类的默认子网掩码为 255.255.255.0)
  2. 前面三个字节都是 255,转换成二进制都为 1,即 11111111.11111111.11111111,即 24 位 1。
  3. 后面一个字节是 192,转换成二进制为 11000000,即 1 占用了 2 位。
  4. 子网掩码共占用了 26 位 1,所以用 CIDR 表示为 / 26。
  5. 如果网络地址为 192.168.10.0,再加上 CIDR,最后表示为 192.168.10.0/26。

CIDR 支持路由聚合,能够将路由表中的许多路由条目合并为成更少的数目,因此可以限制路由器中路由表的增大,减少路由通告,减轻路由器的负担。

5.2 VLSM 可变长子网掩码

VLSM(Variable Length Subnet Mask,可变长子网掩码)规定了在一个有类(A、B、C类)网络内包含多个子网掩码的能力,以及对一个子网的再进行子网划分的能力。

每一个IP地址都包含了 2 部分:网络号和主机号。在有类网络中,32bit 的 IP 地址被分为 4 段,每段 8bit 来表示。这使得作为网络号的前缀必须是 8 位,16 位或者 24 位。当网络号是 24 位的时候,主机号只有 8 位,也就是说,可分配的最小的地址块是 256个(2^8=256,而实际可分配的主机地址还要减去两个,一个是网络地址,一个是广播地址,最后为254个),这个数量对于大多数企业来说是不够的。

而比这个大一点的IP地址块是网络号为 16 位的时候,这个时候可分配的地址块是 65536(2^16=65536),这个数量对于大多数公司又太多了。这导致无论公司选择哪种类型的网络,都可能对IP地址造成大量的浪费。

IP 地址如果只使用有类(A、B、C类)来划分,会造成大量的浪费或者不够用。VLSM 的诞生有效的解决了这个问题,可以在有类网络的基础上,通过对IP地址的主机号进行再划分,把一部分划入网络号,就能划分各种类型大小的网络了。网络号也不再仅局限在 8、16 和 24 位这几个数,而是灵活变化的大小了。

CIDR 与 VLSM 的区别

  • 在使用 CIDR 聚合地址时,将原来有类 IP 地址中的网络位划出一部分作为主机位使用。
  • 在使用 VLSM 划分子网时,将原来有类 IP 地址中的主机位按照需要划出一部分作为网络位使用。
  • CIDR:子网掩码往左边移,掩码 netmask 缩短了。
  • VLSM:子网掩码往右边移,掩码 netmask 增长了。
  • CIDR 是把几个有类网络合成一个大的网络(超网),用于路由地址聚合。
  • VLSM 是把一个有类网络分成几个小型网络(子网),用于更高效划分子网。

CIDR与VLSM总结:

在某种程度上来说,CIDR 和 VLSM 它们之间可以看做是逆过程。

CIDR 是把几个小网络聚合成一个大网络来做表示,而 VLSM 则是把一个大网络继续细分为几个小网络进行 IP 地址分配。

CIDR 能让路由器的路由条目得到有效的减少,从而减少路由通告,降低路由器负担,而 VLSM 则是充分利用 IP 进行地址分配来解决 IP 地址不被浪费的问题,节约 IP 地址空间,更为有效的使用。

6 子网划分

划分

如图:原网络部分为 192.168.1.0,子网掩码为 255.255.255.0,只有一个子网。

将 子网掩码 右移 2 为后,就多了 4 个子网。

合并网段:

7 ARP 和 RARP

7.1 ARP简介

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

7. 2 ARP高速缓存的作用

为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。

当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

7.3 使用 ARP 的四种典型情况

  • 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  • 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。

7.4 应当注意的问题

ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。

只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

7.5 逆地址解析协议 RARP

逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。

8 IP 数据报

8.1 组成

一个 IP 数据包由首部和数据两部分组成。

  • 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
  • 在首部的固定部分的后面是一些可选字段,其长度是可变的。

8.2 分析

IP 数据报首部的固定部分中的各字段

  • 版本——占4位,指IP协议的版本,目前使用的IP协议版本号为4(即IPv4)

  • 首部长度——占4位,课表示的最大数值 是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。

  • 区分服务——让数据包加上一个标记,来告诉网络上那些传输的数据,这些数据包在传的时候 是着急还是不着急。QOS服务质量

  • 总长度——占16位,指首部和数据之和的长度,单位位字节,因此数据报的最大长度位65535字节。总长度必须不超过最大传送单元MTU。

  • 标识——占16位,它是一个计数器,用老产生数据报的标识,不是序号,每产生一个数据包,就增加1。

  • 标志——占3位,目前只有前两位有意义。标志字段的最低位是MF。 MF=1表示后面“还有分片”。MF=0表示最后一个分片。标志字段中间的一位是DF。 只有当DF=0时才允许分片。

  • 生存时间 记位TTL (Time To Live) 占8位,数据报在网络中可通过的路由器数的最大值

    数据包每过一个路由器 TTL-1

  • 协议——协议(8位)字段指出此数据报携带的数据使用何种学语以便目的主机的IP层讲数据部分交给哪个处理>

  • 首部检验和——首部检验和(16 位)字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。

  • IP数据报首部的可变部分IP

    • 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
    • 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
    • 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。

    实际上这些选项很少被使用。

9 IP转发分组

9.1 IP 路由

路由就是路由器从一个网段到另外一个网段转发数据包的过程,即数据包通过路由器转发,就是数据路由。

网络畅通条件,要求数据包必须能够到达目标地址,同时数据包必须能够返回发送地址。

这就要求沿途经过的路由器必须知道到目标网络如何转发数据包,即到达目的网络下一跳转发给哪个路由器,也就是必须有到达目标网络的路由,沿途的路由器还必须有数据包返回所需的路由。

数据路由:路由器在不同网段转发数据包

网络畅通的条件:

  • 能去能回

  • 沿途的路由器必须知道目标网络下一跳给哪个接口

  • 沿途的路由器必须知道源网络下一跳给哪个接口

9.2 静态路由:

网络地址和子网掩码均为0的路由就是默认路由。Router(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.2

如图所示,内网的计算机需要配置IP地址、子网掩码和网关,网关就是 Server 的内网网卡的IP地址。在Server的两个连接,内网的网卡不需要配置网关,但是连接Internet的网卡需要配置默认网关。

注意

IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。

当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。

网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

10 ICMP(ping)

10.1 ICMP 简介

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。

ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。

ICMP 不是高层协议,而是 IP 层的协议。

ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。

10.2 ICMP 报文的类型

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

差错报告报文有五种:

  • 终点不可达
  • 源点抑制(Source quench)
  • 时间超过
  • 参数问题
  • 改变路由(重定向)(Redirect)

询问报文有两种:

  • 回送请求和回答报文
  • 时间戳请求和回答报文

11 路由选择协议

这样就把路由选择协议划分为两大类:

内部网关协议 IGP(Interior Gateway protocol):也叫作域内路由选择,即在一个自治系统内部使用的路由选择协议,如RIP 和 OSPF 协议。

外部网关协议EGP(External Gateway Protocol):也叫作域间路由选择,若源主机和目的主机处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。

11.1 内部网关协议 RIP

RIP 是一种分布式的基于距离向量的路由选择协议。

RIP 要求每一个路由器都要维护从它自己到其他每一个目的网络距离记录。

距离的定义:从一个路由器到直接连接的网络的距离定义为 1/0,其中每经过一次路由器就加 1,也称为“跳数”。

分布式路由的特点就是:每一个路由器都要不断地和其他一些路由器交换路由信息,周期性广播。

RIP协议的特点:

仅和相邻路由器交换信息。

路由器交换的信息使当前本路由器所知道的全部信息,即自己现在的路由表,包括到本自治网络的最短距离,以及到每个网络应经过的下一跳路由器。

按照固定的时间间隔交换路由信息。

路由器刚刚开始工作时,它的路由表是空的,经过若干次更新后,所有路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。

距离向量算法:找出每个目的网络的最短距离算法。

收到相邻路由器(其地址为 X)的一个 RIP 报文:

  1. 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。

  2. 对修改后的 RIP 报文中的每一个项目,重复以下步骤:

    若项目中的目的网络不在路由表中,则把该项目加到路由表中。

    否则

    若下一跳字段给出的路由器地址是同样的,则把收到的项 目 替换原路由表中的项目。

    否则

    若收到项目中的距离小于路由表中的距离,则进行更新,

    否则,什么也不做。

  3. 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。

RIP 协议的优缺点

RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。

RIP 协议最大的优点就是实现简单,开销较小。

RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。

路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

11.2 内部网关协议 OSPF

OSPF 协议的基本特点

“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。

“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF

OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

是分布式的链路状态协议。

三个要点

向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。

发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。

“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。

只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

链路状态数据库

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。

这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。

OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。

OSPF 划分为两种不同的区域

划分区域

划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。

在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。

OSPF 直接用 IP 数据报传送

OSPF 不用 UDP 而是直接用 IP 数据报传送。

OSPF 构成的数据报很短。这样做可减少路由信息的通信量。

数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。

OSPF 的其他特点

OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。

如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。

所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。

支持可变长度的子网划分和无分类编址 CIDR。

每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。

OSPF 的五种分组类型

  • 类型1,问候(Hello)分组。
  • 类型2,数据库描述(Database Description)分组。
  • 类型3,链路状态请求(Link State Request)分组。
  • 类型4,链路状态更新(Link State Update)分组, 用洪泛法对全网更新链路状态。
  • 类型5,链路状态确认(Link State Acknowledgment) 分组。

OSPF 的其他特点

OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。

由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。

OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

12 VPN

实质是在互联网上传私有数据的方式,并通过拨号等方式保证安全

13 NAT

它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

13.1 介绍

13.1.1 分类

NAT 有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。

其中,网络地址端口转换NAPT(Network Address Port Translation)则是把内部地址映射到外部网络的一个IP地址的不同端口上。它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与 动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。

NAPT是使用最普遍的一种转换方式,在HomeGW中也主要使用该方式。它又包含两种转换方式:SNAT和DNAT。

  • 源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。
  • 目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT。

13.1.2 应用

NAT主要可以实现以下几个功能:数据包伪装、平衡负载、端口转发和透明代理。

  • 数据伪装: 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。
  • 端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。
  • 负载平衡: 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。(不是很明白)
  • 失效终结: 目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。(如何转移的?)
  • 透明代理: NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。(如何重定向的?)

13.2 原理

13.2.1 地址转换

NAT的基本工作原理是,当私有网主机和公共网主机通信的 IP 包经过 NAT 网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。

如下图所示,NAT网关有2个网络端口,其中公共网络端口的IP地址是统一分配的公共 IP,为202.20.65.5;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机202.20.65.4发送了1个IP包(Dst=202.20.65.4,Src=192.168.1.2)。

当IP包经过NAT网关时,NAT Gateway会将IP包的源IP转换为NAT Gateway的公共IP并转发到公共网,此时IP包(Dst=202.20.65.4,Src=202.20.65.5)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT Gateway的公共IP,Web Server发出的响应IP包(Dst= 202.20.65.5,Src=202.20.65.4)将被发送到NAT Gateway。

这时,NAT Gateway 会将 IP 包的目的 IP 转换成私有网中主机的 IP,然后将 IP 包(Des=192.168.1.2,Src=202.20.65.4)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。转换示意图如下。

如果内网主机发出的请求包未经过NAT,那么当Web Server收到请求包,回复的响应包中的目的地址就是私网IP地址,在Internet上无法正确送达,导致连接失败。

13.2.2 连接跟踪

在上述过程中,NAT Gateway在收到响应包后,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以用静态NAT手工指定;但如果内网有多台客户机,并且各自访问不同网站,这时候就需要连接跟踪(connection track)。如下图所示:

在NAT Gateway收到客户机发来的请求包后,做源地址转换,并且将该连接记录保存下来,当NAT Gateway收到服务器来的响应包后,查找Track Table,确定转发目标,做目的地址转换,转发给客户机。

13.2.3 端口转换

以上述客户机访问服务器为例,当仅有一台客户机访问服务器时,NAT Gateway只须更改数据包的源IP或目的IP即可正常通讯。但是如果Client A和Client B同时访问Web Server,那么当NAT Gateway收到响应包的时候,就无法判断将数据包转发给哪台客户机,如下图所示。

此时,NAT Gateway会在Connection Track中加入端口信息加以区分。如果两客户机访问同一服务器的源端口不同,那么在Track Table里加入端口信息即可区分,如果源端口正好相同,那么在时行SNAT和DNAT的同时对源端口也要做相应的转换,如下图所示。(这里的理解灰常重要)

网络基础之网络层详解相关推荐

  1. 网络基础-IP地址详解

    IP地址介绍 IP地址是一个唯一标识,是一段网络编码(二进制),由32位组成的,它为互联网上的每一个网络和每一台主机分配一个逻辑地址 常见的IP地址,分为IPv4与IPv6两大类,当前广泛应用的是IP ...

  2. linux检查网络是否通畅_网络基础Ping命令详解(使用Ping这命令来测试网络连通)...

    相关知识点 BIOS 在计算机领域,BIOS是 "Basic Input Output System"的缩略语,译为"基本输入输出系统", 与前者读法相同.计算 ...

  3. 【计算机网络】6. 网络基础4之详解IP协议( IP协议头格式、IP地址管理、路由选择)

    目录 1. IP协议头格式 2. IP地址管理 2.1 IP地址的早期划分方式 2.1.1 A类 2.1.2 B类 2.1.3 C类 2.2 现在分配IP的方式:CIDR方式 2.2.1 引入子网掩码 ...

  4. 初识网络基础《网络七层模型详解》

    坚持原创输出,点击蓝字关注我吧 图片来自网络 目录 一.初识网络基础 二.网络七层模型详解 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层 三.总结 一.初识网 ...

  5. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. python 3.x 爬虫基础---http headers详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...

  9. 基础拾遗------webservice详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

最新文章

  1. pytorch 安装 pip+windows10+python3.6+CUDA10.0
  2. mysql.max links_Mysql的max_allowed_packet设定
  3. akka连接是什么_什么是Akka?
  4. cocos2dx中使用iconv转码(win32,iOS,Android)
  5. 设计java每行输出5个数_程序设计入门—Java语言 第五周作业
  6. HDU 4093 Xavier is Learning to Count FFT + 容斥原理 2011年上海现场赛C题
  7. 【自学Python:Day2】磨洋工的我一周一课……
  8. 二进制学习-反跟踪技术
  9. 戴尔服务器uefi安装win7系统,Dell Latitude 3490 使用 UEFI+GPT 安装 Win7 x64
  10. 台式计算机没有声音,我们家台式电脑没有声音,该怎样设置
  11. 如何使用加速度计实现倾斜角度计算
  12. php获取中文字符拼音首字母 阿星小栈
  13. 苹果4s怎么越狱教程_苹果u盘越狱教程
  14. 【ZCMU1919】kirito's 星爆气流斩(多重背包)
  15. Web 3.0让网络巨头们恐慌?Dapp爆发潮的到来会更让人颤抖!
  16. 微信小程序——获取用户个人信息
  17. Vue判断表单验证和判断单项验证是否成功
  18. JZOJ5006. A
  19. linux系统怎样安装驱动程序,linux下网卡驱动安装全过程
  20. c语言Dvv实验报告,电渗实验报告

热门文章

  1. 【计算机英语】学习从现在开始,行动起来
  2. 都在用MySQL!为啥你的SQL慢?为啥你建的索引常失效?
  3. oracle数据库new关键字,Oracle筑表关键字解释
  4. 毕业论文参考文献格式CSL的生成(有鱼也有渔)
  5. 数据60秒 | 金仓K宝带你秒懂数据库(下)
  6. 【printf】sprintf字符串转数值、数值转字符,拼接字符,函数详细解释 Printf 打印数值...
  7. 用Python里面的Xpath完成一个在线汇率转换器!很实用
  8. 用Matlab写脚本求解线性方程组,让大家拥有一个线性方程组计算器
  9. H5当中背景图像定位方法(position大图定位小图简单版本)
  10. 学习笔记——仅仅为了留下Pima印第安人糖尿病发病数据集的网址