Week4、The Internet Protocol (IP)
1. IPv4
1.1 什么是IPv4地址?
主机需要一个IPv4地址才能参与因特网。IPv4地址是标识特定主机的逻辑网络地址。它必须在LAN中正确配置且唯一,才能进行通信。他还必须经过适当配置,并且在世界范围内是唯一的,以便进行远程通信。
将IPv4地址分配给主机的网络接口连接。此连接通常是设备中安装的网络接口卡(NIC)。带有网络接口的终端用户设备包括工作站、服务器、网络打印机和IP电话。某些服务器可以具有多个网卡,并且每个网卡都有自己的IPv4地址。提供到IP网络连接的路由器接口也将具有IPv4地址。
通过Internet发送的每个数据包都有一个源IPv4地址和目标IPv4地址。网络设备需要此信息,以确保信息到达目的地并将任何答复都返回到源。
观看下面的动画,以查看数据包如何通过Internet传播。

1.2 IPv4地址结构
IPv4地址只是一串32位二进制位(1和0)。人类很难阅读,因此,通常被分为4个8位字节。这种格式也很难读写和记忆,为了更好理解,每个八位被表示为它的十进制值,由小数点进行分隔,被称为点分十进制记数法。
例如 一台主机的IPv4地址会表示为 192.168.1.5,而不是11000000101010000000000100000101,这样复杂输入容易出错,地址就会不同,主机可能无法通信。
32位的IPv4地址是使用IP版本4定义的,并且当前是Internet上最常见的IP地址形式。有超过40亿个可能的IPv4地址使用32位的寻址方案。
1.3 二进制转十进制

1.4 Networks and Hosts
逻辑32位IPv4地址是分层的,并且由两必需部分组成。子网掩码均为255.255.255.0。第一部分标识网络,第二部分标识该网络上的主机。
eg: 192.168.5.11
其中前三个八位组(192.168.5)标识地址的网络部分
最后一个八位组(11)标识主机。这被称为分层寻址,因为网络部分指示每个唯一主机地址所在的网络。路由器只需要知道如何到达每个网络,而不需要知道每个单独主机的位置。
使用IPv4寻址,如果逻辑网络主机地址的网络部分不同,则一个物理网络上可能存在多个逻辑网络。例如:单个物理本地网络上的三台主机的IPv4地址(192.168.18)具有相同的网络部分,而其他三台主机的IPv4地址(192.168.5)有着不同的网络部分。IPv4地址中具有相同网络号的主机将能够彼此通信,但是如果不使用路由将无法与拥有其他网络号的主机进行通信。在此例中,存在一个物理网络和两个逻辑IPv4网络。
分层网络的另一个示例是电话系统。对于电话号码,国家/地区代码,区号和交换局代表网络地址,其余数字代表本地电话号码。

2. IP地址与子网掩码如何交互
2.1 逻辑与
为了识别出IPv4主机的网络地址,将IPv4地址与子网掩码进行逐位逻辑“与”运算。
考虑一个IPv4地址为192.168.10.10且子网掩码为255.255.255.0的主机。图二显示了转换后的二进制地址。图三中添加了主机子网掩码的二进制位。
图四的黄色部分标识与后的结果。图五显示了生成的网络地址 192.168.10.0 255.255.255.0





2.2 Are You on My Network?
每个IPv4地址都有两部分。主机如何知道哪一部分是网络部分,哪一部分是主机部分呢?这就是子网掩码的工作了。
Q: 主机不会自动划分前三八位和后八位???难道不等? 对,就是不等!!!配置IPv4主机时,将分配子网掩码和IPv4地址。和IPv4地址一样,子网掩码也有32位长。子网掩码表示IPv4地址的哪一部分是网络,哪一部分是主机。
子网掩码从左到右逐位与IPv4地址进行比较。子网掩码中的1代表网络部分,0代表主机部分。在所示示例中,前三个八位位组是网络,最后一个八位位组代表主机。
主机发送数据包时,会将其子网掩码与自己的IPv4地址和目标IPv4地址进行比较。如果网络位匹配,则源主机和目标主机都在同一网络上,并且可以在本地传递数据包。如果它们不匹配,则发送主机将数据包转发到本地路由器接口,以发送到另一个网络。
观看下面的动画,了解H1如何使用其子网掩码来确定H2是否在同一网络上。

