计算机网络(四)网络层 上

由于要准备考试和网络层的知识很多,所以我将网络层的博客分为了上下两部分。

网络层提供的两种服务——虚电路服务和数据报服务

1. 虚电路服务

    传统电信网提供的主要业务是提供电话服务。电信网使用昂贵的程控交换机,用面向连接的通信方式,使电信网络能够向用户(实际上就是电话机)提供可靠传输的服务。
    当两个计算机进行通信的步骤:
    (1)应当先建立连接(但在分组交换中是建立一条虚电路VC(Virtual Circuit)),以保证通信双方所需的一切网络资源。
    (2)然后双方就沿着已建立的虚电路发送分组。
    (3)这样的分组的首部就不需要填写完整的目的主机地址,而只需填写这条虚电路的编号(一个不大的整数),因而减少了分组的开销。
    (4)如果这种通信方式再使用可靠传输的网络协议,就可使所发送的分组无差错按序地到达终点,当然也不丢失、不重复。
    (5)在通信结束后,要释放建立的虚电路。
计算机网络(四)网络层 上

2. 数据报服务

    因特网在设计上就采用了和电信网完全不同的思路。
    由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
    因特网的设计思路:
    (1)网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。
    (2)网络层不提供服务质量的承诺。也就是说所传送的分组,可能出错、丢失、重复或失序,当然也不保证分组交付的时限。
    这种设计思路的好处:
    (1)网络的造价大大降低。
    (2)运行方式灵活。
    (3)能够适应多种应用。
3. 虚电路服务与数据报服务的对比

 计算机网络(四)网络层 上

 

网际协议IP

1. 网际协议IP

    网际协议IP:是TCP/IP体系中两个最主要的协议之一,也是最重要因特网标准协议之一。
    与IP协议配套使用的还有四个协议:
    (1)地址解析协议ARP(Address Resolution Protocol)
    (2)逆地址解析协议RARP(Reverse Address Resolution Protocol)
    (3)网际控制报文协议ICMP(Internet Control Message Protocol)
    (4)网际组管理协议IGMP(Internet Group Management Protocol)
    上述四种协议与网际协议IP的关系:
    (1)在这一层中,ARP和RARP画在最下面,因为IP经常要使用这两个协议。
    (2)ICMP和IGMP画在这一层的上部,因为它们要使用IP协议。
计算机网络(四)网络层 上
    注:由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信,因此TCP/IP体系中的网络层常常称为网际层(internet layer),或IP层。

2. 将网络互连起来的一些中间设备
2.1 物理层——转发器(repeater)

    物理层使用的中间设备叫转发器(repeater)。

2.2 数据链路层——网桥或桥接器(bridge)

    数据链路层使用的中间设备叫网桥或桥接器(bridge)。

2.3 网络层——路由器(router)

    网络层使用的中间设备叫路由器(router)。路由器其实就是一台专用计算机,用来在互联网中进行路由选择。

2.4 在网络层以上——网关(gateway)

    在网络层以上使用的中间设备叫网关(gateway),用网关连接两个不兼容的系统需要在高层进行协议的转换。

3. 虚拟互连网络

    TCP/IP体系在网络互连上采用的做法是在网络层(即IP层)采用了标准化协议,但相互连接的网络则可以是异构的。
    许多计算机网络通过路由器进行互连,由于参与互连的计算机网络都使用相同的网际协议IP,因此可以将互连以后的计算机网络看成一个虚拟互联网络。
    虚拟互连网络:也就是逻辑互连网络,它的意思就是各种互连起来的各种物理网络的异构性本来是客观存在的,但是利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
    这种利用IP协议的虚拟互连网络可简称为IP网(IP网是虚拟的)。
    使用IP网的好处:当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议等)。
计算机网络(四)网络层 上

4. 分组在互联网中的传送

注:当很多异构网络通过路由器互连起来时,如果所有的网络都使用相同的IP协议,那么在网络层讨论问题就显得很方便。
- 分组在互联网中的传送过程:
(1)互联网中的源主机H1要把一个IP数据报发送给目的主机H2。
(2)根据分组交换的存储转发概念。
(3)主机H1先要查找自己的路由表,看目的主机是否就在本网络上。
(4)如果是,则不需要经过任何路由器而是直接交付,任务就完成了。
(5)如果不是,则必须把IP数据报发送给某个路由器(如图中的R1),R1再查找自己的路由表后,知道应当把IP数据报转发给R2进行间接交付。这样一直转发下去,最后由路由器R5知道自己是和H2连接在同一个网络上,不需要再使用别的路由器转发了,于是就把IP数据报直接交付给目的主机H2。
计算机网络(四)网络层 上

