网络中的数据包到底是如何转发的

1、IP地址

 1.1 IP地址概述

  在计算机通信中,为了识别通信对端,必须要有一个类似于地址的识别码进行标识。在数据链路中的 MAC 地址正是用来标识同一个链路中不同计算机的一种识别码。
  作为网络层的 IP ,也有这种地址信息,一般叫做 IP 地址。IP 地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。因此,在 TCP/IP 通信中所有主机或路由器必须设定自己的 IP 地址。不论一台主机与哪种数据链路连接,其 IP 地址的形式都保持不变。
  IP 地址(IPv4 地址)由32位正整数来表示。IP 地址在计算机内部以二进制方式被处理。然而,由于我们并不习惯于采用二进制方式,我们将32位的 IP 地址以每8位为一组,分成4组,每组以 “.” 隔开,再将每组数转换成十进制数。如下:

 1.2 IP 地址由网络和主机两部分标识组成

例如:
  IP地址是:  192.168.1.0
  对应的二进制:11000000.10101000.00000001.00000000

  子网掩码:255.255.255.0
  对应二进制:11111111.11111111.11111111.00000000

在这里插入图片描述

  • 相互连接的每个网段的网络标识能不重复(同一网段的IP网络标识相同)。

  • 而同一网段内相连的主机必须有不同的主机标识。

  • 由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的 IP 地址都不会相互重叠。即 IP 地址具有了唯一性。

  简单的来说,同一网段内的计算机网络标识相同,主机标识不能重复出现。路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。

 1.3 IP 地址的分类

  IP 地址分为四个级别,分别为A类、B类、C类、D类。它根据 IP 地址中从第 1 位到第 4 位的比特列对其网络标识和主机标识进行区分。

  • A 类 IP 地址是首位以 “0” 开头的地址。从第 1 位到第 8位是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0 是 A 类的网络地址。A 类地址的后 24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。

  • B 类 IP 地址是前两位 “10” 的地址。从第 1 位到第 16位是它的网络标识。用十进制表示的话,128.0.0.0~191.255.0.0 是 B 类的网络地址。B 类地址的后 16
    位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65,534个。

  • C 类 IP 地址是前三位为 “110” 的地址。从第 1 位到第 24位是它的网络标识。用十进制表示的话,192.0.0.0~223.255.255.0 是 C 类的网络地址。C 类地址的后 8位相当于主机标识。适用于小规模的局域网络,每个网络最多只能包含254台计算机。

  • D 类 IP 地址是前四位为 “1110” 的地址。从第 1 位到第 32位是它的网络标识。用十进制表示的话,224.0.0.0~239.255.255.255 是 D 类的网络地址。D类地址没有主机标识,常用于多播。
    在这里插入图片描述
      在分配 IP 地址时关于主机标识有一点需要注意。即要用比特位表示主机地址时,不可以全部为 0 或全部为 1。因为全部为 0 只有在表示对应的网络地址或 IP 地址不可以获知的情况下才使用。而全部为 1 的主机通常作为广播地址。因此,在分配过程中,应该去掉这两种情况。这也是为什么 C 类地址每个网段最多只能有 254( 28 - 2 = 254)个主机地址的原因。


2、子网掩码

  掩码,有掩饰的意思。我们知道,IP地址可以大概分为两部分,一部分是网络号,一部分是主机号。

  IP地址是:  192.168.1.0
  对应的二进制:11000000.10101000.00000001.00000000

  子网掩码:255.255.255.0
  对应二进制:11111111.11111111.11111111.00000000

  PS:注意,子网掩码二进制形式,前面的’1‘一定都是连续的!!!

  子网掩码的作用的就是,区分两个IP是否属于同一网段(同一子网)。子网掩码(二进制)前面有n个1,就表示IP地址(二进制)前面n位是网络号,后面的是主机号。有子网掩码的情况下,只要IP前面的网络号相同,就处于同一子网。同一子网内的IP可以直接通信。

例如
(1)
  IP地址是:192.168.1.0
  IP对应二进制:1100 0000.1010 1000.0000 0001.0000 0000
  子网掩码:255.255.255.0
  子网掩码对应二进制:11111111.11111111.11111111.00000000

分析:子网掩码前24位为1,则网络号为IP的前24位(二进制)。
   网络号是:1100 0000.1010 1000.0000 0001
表示IP从
1100 0000.1010 1000.0000 0001.0000 0000