在本地网络进行通信时,设备将发送ARP,以获取目标设备的MAC地址,然后他使用目标MAC和自己的MAC创建帧,并按自己的方式发送。
与不在同一本地网络的设备进行通信时,不能仅使用ARP,因为ARP是广播通信,而且ARP不会穿越本地网络。我们需要一个路由器,将数据包经由路由器转发出去,那么单个设备如何知道是否要使用ARP呢???
IP的设计方法之一是每个IP设备必须具有IP地址和子网掩码。子网掩码告诉设备其IP地址属于网络部分有多少位,属于主机部分有多少位。
计算时通常不需要知道目标网络的子网掩码,因为需要查找的是该地址的网络部分是否与特定的主机部分完全相同。
Q:会不会出现巧合,正好网络部分相同???2.3 子网掩码
我们在家庭或小型办公环境中看到的子网掩码大多是255.0.0.0 或255.255.0.0或 255.255.255.0。
为了计算网络上可以容纳的主机量,我们将数字2乘以主机部分位数的幂(2^8=256)。从这个数字中,我们必须再减去2,因为IPv4地址的主机部分全1是该网络的广播地址,主机部分全0表示网络ID,同样不能将其分配给特定主机。
确定可用主机数的另一种方法是将可用主机位的值相加(128+64+32+16+8+4+2+1 =255)。再从这个数字减去1。不必减去2,因为全0 的值为0,并且不包括在加法中。(PS:好蠢的办法。。。。。。)
而使用16位掩码时,主机地址有16位(两个八位组),并且主机地址在一个八位位组中可以全为1(255)。这似乎是广播,但只要另一个八位位组不全为1,它就是有效的主机地址。 记住:主机将所有主机位一起查看,而不是按八位位组值。
用点分十进制子网掩码地址来表示网络地址和主机地址会很麻烦。幸运的是,还有另一种识别子网掩码的速记方法,称为前缀长度。
具体来说,前缀长度是子网掩码中设置为1的位数。它以“斜杠符号”表示,即“/”,后跟设为1的位数。
例如: 子网掩码255.255.255.0的24位设为1,因此,“斜杠符号” = /24
子网掩码255.255.0.0的16位设为1,因此,“斜杠符号” = /16
子网掩码255.0.0.0的8位设为1,因此,“斜杠符号” = /8

PS: The router stores network addresses and determines reachability to the network.2.4 分类寻址和无类寻址
1981年,使用分类寻址分配了IPv4地址。根据A、B、C三个类别之一为客户分配了网络地址。地址分为以下几类。
- A类(0.0.0.0/8 - 127.0.0.0/8)-设计用于支持拥有超过1600万个主机地址的超大型网络。它使用固定的/8前缀(255.0.0.0),第一个八位字节表示网络地址,其余三个八位字节表示主机地址。
- B类(128.0.0.0/16 - 191.255.0.0/16)-设计用于支持具有大概65000个主机地址的中型到大型网络的需求。使用固定的/16前缀(255.255.0.0),两个高阶八位位组来表示网络地址
- C类(192.0.0.0/24 - 223.255.255.0/24) - 设计为支持最多254台主机的小型网络。使用固定的/24前缀(255.255.255.0),前三个八位字节表示网络地址,而其余八位字节表示主机地址。
PS:
还有一个D类多播块,由224.0.0.0到239.0.0.0组成,而E类实验地址块由240.0.0.0 – 255.0.0.0组成。
如图所示,分类系统将50%的可用IPv4地址分配给128个A类网络,将25%的地址分配给B类,然后C类与D和E共享其余的25%。时间,随着Internet的发展,很明显,这种方法浪费了地址,并且耗尽了可用的IPv4网络地址的数量。
在1990年代后期,由于新的和当前的无类寻址系统而放弃了类寻址。
今天使用的系统称为无类寻址。正式名称是“无类域间路由”(CIDR,发音为“ cider”)。通过无类寻址,客户可以接收IPv4网络地址和适合所需主机数量的任意大小的子网掩码。子网掩码可以是任意长度,并且不限于分类寻址中使用的三个子网掩码。