IP地址的分类

注意:
(1)在TCP/IP体系中,IP地址是一个最基本的概念。整个的因特网就是一个单一的、抽象的网络。
(2)IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。
(3)IP地址的结构使我们可以因特网上很方便地进行寻址。
1. IP地址的编址方法的三个历史阶段
1.1 分类的IP地址

    这是最基本的编址方法。

1.2 子网的划分

    这是对最基本的编址方法的改进。

1.3 构成超网

    这是比较新的无分类编址方法。

2. 分类的IP地址

    分类的IP地址:就是将IP地址划分为若干个固定类,每一类地址由两个固定长度的字段组成。
    (1)第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是惟一的。
    (2)第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。
    这种两级的IP地址可以记为 -> IP地址 ::= {<网络号>, <主机号>}
    由此可见,一个IP地址在整个因特网范围内是唯一的。

3. A~E类的IP地址

    A~E类的IP地址给出了各种IP地址的网络号字段和主机号字段。
    A、B、C类地址都是单播地址(一对一通信),是最常用的。
    D类地址用于多播(一对多通信)。
    E类地址保留为以后用。
计算机网络(四)网络层 上

4. IP地址——点分十进制记法

    对主机或路由器来说,IP地址都是32位的二进制代码。
    为了提高可读性,常常把32位的IP地址中的每8位用其等效的十进制数字表示,并且在这些数字之间加上一个点。这就叫点分十进制记法(dotted decimal notation)。
    例子:一个B类IP地址,其二进制的表示为10000000 00001011 00000011 00011111,用点分十进制记法的表示为128.11.3.31
计算机网络(四)网络层 上

常用的三类IP地址