1100 0000.1010 1000.0000 0001.1111 1111
都在同一网段,因为它们的网络号相同。
  十进制表示则为:IP在192.168.1.0 - 192.168.1.255之间的为同一网段。

(2)
  IP:192.168.1.188
  IP对应二进制:1100 0000.1010 1000.0000 0001.1011 1100
  子网掩码:255.255.255.224
  子网掩码对应二进制:11111111.11111111.11111111.11100000

分析:子网掩码前27位为1,则网络号为IP的前27位(二进制)。
   网络号是:1100 0000.1010 1000.0000 0001.101
表示IP从
1100 0000.1010 1000.0000 0001.1010 0000

1100 0000.1010 1000.0000 0001.1011 1111
都在同一网段,因为它们的网络号相同。
  十进制表示为192.138.5.160 - 192.138.5.191之间的为同一网段。

!!!这里要非常注意一点,网段内,子网掩码一定是和IP一同出现的,只有IP或只有子网掩码是没有任何意义的!!

  这里增加说一点,192.168.1.160\27,后面的27意思是,子网掩码的前27位为1。这是一种简写方式,一般很少见,但见到了最好也要知道是什么意思。

3、NAT

 3.1 定义

  NAT(Network Address Translation,网络地址转换)。用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信。NAT 主要是为了解决 IPV4 地址不够用的问题。因为一个设备就需要一个IP,出现了 IP 地址不足问题。

 3.2 IP伪装

  上面说的太官方,下面我来大白话说一下。例如在家庭局域网中,你的手机或者电脑的 IP(Windows下可以使用 ipconfig 命令查看),和你在百度上查询自己的 IP,二者肯定是不同的。因为家庭里你使用的是内网 IP,是不被公共互联网承认的。所以,内网如果想和公网通信,就必须得有一个公网承认的 IP。这个 IP 就是你的 ISP 服务商提供给你的那个公网 IP(当然,肯定是要花钱才提供给你的)。内网 IP 是由路由器分配(或者手动分配的),是不被外网承认的 IP。
  所以,当内网的数据包到达内网出口时(路由器),NAT 会自动把数据包的源 IP(也就是内网IP)改成 ISP 运营商提供给你的那个公网 IP,内网内的每个设备都是如此,只有这样才能与互联网进行通信。

  举个例子,当你使用家庭里面的电脑访问外边的互联网时,你的 IP 显示的是你公网的 IP。不仅仅是你的电脑,你家里的一切与路由器连接的设备访问公网时,从公网来看,显示 IP 都是 ISP 服务商提供给你的那个公网 IP。

  当数据包经过你家里的路由器时,路由器会进行 NAT 转发,把你数据包的源的IP伪装成ISP服务商提供给你的那个公网IP。这样就可以顺利的和外网通信了。包括你的手机、其他的一些移动设备,只要是连接上路由器的,都是使用 ISP 服务商提供给你的那个外网 IP 来与外界进行通讯。当然,这只是内网向外网通信。

 3.3 端口转发

  当外网想向内网的某台 PC 通信时,目的 IP 一定是 PC 所在的外网 IP。路由器怎么知道外网返回的数据包发给局域网中哪台主机呢?
  首先内网中的客户端将数据包传送给路由器,路由器解析数据包后发现,这个数据包是送给外网的。例如这个数据包的源IP:192.168.1.2,当路由器检测到这个数据包的目标 IP 是外网 IP 的时候,会把他的源IP改成真实的IP,会把源端口替换成一个索引值(一个新端口A),这个索引值与源数据包的IP和端口相对应,发送到互联网上。接收数据时,数据都会发送到路由器的 A 端口上,这时和原来生成的映射表(表里就是端口号A与源IP、源端口的映射)进行匹配,将数据包转发给 A 端口对应的内网 IP:192.168.1.2与其对应的端口号,这其实就是一个端口转发的过程。外网的数据包就成功的转到内网的正确主机上。

 3.4 IP的分配

  NAT地址转换,使用了IP地址的三个范围,这些地址已经被声明为私有化。任何网络可以在内部随意的使用这些地址。仅有的规则是不允许包含这些地址的数据包出现在Internet上。这三个保留地址范围是:

  • 10.0.0.0 ~ 10.255.255.255/8 (16777216个主机)
  • 172.16.0.0 ~ 172.31.255.255/12 (1048576个主机)
  • 192.168.0.0 ~192.168.255.255/16 (65536个主机)
 3.5 现状分析

  须知现在的家庭宽带,运营商基本上已经不会直接分配公网 IP 到户了,比如电信,都是通过 NAT44 来实现 IPV4 公网 IP 不够用的问题,路由器直接获得的 IP 都是10.X.X.X类似这种的私网 IP。也就是说,可能经过多次 NAT,才会获得一个公网IP。我们家庭路由器的IP很大程度上也不是公网IP,而是运营商内部IP。