3、IPv4地址 与 广播地址
3.1 私有IPv4地址
公有IPv4地址是在ISP路由器之间进行全局路由的地址。然而,并非所有可用的IPv4地址都可以在Internet上使用。许多组织都使用称为私有地址的地址块来将IPv4地址分配给内部主机。
在20世纪90年代中期,由于IPv4地址空间的耗尽,私有IPv4地址被引入。私有IPv4地址不是唯一的,可以被内部网络使用。
具体来说,私有地址块是:
- 10.0.0.0 /8或10.0.0.0到10.255.255.255
- 172.16.0.0 /12或172.16.0.0至172.31.255.255
- 192.168.0.0 /16或192.168.0.0到192.168.255.255
重要的是要知道,这些地址块内的地址是不允许在互联网上,必须被互联网路由器过滤(丢弃)。例如,在图中,网络1、2或3中的用户正在向远程目的地发送数据包。Internet服务提供者(ISP)路由器将看到包中的源IPv4地址来自私有地址,因此将丢弃包。
注意:在RFC 1918中定义了私有地址。
大多数组织使用私有IPv4地址作为内部主机。然而,这些RFC 1918地址在互联网上是不可路由的,必须转换为一个公共IPv4地址。网络地址转换(NAT)用于在私有IPv4地址和公共IPv4地址之间进行转换。这通常在连接内部网络到ISP网络的路由器上完成。
家用路由器提供同样的功能。例如,大多数家用路由器将IPv4地址从私人地址192.168.1.0 /24分配给有线和无线主机。连接到互联网服务提供商(ISP)网络的家庭路由器接口被分配一个公共的IPv4地址。

3.2 IPv4地址的分配
为了使公司或组织支持网络主机,例如可从Internet访问的Web服务器,该组织必须分配一个公共地址块。 请记住,公共地址必须唯一,并且这些公共地址的使用受到管制并分别分配给每个组织。对于IPv4和IPv6地址来说是这样的。
IPv4和IPv6地址都由互联网数字分配机构(IANA)管理(http://www.iana.org)。IANA管理并向the Regional Internet Registries(RIR)分配IP地址块。
RIR负责为ISP分配IP地址,后者又向组织和较小的ISP提供IPv4地址块。组织可以根据RIR的政策直接从RIR获取其地址。
3.3 单播传输
单播通信用于客户端/服务器和对等网络中的普通主机到主机通信。单播数据包使用目标设备的地址用作目标地址,并且可以通过互联网络进行路由。
观看下面的动画,以查看单播传输的示例。
在IPv4网络中,应用于终端设备的单播地址称为主机地址。对于单播通信,分配给两个终端设备的地址用作源IPv4地址和目标IPv4地址。在封装过程中,源主机将其IPv4地址用作源地址,并将目标主机的IPv4地址用作目标地址。无论目的地是将数据包指定为单播,广播还是多播;任何数据包的源地址始终是始发主机的单播地址。
注意:在本课程中,除非另有说明,否则设备之间的所有通信都是单播的。IPv4单播主机地址在0.0.0.0到223.255.255.255之间。但是,在此范围内,有许多保留用于特殊目的的地址。这些特殊目的地址将在本章后面讨论。

3.4 广播传输
广播流量用于使用网络的广播地址将数据包发送到网络中的所有主机。对于广播,数据包包含目标IPv4地址,该地址在主机部分中带有全1。这意味着该本地网络(广播域)上的所有主机都将接收并查看该数据包。许多网络协议(例如DHCP)都使用广播。当主机接收到发送到网络广播地址的数据包时,主机将对该数据包进行处理,就像寻址到其单播地址的数据包一样。
广播可能是定向的或受限的。定向广播将发送到特定网络上的所有主机。例如,172.16.4.0 / 24网络上的主机将数据包发送到172.16.4.255。有限广播将发送到255.255.255.255。默认情况下,路由器不转发广播。
例如,172.16.4.0 / 24网络中的主机将使用目标地址为255.255.255.255的数据包向其网络中的所有主机广播。
观看动画,以查看有限广播传输的示例。

广播数据包时,它会使用网络上的资源,并使网络上的每个接收主机都处理该数据包。因此,应限制广播流量,以免对网络或设备的性能产生不利影响。由于路由器将广播域分开,因此细分网络可以通过消除过多的广播流量来提高网络性能。
3.5 多播传输
多播传输通过允许主机向订阅多播组的一组选定主机发送单个数据包来减少流量。
IPv4已将224.0.0.0到239.255.255.255地址保留为多播范围。 IPv4组播地址224.0.0.0到224.0.0.255仅保留用于本地网络上的组播。这些地址将用于本地网络上的多播组。连接到本地网络的路由器会识别出这些数据包已寻址到本地网络多播组,并且再也不会转发它们。保留的本地网络多播地址的典型用法是在使用多播传输来交换路由信息的路由协议中。例如,224.0.0.9是路由信息协议(RIP)版本2用于与其他RIPv2路由器进行通信的多播地址。
接收特定多播数据的主机称为多播客户端。多播客户端使用客户端程序请求的服务来订阅多播组。
每个多播组由一个IPv4多播目标地址表示。当IPv4主机订阅多播组时,主机将处理发往该多播地址的数据包以及发往其唯一分配的单播地址的数据包。
观看下面的动画,以查看客户端接受多播数据包的示例。
