网络层提供的两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的端,在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争议。
争论焦点的实质就是:在计算机通信中,可靠交付应该由谁来负责?是网络还是端系统?
- 比如说,我们买了一份快递,厂家(代表网络)发送后,我们迟迟没有收到,应该去找厂家,还是找快递公司(端系统)?
两种服务:网络层应该向运输层提供怎样的服务?
- 虚电路服务
- 数据报服务
电信网:虚电路
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接进行消息转发,而并不是真正建立了一条物理连接。
- 请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,并不完全一样。如图:
- 如果黑色加粗线条中间的路由器出了故障,那么这条线路就会无法传输消息。H1与H2将无法通信。
因特网:数据报服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传的分组可能出错、丢失、重复和失序(不按顺序到达终点),当然也不保证分组传送的时限。
尽最大努力交付的好处:
- 由于传输网络不提供端到端的可靠传输服务,这就使得网络中的路由器可以做的比较简单,而且价格低廉(与电信网的交换机相比较)。
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、浏览量控制等等)。
- 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
- 因特网能够发展成今日的规模,充分证明了当初采用这种设计思路的正确性。
虚电路与数据报服务比较
对比的方向 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应该由网络来保证 | 可靠通信应当由主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 必须有 | 不需要 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按照发送顺序到达终点 | 到达终点时不一定按照发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
目前的互联网用的大都是数据报服务。虚电路服务非常少
网际协议IP
虚拟互联网
网络互联的设备
中间设备又称为中间系统或者中继(relay)系统。
- 物理层中继系统:转发器(repeater)
- 数据链路层中继系统:网桥或者桥接器(bridge)。
- 网络层中继系统:路由器(router)。
- 网络层以上的中继系统:网关(gateway)。
路由器
当中继系统是转发器或者是网桥时,一般并不称之为网络互连,因为这仅仅是一个网络扩大了,而这仍然是一个网络。
- 网关由于比较复杂,目前使用的较少。
- 互联网都是指用路由器进行互连的设备。
- 由于历史的原因,许多关于TCP/IP的文献将网络层使用的路由器称为网关。
小常识:网关一般使用本网段中的第一个地址。
网络互联的问题
互连在一起的网络要进行通信,会遇到许多问题需要解决,如:
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制,比如ADSL接入,光纤接入,无线接入等等
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
- 不同的用户接入控制
- 不同的服务(面向连接服务和无连接服务)
- 不同的管理与控制方式
互连网络和虚拟互连网络
- 互连网络里面使用了许多技术,非常复杂,但是对于计算机而言,它并不关心这些,所以相较于计算机而言,互连网络又是虚拟互连网络。
- 所谓虚拟互连网络也是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本身就是客观存在的,但是我们利用IP协议就可以使得这些性能各异的网络从用户看起来好像是一个统一的网络。
- 使用IP协议的虚拟互连网络可以简称为IP网。
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各个具体的网络异构细节。
重点来了!重点来了!重点来了!
IP协议简介
网际协议IP是TCP/IP体系中两个最主要的协议之一。与IP协议配合作用的还有三个重要协议。
- 地址解析协议ARP(包括逆地址解析协议RARP)
- 国际控制报文协议ICMP
- 国际组管理协议(IGMP)
- IP协议
网络层四大协议,F4就是以上四个。
那么它们之间有哪些关系呢?如图
- 四个协议虽然都处于网络层,可以看出来:
- ARP协议在网络层的最底层,所以它比较基础一些,即使是IP协议也要依赖于ARP的地址解析功能进行工作,后面会详细描述。
- ICMP协议负责报告网络故障,当我们ping一个地址的时候,如果网络之中存在故障,比如超时,或者不可到达等等,都会由ICMP协议发送。当然从地位上来看,它依赖于IP协议。
- 同理IGMP协议也是依赖于IP协议。
IP地址
- 在美国国防部最初研发TCP/IP协议的时候,没有想到计算机会应用的这么广泛,32位在当时足够用了已经。但是目前来看32位的地址是远远不够的,IPV6早在几年前就已经开始慢慢应用了。
- 从上面我们可以看到IP是分层分段的,有网络号和主机号。有什么作用呢?
我们想象以下,打电话我们是有区号的,比如0394转到周口,0311转到河北石家庄,0312转到保定。那么路由器,把全国省份划分为各个区域,每个区域设置为不同的网段,为每个省级路由器设立路由表,通过网段来转发流量,是不是很便捷,到了市级单位之后,再划分网段进行转发,一直转发到个人电脑为止。
网络地址
如图:
网络地址(也可以称为网络号)唯一指定了每个网络,同一网络中的每台计算机都共享相同的网络地址,并用它作为自己IP地址的一部分。
- A类地址:前8位为网络部分,后24位为主机部分
- B类地址:前16位为网络部分,后16位为主机部分
- C类地址:前24位为网络部分,后8位为主机部分
- D类地址:叫做组播地址
- E类地址:用来研究
IP地址及其表示方法
我们把整个因特网看成为一个单一的、抽象的网络。IP地址就是给每个连接在因特网的主机(或者路由器)的每一个接口分配一个全世界范围唯一的32位的标识符。
IP地址现在由因特网名字与号码指派公司(ICANN)进行分配。
IP地址的编址方法:
- 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
- 子网的划分。这是对最基本的编址方法的改进,其标准在1985年通过。
- 构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到了大范围推广。
二进制与十进制的关系
二进制 | 十进制 |
---|---|
1 | 1 |
10 | 2 |
100 | 4 |
1000 | 8 |
10000 | 16 |
100000 | 32 |
1000000 | 64 |
10000000 | 128 |
– | – |
10000000 | 128 |
11000000 | 192 |
11100000 | 224 |
11110000 | 240 |
11111000 | 248 |
11111100 | 252 |
11111110 | 254 |
11111111 | 255 |
由以上关系,我们看如图:
可以知道:
- A类地址:1-127
- B类地址:128-191
- C类地址:192-223
- D类地址:224-239
来看看常用的三类IP地址:
- A类地址:1-126,127这个地址比较特殊,它相当于计算机的本地环回地址,相当于人称代词“我”。我们可以试着ping一下:如图
- ping自己肯定可以ping的通。如果能通,代表我们计算机的TCP/IP协议栈工作正常。
- B类和C类一切正常。
注意:在同一个局域网上的主机或者路由器的IP地址中的网络号必须是一样的。不然会导致路由器故障。
路由器总是具有两个或者两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址。
特殊的几个地址
- 127.0.0.1 本地环回地址
- 169.254.0.0 网络错误的地址标志,计算机默认是DHCP(动态获取IP地址的),但是如果获取不了,就会显示169.254.0.0网段的地址,为什么呢?原来IPV4技术已经非常成熟,这是为了防止在一个局域网内,虽然大家的主机都上不了网,但是在这个网段内的主机是可以相互连通的,每台主机一个IP地址,同一网段内的地址对应的主机就可以相互通信。
- 保留的私有地址
- 10.0.0.0(A类地址)
- 172.16.0.0–172.31.0.0
- 192.168.0.0–192.168.255.0
注意:网段中,主机部分不可以全为0或者全为1,全为0代表这是一个区号(网段),全为1的话代表是一个广播。
子网掩码的作用
子网掩码(subnet mask)又叫网络掩码、地址掩码。
- 它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两个部分。
这样说过于理论化,举个例子:
如果A计算机IP地址:192.168.80.5 子网掩码:255.255.255.0
B计算机IP地址:192.168.90.5 子网掩码:255.255.255.0
如果A与B通信,由于两台主机不在同一个网段,A发送的消息会首先传送到网关:192.168.80.1,然后经过路由器转发到B计算机
但是如果子网掩码换成 255.255.0.0 那么就说明两台主机在同一个网段,A会直接发消息给B,而不会再转给网关。
与运算来计算网段
如果一台计算机的IP地址配置为172.16.122.204,子网掩码为255.255.0.0。将其IP地址和子网掩码都写成二进制,进行与运算(1和1得1,0和1,或者1和0都得0),这样经过IP地址和子网掩码做完与运算之后,主机位不管是什么值都得归零,网络位的值保持不变,这样就得到该计算机所处的网段为172.16.0.0。如图:
划分子网
为什么要划分?
- 在ARPANET的早期,IP地址的设计确实不够合理。
- IP地址空间的利用率有时很低。
- 给每一个物理网络分配一个网络号会使得路由表变得太大因而使网络的性能变坏
- 两级的IP地址不够灵活
- 解决的办法:从两级IP变为三级IP
- 从1985年起在IP地址中又增加了一个“子网字段”,使两级的IP地址变成了三级的IP地址。
- 这种做法就叫做划分子网。划分子网已经成为因特网的正式标准协议。
将一个C类网络划分为两个子网
如何来划分呢?
- 该网段为192.168.0.0,子网掩码为255.255.255.0,前面介绍过,C类地址的网络位24位,主机位8位。如果想要划分为两个网段,那么主机位从0~255之间可以取中间值,也就是0-127,128-255,这个时候主机位8位里面,第一位0/1,需要划到网络位,此时的子网掩码就为255.255.255.128。如图:这样就可以对一个C类地址分成两个网段来划分了。
拓展:如果划分成四个网段呢?八个网段呢?
- 没错,划分成四个网段,只要让前两位,划分成00,01,10,11即可,这个时候范围就变成0-63,64-127,128-191,192-255。
- 同理,八位也是如此。
- 再拓展,如果划分成3个,五个网段呢?依然按照4个和8个来划分就好了。