注:可以指派的网络是由网络号中没被固定的字节计算出来的。
1. A类IP地址
1.1 网络号——占1个字节

    A类地址的网络号字段占1个字节,但前面的1位(0)已经固定,只剩下7位可以进行分配。即可指派的网络号是126个(即2^7-2)。
    网络号字段为全0的IP地址是个保留地址,意思是“本网络”。
    网络号为127(即01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信只用。
    若主机发送一个目的地址为环回地址(例如 127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。
    目的地址为环回地址的IP数据报永远不会出现在任何网络上,因为网络号为127的地址根本不是一个网络地址。。

1.2 主机号——占3个字节

    A类地址的主机号占3个字节,因此每一个A类网络中的最大主机数是2^24-2,即16777214。
    全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如,一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0)。
    全1的主机号字段表示该IP地址是“所有的”,即该网络上的所有主机。

注:IP地址空间共有2^32(即4294967296)个地址。整个A类地址空间共有2^31个地址,占有整个IP地址空间的50%。
2. B类IP地址
2.1 网络号——占2个字节

    B类地址的网络号字段占2个字节,但前面的2位(1 0)已经固定,只剩下14位可以进行分配。
    B类网络地址128.0.0.0是不指派的,而可以指派的B类最小网络地址是128.1.0.0。因此B类地址可指派的网络数是2^14-1,即16383。

2.2 主机号——占2个字节

    B类地址的每一个网络上的最大主机数是2^16-2,即65534,这里需要减2是因为要扣除全0和全1的主机号。

注:整个B类地址空间共约2^30个地址,占有整个IP地址空间的25%。
3. C类IP地址
3.1 网络号——占3个字节

-C类地址的网络号字段占3个字节,但前面的3位(1 1 0)已经固定,只剩下21位可以进行分配。
- C类网络地址192.0.0.0是不指派的,而可以指派的C类最小网络地址是192.0.1.0。因此B类地址可指派的网络数是2^21-1,即2097151。
3.2 主机号——占1个字节

    C类地址的每一个网络上的最大主机数是2^8-2,即254,这里需要减2是因为要扣除全0和全1的主机号。

注:整个C类地址空间共约2^29个地址,占有整个IP地址空间的12.5%。
4. A、B、C类IP地址的指派范围

计算机网络(四)网络层 上
5. 一般不使用的特殊IP地址

计算机网络(四)网络层 上

 

IP地址与硬件地址

1. IP地址与硬件地址的区别
1.1 IP地址

    IP地址是一种逻辑地址。
    IP地址称为逻辑地址,是因为IP地址是用软件实现的。
    IP地址是网络层及其以上各层(包括运输层、应用层等)使用的地址。
    IP地址放在IP数据报的首部。

1.2 硬件地址

    硬件地址是一种物理地址。
    硬件地址称为物理地址,是因为硬件地址是用硬件实现的。
    硬件地址是数据链里层和物理层使用的地址。
    硬件地址放在MAC帧的首部。

2. 数据中的IP地址与硬件地址
2.1 发送数据

    在发送数据时,数据从高层下到低层,然后才到通信链路上传输。
    使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。
    MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部。
    当IP数据报放入到数据链路层的MAC帧中以后,整个IP数据报就成了MAC帧的数据部分,因而在数据链路层看不见IP数据报的IP地址。
计算机网络(四)网络层 上

2.2 接收数据

    在接收数据时,数据从低层上到高层。
    连接在通信链路上的设备(主机或路由器)在接收MAC帧时,其根据是MAC帧首部的硬件地址。
    在数据链路层看不见隐藏在MAC帧的数据中的IP地址。
    只有在剥去MAC帧的首部和尾部后,把MAC帧的数据部分上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

2.3 具体例子

    例子:三个局域网用两个路由器R1和R2互连起来,现在主机H1要和主机H2通信。
    主机H1的IP地址是IP1,硬件地址是HA1。
    主机H2的IP地址是IP2,硬件地址是HA2。
    路由器R1由于同时连接到两个局域网上,因此它有两个硬件地址HA3和HA4。
    路由器R2由于同时连接到两个局域网上,因此它有两个硬件地址HA5和HA6。
计算机网络(四)网络层 上
    通信的路径是:H1->经过R1转发->再经过R2转发->H2。
计算机网络(四)网络层 上

 

IP数据报的首部

注:IP数据报的格式,能够说明IP协议都具有什么功能。
计算机网络(四)网络层 上
1. IP数据报首部——固定部分
1.1 版本

    占4位,指IP协议的版本。
    通信双方使用的IP协议的版本必须一致。
    IP协议版本号为4(即IPv4),IP协议版本号为6(即IPv6)。

1.2 首部长度

    占4位,可表示的最大十进制数值是15。
    这个字段所表示数的单位是32位字(即4字节),因此,当IP的首部长度为1111(即十进制的15)时,首部长度就达到最大值60个字节。
    最常用的首部长度就是20个字节(即首部长度为0101),这时不使用任何选项,是固定首部的长度。
    当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

1.3 区分服务

    占8位,用来获得更好的服务。

1.4 总长度

    占16位,指首部和数据之和的长度。
    数据报的最大长度为2^16 -1 = 65535字节。
    在IP层下面的每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个IP数据报封装成数据链路层的帧时,此数据报的总长度(即首部加上数据部分),一定不能超过下面的数据链路层的MTU值。
    虽然使用尽可能长的数据报会使传输效率提高,但由于以太网的普遍应用,所以实际上使用的数据报长度很少有超过1500字节的。
    为了不使IP数据报的传输效率降低,有关IP的标准文档规定,所有的主机和路由器必须能够处理的IP数据报的长度不得少于576字节。这个数值也就是最小的IP数据报的总长度。
    当数据报长度超过网络所容许的最大传送单元MTU时,就必须把过长的数据报进行分片后才能在网络上传送(“片偏移”字段相关)。这时,数据报首部中的总长度不是指未分片前的数据报长度,而是指分片后的每一个分片的首部长度与数据长度的总和。

1.5 标识

    占16位,指IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值付给标识字段。
    但这个标识并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。
    当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就会被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

1.6 标志

    占3位,但目前只有两位有意义。
    标志字段中的最低位记为MF(More Fragment)。
    (1)MF=1即表示后面“还有分片”的数据报。
    (2)MF=0即表示这已是若干数据报片中的最后一个。
    标志字段中的中间位DF(Don’t Fragment),意思是“不能分片”,只有当DF=0时才允许分片。

1.7 片偏移

    占13位,指出较长的分钟再分片后,某片在原分组中的相对位置。
    也就是说,相对于用户数据字段的起点,该片从何处开始。
    片偏移以8个字节为偏移单位。也就是说,每个分片的长度一定是8字节(64位)的整数倍。
    例子:一数据报的总长度为3820字节,其数据部分为3800字节长(使用固定首部),需要分片为长度不超过1420字节的数据报片。因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。于是分成3个数据报片,其数据部分的长度分别分为1400,1400和1000字节。原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
计算机网络(四)网络层 上

1.8 生存时间

    占8位,常用的英文缩写是TTL(Time To Live),表明数据报在网络中的寿命。
    由发出数据报的源点设置这个字段。
    其目的是为了防止无法交付的数据报无限制地在因特网中兜圈子,因而白白浪费网络资源。
    随着技术的发展,TTL字段的功能改为“跳数限制”。路由器在转发数据报之前就把TTL值减1。若TTL值减少到零,就丢弃这个数据报,不再转发。
    因此,现在TTL的单位不再是秒,而是跳数。
    TTL的意义是指明数据报在因特网中至多可经过多少个路由器。显然,数据报能在因特网中经过的路由器的最大数是255。
    若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。

1.9 协议

    占8位,指出此数据报携带的数据是使用何种协议,一遍使目的主机的IP层知道应将数据部分上交给哪个处理过程。
    常用的一些协议和相应协议的字段值。
计算机网络(四)网络层 上

1.10 首部检验和

    占16位,只检验数据报的首部,但不包括数据部分。
    这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。
    不检验数据部分可减少计算的工作量。
    为了进一步减少计算检验和的工作量,IP首部的检验和不采用复杂的CRC检验码而是采用以下算法:
    (1)在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。
    (2)用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段,
    (3)接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报,否则即认为出错,并将此数据报丢弃。
计算机网络(四)网络层 上

1.11 源地址

    占32位。

1.12 目的地址

    占32位。

2. IP数据报首部——可变部分

IP首部的可变部分就是一个选项字段。
2.1 可选字段(长度可变)

    选项字段用来支持排错、测量以及安全等措施,内容很丰富。
    此字段的长度可变,从1~40个字节不等,取决于所选择的项目。
    某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符。

2.2 填充

    最后用全0的填充字段补齐成为4字节的整数倍。

注:增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就把IP数据报的首部长度做成固定的。

IP层转发分组的流程

 

1. 根据目的网络地址来确定下一跳路由器,这样做的结果如下:
1.1 IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
1.2 只有到达最后一个路由器时,才试图向目的主机进行直接交付。

注:在互联网上转发分组时,是从一个路由器转发到下一个路由器。总之,在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址)。
2. 特定主机路由

    虽然因特网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即对特定的目的主机指明的一个路由。,这种路由叫做特定主机路由。
    采用特定主机路由的好处:
    (1)可使网络管理人员能够更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
    (2)在对网络的连接或路由表进行排错时,指明到某一主机的特定路由就十分有用。