所有 ISP(Internet服务提供商)提供的内网Internet接入方式,几乎都是基于 NAT 协议的。

4、端口映射

  上面已经讲解过端口转发,这里又为什么要再说一次呢?因为这里讲的与上边的 NAT 转发稍有不同。
  端口映射:端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当互联网上的用户访问外网主机的这个端口时,服务器(路由器)自动将请求映射到对应局域网内部的机器上。(外网主机指的是内网通过 ISP 运营商获得的公网 IP,可以是路由器,也可以是服务器)

比如
  我们在内网中有一台 Web 服务器,但是外网中的用户是没有办法直接访问该服务器的。于是我们可以在路由器上设置一个端口映射,只要外网用户访问路由器 IP 的 80 端口,那么路由器会把自动把流量映射到内网 Web 服务器的 80 端口上。并且,在路由器上还存在一个Session,当内网服务器返回数据给路由器时,路由器能准确的将消息发送给外网请求用户的主机。在这过程中,路由器充当了一个反向代理的作用,他保护了内网中主机的安全。

  网上有很多做端口映射的教程,但是这里要说一个前提,如果你想在路由器上做端口映射,一定要保证你路由器获得的IP是公网IP,不是运营商内网IP。具体操作是:(1)登录你自己家的路由器上去看看路由器的IP是多少(这里要注意,不是LAN口的IP!!)。(2)用百度搜索IP查询,查询到的IP。(3)对比二个IP,如果两个IP一样,说明你家路由器获得的是公网IP。

5、广播、多播、单播

  单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?

  • 单播:如果一个人对另外一个人说话,此时信息的接收和传递只在两个节点之间进行,那么用网络技术的术语来描述就是“单播”。但是通常使用“点对点通信”(Point to Point)代替“单播”,因为“单播”一般与“多播”和“广播”相对应使用。
  • 广播:“广播”在网络中的应用较多。同单播和多播相比,广播几乎占用了子网内网络的所有带宽。在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。
  • 多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,这种方式显然效率极低。如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。
     (1)采用多播方式,既可以实现一次传送所有目标节点的数据也可以达到只对特定对象传送数据的目的。  
     (2)IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。Windows 2000中的DHCP管理器支持多播IP地址的自动分配。
 5.1 多播技术的原理

  “多播”亦称“多点传送”(multicast),也就是一台主机发出的包可以同时被其他多个有资格的主机接收,这台主机和那些有资格的主机就形成了一个组,他们在组内的通信是广播式的。
  多播的工作原理是,将一个网络上的某些主机的网卡设置成多播传送工作模式,指定其不过滤以某一个多播传送地址作为目的物理地址的数据帧,这样,这些主机的驱动程序中就可以同时接收以该多播传送地址作为目的物理地址的数据帧,而其他主机的驱动程序却接收不到,这些主机在逻辑上便形成了一个“多播”组。采用这种技术,相对广播而言,可有效减轻网络上“多播”组之外的其他主机的负担,因为发送给“多播”组的数据不会被传送到它们的驱动程序中去处理,避免资源的无谓浪费。

6、路由

  1. 发送数据包时所使用的地址是网络层的地址,即 IP 地址。然而仅仅有 IP 地址还不足以实现将数据包发送到对端目标地址,在数据发送过程中还需要类似于“指明路由器或主机”的信息,以便真正发往目标地址。保存这种信息的就是路由控制表。
  2. 该路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。前者也叫做静态路由控制,而后者叫做动态路由控制。
  3. IP 协议始终认为路由表是正确的。然后,IP 本身并没有定义制作路由控制表的协议。即 IP 没有制作路由控制表的机制。该表示由一个叫做“路由协议”的协议制作而成。
 6.1 ARP协议

  ARP协议——地址解析协议。尽管Internet上的每台机器都有一个(或)多个IP,但是仅有这些地址还不足以支撑发送数据包。数据链路层硬件网卡,比如以太网卡并不理解Internet地址。在以太网的环境里,每一块NIC在出厂时都配置了一个唯一的48位以太网地址,简称MAC地址。NIC根据其48位以太网地址来发送和接收数据。它们对IP地址完全一无所知。
  那么,又是如何知道目标IP所对应的MAC地址的呢?
  情况一:客户机A和客户机B在同一局域网内。客户机A想给客户机B发消息,知道客户机B的IP地址192.168.1.0,那么,客户机A发送一个ARP广播包到以太网络上,问,谁的IP是192.123.1.0?收到ARP包的客户机,比对包中询问的IP,如果包中IP和自己的IP对应上了,就发送一个ARP响应包(把自己的MAC放在这个包里)。同时,客户机A会建立一个临时ARP缓存表,如果下次再想给客户机B发消息,便不用再发送ARP请求包去寻找MAC了。既然是"缓存"表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求。在我们的windows/macos系统下,可以通过命令行"arp -a"查看具体信息=
在这里插入图片描述
  情况二:当两个客户机不在同一局域网内时。客户机A想要知道客户机B的MAC地址,也是通过ARP询问的方式。当路由器接到这个ARP包时,发现目标IP在另一个局域网内,就会把这个包发送到另一个局域网。由另一个局域网的路由器负责寻找客户机B的MAC,最后把MAC返还给客户机A。

 6.2 DHCP

  DHCP(Dynamic Host Configuration Protocol ,动态主机配置协议)通常被用在大型的局域网络中,主要作用是集中的管理,分配IP地址,使网络环境中的主机动态的获得IP地址,Gateway地址,DNS服务器地址等信息,并能够提升地址的使用率。实际上,我们一般的家庭网络主要使用的就是 DHCP 服务。

  通常情况下,在我们的家庭网络设备,网络 IP 的配置项,一般都会选择“自动获得 IP 地址”,这其实就是依赖 DHCP 服务来分配 IP 地址。
在这里插入图片描述
我们的家庭网络中:
  当我们使用网线连接设备到路由器后,设备的 DHCP 客户端会发起一个 DHCP 请求,寻找 DHCP 服务器获取 IP 地址。该请求为 UDP 广播包。当该广播包被路由器接收到后(路由器要开启 DHCP 服务),路由器会分配一个未被使用的 IP地址,同时会将子网掩码、网关、DNS 服务器地址、租期信息连同 IP 地址一同回复给设备。

关于租期信息,IP 地址是有租约期限的,客户端必须提前续租 IP 地址,请求 DHCP 服务器更新租期。否则租约到期,就只能释放该IP地址,重新申请新的 IP 地址

  • 当租期超过50%(1/2)时,客户端会以单播形式向DHCP服务器发送DHCP Request报文来续租IP地址。如果收到DHCP服务器发送的DHCP ACK报文,则按相应时间延长IP地址租期。如果没有,还是保持使用该IP地址。
  • 等到租期超过87.5%(7/8)时,客户端以广播形式向DHCP 服务器发送DHCP Request报文来续租IP地址。如果客户端成功收到DHCP 服务器发送的DHCP ACK报文,则按相应时间延长IP地址租期。如果没有,则客户端继续使用该IP地址直至到期。客户端向DHCP 服务器发送DHCP Release报文来释放该IP地址,并开始新的IP地址申请过程。

7、DNS服务器

  你想访问百度时,输入 www.baidu.com 就可以了。DNS 就自动帮你把 www.baidu.com 转换成 IP。DNS 服务器里面存放的就是网址与 IP 的对应关系。

  就比如你想取某个商店买东西,每个商店都可以自己去工商局(管理域名的机构)申请一个不重复的名字,我们知道的也只有商店的名字(网址),但是不知道它在哪里(IP)。我们在地图上(网络中)输入商店名字(网址),DNS服务器就会自动寻找网址所对应的地址(ip)了。

  三大运营商、各大企业等都有大量的 DNS 服务器,只要设置对 DNS 服务器就可以与互联网正常通信。通常,我们家庭局域网内的设备,也是通过 DHCP 获取路由器的默认 DNS。这个 DNS 服务器地址可能是路由器的 IP(前提路由器具有这个功能,帮你寻找 DNS 服务器,并解析域名),也可能是运营商提供的这一区域的最适的 DNS 服务器地址。
在这里插入图片描述