注:特定主机路由是要到某一台机器的路由。特定网络路由是你到某一个子网的路由。特定主机路由也可视为特定网络路由的一个特例,即Mask为255.255.255.255的特定网络路由。
3. 默认路由

    默认路由是一种特殊的静态路由,指的是当路由表中与包的目的地址之间没有匹配的表项时路由器能够做出的选择。
    如果没有默认路由,那么目的地址在路由表中没有匹配表项的包将被丢弃。
    默认路由在某些时候非常有效,当存在末梢网络时,默认路由会大大简化路由器的配置,减轻管理员的工作负担,提高网络性能。
    主机里的默认路由通常被称作默认网关,默认网关通常会是一个有过滤功能的设备,如防火墙和代理服务器。
    默认路由和静态路由的命令格式一样,只是把目的地ip和子网掩码改成0.0.0.0和0.0.0.0,默认路由只能存在末梢网络中。

4. 分组转发算法

注:当发送一连串的数据报时,上述的这种查找路由表、计算硬件地址、写入MAC帧的首部等过程,将不断地重复进行,造成了一定的开销。尽管如此,也不能在路由表中直接使用硬件地址,因为使用抽象的IP地址,就是为了屏蔽各种底层网络的复杂性而便于分析和研究问题,这样就不可避免地多了一些开销。
- (1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
- (2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就要执行(3)进行间接交付。
- (3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(4)。
- (4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(5)。
- (5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(6)。
- (6)报告转发分组出错。

IP子网划分

1. 划分子网

    划分子网:又称作“子网寻址”或“子网路由选择”。
    IP子网划分:实际上就是设计子网掩码的过程。
    注:当没有划分子网时,IP地址为两级结构(IP地址::={<网络号>,<主机号>})。当划分了子网后,IP地址为三级结构(IP::={<网络号>,<子网号>,<主机号>}),划分子网只是把IP地址的主机号host-id进行再划分,而不改变IP地址原本的网络号net-id。

2. 子网掩码(subnet mask)
2.1 子网掩码的概念

注:子网掩码是每个使用互联网的人必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。

    子网掩码:是32位二进制数,是一个网络或一个子网的重要属性。
    子网掩码:又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
    子网掩码:只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分,并且不能单独存在,它必须结合IP地址一起使用。

2.2 子网掩码的分类
2.2.1 默认子网掩码

    默认子网掩码:即缺省(自动生成)的子网掩码。
    默认子网掩码:即未划分子网,对应的网络号的位都置1,主机号都置0。
    (1)A类地址的默认子网掩码:255.0.0.0 或 0xFF000000
    (2)B类地址的默认子网掩码:255.255.0.0 或 0xFFFF0000
    (3)C类地址的默认子网掩码:255.255.255.0 或 0xFFFFFF00
计算机网络(四)网络层 上

2.2.2 自定义子网掩码

    自定义子网掩码:即将一个网络划分为几个子网,需要每一段使用不同的网络号或子网号

2.3 子网掩码的编址技术

注:划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
2.3.1 子网掩码的计算方法

(1)利用子网数来计算
- 将十进制的子网数转化为二进制;
- 取得该二进制的位数为 N;
- 取得该IP地址所对应类地址的默认子网掩码,将其主机地址部分的的前N位置 1 ,即得出该IP地址划分子网的子网掩码;
- 例子:将B类IP地址168.195.0.0划分成27个子网,求子网掩码
第一步:(十进制)27=(二进制)11011
第二步:该二进制的位数为5,即N = 5
第三步:将B类地址的默认子网掩码255.255.0.0的主机地址前5位置 1,得到255.255.248.0,即为划分成 27个子网的B类IP地址168.195.0.0的子网掩码。
(2)利用主机数来计算
- 将十进制的主机数转化为二进制;
- 如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数为 N,这里肯定N=8;反之主机地址将占据不止8位;
- 使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即得出该IP地址划分子网的子网掩码;
- 例子:将B类IP地址168.195.0.0划分成若干子网,使每个子网内有主机700台,求子网掩码
第一步:(十进制)700=(二进制)1010111100
第二步:该二进制的位数为10,即N = 10
第三步:将B类地址的默认子网掩码255.255.0.0的主机地址主机地址全部置1,得到255.255.255.255,然后再从后向前将后10位置0,得到255.255.252.0,即为B类IP地址168.195.0.0划分成若干子网,使每个子网内有主机700台的子网掩码。
(3)网上看到的非常规计算方式
- 例子:将C类IP地址192.168.10.0,将200台机器划分成4个子网,求子网掩码
第一步:200台机器,4个子网,那么就是每个子网50台机器,C类IP地址的默认子网掩码为255.255.255.0;
第二步:大家都知道2的0次方到10次方,分别是1、2、4、8、16、32、64、128、256、512、1024;
第三步:如果你希望每个子网中有50个ip地址可以给机器用,那么你就最少需要准备给每个子网52个ip地址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比52多的最近的那位,也就是64,就是说选每个子网64个ip;
第四步:用网上大侠的办法:子网掩码应该是256-64=192,那么子网掩码为:255.255.255.192;
第五步:不相信?算算:0-63,64-127,128-191,192-255,这样你就可以把四个区域分别设定到四个子网的机器上了,是不是很简单?不需要软件算了吧;
2.3.2 网络地址、广播地址、地址范围、本网有几台主机的计算方法

    将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。
    将二进制的IP地址和子网掩码进行与运算,得出网络地址。
    将上面的网络地址中的网络地址部分不变,主机地址变为全1,结果就是广播地址。
    地址范围就是含在本网段内的所有主机网络地址+1(即为第一个主机地址),广播地址-1(即为最后一个主机地址),由此可以得出地址范围是:网络地址+1 至 广播地址-1 。
    主机的数量=二进制的主机位数-2,减2是因为主机不包括网络地址和广播地址。
    例子:已知C类IP地址192.168.100.5,C类地址的默认子网掩码255.255.255.0,求网络地址、广播地址、地址范围、主机数
    第一步:(IP地址)192.168.100.5=(二进制)11000000.10101000.01100100.00000101
    第二步:(子网掩码)255.255.255.0=(二进制)11111111.11111111.11111111.00000000
    第三步:IP地址和子网掩码进行与运算,得出网络地址为192.168.100.0, 具体如下图:
计算机网络(四)网络层 上
    第四步:将上面的网络地址中的网络地址部分不变,主机地址变为全1,得出广播地址为192.168.100.255
计算机网络(四)网络层 上
    第五步:地址范围是: 网络地址+1 至 广播地址-1 ,得出192.168.100.1 至 192.168.100.254
    第六步:主机数不包括网络地址和广播地址,得出28−2=254

无分类编址CIDR(构造超网)

1. 无分类编址CIDR(Classless Inter-Domain Routing,读音“sider”)

    无分类编址:即无类别域间路由。
    无分类编址:是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。
    无分类编址:将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。

2. CIDR最主要的两个特点
2.1 CIDR消除来了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前容许因特网的规模继续增长。

    CIDR把32位的IP地址划分为两个部分,前面的部分是“网络前缀”用来指明网络,后面的部分是“主机号”用来指明主机。因此,CIDR使IP地址从三级编址(使用子网掩码),又回到了两级编址,但这已是无分类的两级编址。
    CIDR还使用“斜线记法(slash notation)”,或称为CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。
    IP地址 ::= {<网络前缀>,<主机号>}

2.2 CIDR把网络前缀都相同的连续的IP地址组成一个“.CIDR地址块”。

    只要知道CIDR地址块中的任何一个地址,就可以知道这地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
    例子:已知IP地址为128.14.35.7/20是某CIDR地址块中的一个地址,求这个地址所在的地址块中的最小地址和最大地址
    *IP地址: 128.14.35.7/20 = 10000000 00001110 00100011 00000111
    *最小地址:128.14.32.0 = 10000000 00001110 00100000 00000000
    *最大地址:128.14.47.255 = 10000000 00001110 00101111 11111111
    注:为了方便地进行路由选择,CIDR使用32位的地址编码(address mask),地址编码是一串1和1串0组成的,而1的个数就是网络前缀的长度。例如,/20地址块的地址掩码是:11111111 11111111 11110000 00000000(20个连续的1),斜线记法中,斜线后面的数字就是地址掩码中1的个数。

3. 常用的CIDR地址块

注:每一个CIDR地址块中的地址数一定是2的整数次幂。除最后几行外,CIDR地址块都包含了多个C类地址(是C类地址的2n
,n是整数),这就是“构造超网”这一名称的来源。
计算机网络(四)网络层 上

 

网际控制报文协议ICMP

1. 网际控制报文协议ICMP(Internet Control Message Protocol)

    ICMP:是因特网的标准协议,但不是高层协议,而是IP层的协议。
    ICMP:是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
    ICMP报文:作为IP层数据报的数据,加上数据报的首部,组成IP数据报发生出去。
    ICMP报文的格式如下:
计算机网络(四)网络层 上

注意:
1.在网际层使用ICMP,是为了更有效地转发IP数据报和提高交付成功的机会。
2.控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
2. ICMP报文的种类
2.1 差错报告报文

计算机网络(四)网络层 上
2.2 询问报文

计算机网络(四)网络层 上
2.3 信息请求与回答报文

计算机网络(四)网络层 上
2.4 地址掩码请求与回答报文

计算机网络(四)网络层 上
2.5 路由器请求与通告告报文

计算机网络(四)网络层 上
注意:
1.现在已不再使用的ICMP报文有3种,分别是:”信息请求与回答报文”、”地址掩码请求与回答报文”和”路由器请求与通告告报文”。
2.ICMP报文的代码字段是为了进一步区分某种类型中的几种不同的情况。
3.ICMP报文的检验和字段是用来检验整个ICMP报文。因为IP数据报首部的检验和并不检验IP数据报的内容。
3. ICMP的应用

注意:ICMP的一个重要应用:分组网间探测PING(Packet InterNet Groper),用来测试两个主机之间的连通性。

    PING:使用了ICMP的“询问报文”中的“回送请求(即报文类型为8,代码为0)和回送回答报文(即报文类型为0,代码为0)”。
    PING:是应用层直接使用网络层ICMP的一个例子,它没有通过运输层的TCP或UDP。
    PING命令的应用例子:
    (1)PING本机
  计算机网络(四)网络层 上
    (2)PING别的主机的域名,比如百度
  计算机网络(四)网络层 上
    (Windows系统下)TRACERT/(Linux系统下)TRACEROUTE:是用来跟踪一个分组从源点到终点的路径。
    (1)TRACERT跟踪别的主机的分组路径,比如百度
计算机网络(四)网络层 上