8、网关

  网关是一个非常重要的概念。
  做这样一个操作,你可以查看一下家里的联网的无线设备,看看它们的网关填的是什么。大概率的情况是,他们的网关都是同一个地址——路由器的 LAN 口地址。

   PS:路由器的 WAN 口地址指的是路由器从 ISP 运营商那得到的IP。路由器的 LAN 口地址是属于内网的,不被外网承认。

  网关代表着一个指向的作用,代表着数据出口。你家里的所有无线设备与公网通信,数据包最终都要走路由器。所以,一般来说,家里的无线设备的网关一般都是路由器的 LAN 口地址。
  简单的来说,一台 PC 机的网关如果是 192.168.1.0,那么,这个 PC 机的所有流量都要发送到 192.168.1.0 这个网关,然后再由这个网关决定流量的下一步应该怎么走。这个网关可以在路由器上,可以在三层交换机上,也可以在防火墙上。192.168.1.0 只是作为一个中转站。

  常见的,一些公司会把网关设置成防火墙。这样,无论外边的网络怎么给内网发送数据,所有的数据都要经过网关。网关可以设置一些访问规则,违反这些规则的数据包不可能进入内网。做到安全防护的作用。

9、源目IP和源目MAC变化问题

  了解完上面的一些内容,就可以深入探讨一下,关于数据包在网络传输中 源/目的 IP、 源/目 MAC 的变化。

  • 数据包在传递过程中源 IP 地址,目的 IP 地址一直不变(数据包的传输,主要是工作在数据链路层、物理层,这个时候 IP 地址根本没有作用。IP 地址的作用在于路由器可以帮忙找到一条到达目的地址的最优路径。但最根本,数据包传输的时候,完全是 MAC 的事)
  • 每次经过交换机,源/目的 MAC 地址不变(这里指的是二层交换机)
  • 每次经过路由器,源 MAC 地址为本路由器接口 MAC 地址(变化1),目的 MAC 地址为该目的 IP 地址下一跳对应 IP地址的 MAC 地址(变化2)
  • 计算机发出的数据包,如果目的 IP 和本地 IP 处于同一网段,那么目的 MAC 地址是目的 IP 地址对应的MAC 地址;如果不是一个网段,那么目的 MAC 地址是网关的 MAC 地址

当主机 A 发向主机 B 的数据流在网络层封装成 IP 数据包,IP 数据包的首部包含了源地址和⽬标地址。主机A 会⽤本机配置的 24 位 IP 网络掩码 255.255.255.0 与目标地址进⾏与运算,得出⽬标网络地址与本机的⽹络地址是不是在同⼀个⽹段中。如果不是将IP数据包转发到网关,这个时候,就会通过 ARP 协议或者本地保存的 ARP 表获得网关的 MAC 地址

  • 当然,上述结论的形成,不考虑 NAT、VPN 等特殊情况。使用 NAT 协议情况下,源 IP 地址是会改变的,详见第三章 NAT 章节。

10、总结

  文章讲的相对比较乱,但是涉及到数据包转发的一个过程本身就相当的复杂。要想弄懂数据包如何转发,还是需要一定的网络基础。
  文章如有不当之处,还请不吝指教!!

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据MaxEnt模型的结果来设计和选取廊道源地,可以考虑以下步骤: 1. 确定目标物种或生态系统的适生区范围:根据MaxEnt模型的输出结果,首先确定目标物种或生态系统的适生区范围。这些区域通常被认为是物种或生态系统最适宜生存和繁衍的区域。 2. 识别并评估潜在的连接区域:在适生区范围内,识别可能用作廊道源地的潜在连接区域。这些区域应尽可能连接起不同的适生区,以促进物种的迁移和基因流动。 3. 考虑地理和生态特征:评估潜在的连接区域时,还需要考虑地理和生态特征。例如,优选那些具有较低的地形阻隔、较少的人类干扰、较高的植被覆盖度和较好的食物资源等特征的区域。 4. 进行空间分析和优化:使用GIS软件进行空间分析和优化,以确定最佳的廊道源地。这可能涉及到路径分析、连通性分析、栅格分析等技术,以最大程度地促进物种的移动和基因交流。 5. 考虑管理和保护措施:在设计和选取廊道源地时,还需要考虑管理和保护措施。这包括保护源地周围的生态环境、控制人类干扰、建立监测系统等。 需要注意的是,廊道设计和选取是一个复杂的过程,需要综合考虑生态学、地理学、人类活动等多个因素。在实际应用,可能还需要参考相关的研究和专家意见,以制定更具体和有效的廊道设计方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值