一、网络层干了啥?IP是什么?
先不管网络层干了啥,我们来看这样一张网络五层结构图:
橙色的那一层叫做网络层。
通过图,我们可以发现,
网络层的主要协议有:ARP,IP,ICMP,IGMP
其中,IP占了大半壁江山。
而IP是什么?
IP的全称为Internet Protocol——网际协议。
前面我们学习了,协议是建立在对等实体之间的。
也就是说,要想在网络中做到有条不紊地交换数据,
就必须遵循一些事先约定好的规则。
这些规则明确规定了所交换的数据的格式,以及有关的同步问题。
协议由三部分组成:
语法:规定了传输数据的格式
语义:规定了所要完成的功能
同步:规定了执行各种操作的条件和时序关系等
网络层的实体叫做数据报,或者分组,
那么IP协议做的事情就是:
把网络层的实体:数据报,规定一个统一的格式,叫做IP数据报。
我们来看一看IP数据报的格式:
首先,他的数据部分是传输层传递下来的协议数据单元。
然后有一个首部,
首部信息如下:
所有要在网络层进行传输的数据,都必须添加上述格式的表头,
遵循这个表头里各个字段对应的信息。
比如使用的IP版本号,自己的长度,源地址目标地址等。
这里要强调的是,第三行第二个字段为协议字段。
个人理解:
IP本身是一个大的协议,规定了这样一个格式的数据报首部,
而里面的数据可以是用来进行路由选择的:那么他们遵循OSPF或者IGP等协议;
也可以是进行动态分配IP地址的:那么他们遵循DHCP协议(基于UDP)。
也就是说,IP协议就像一个造世主,他规定了一个人有一个头,两只胳膊两条腿,并且要穿衣服,
而至于具体穿什么衣服,就要看这个人本身想干嘛。
如果一个人是外卖员,穿着某公司的外卖服,
那么送外卖是这个数据的语义;
穿着这个公司的外卖服,就是这个数据所遵循的协议,如我是A公司的外卖员,那么我负责从A区送到B区,要在多少小时内完成,是速度优先还是质量优先;
我是B公司的外卖员,那么我负责从一个城传到另一个城。
快递公司就像内部网关协议IGP和外部网关协议EGP,
而外卖员就像是OSPF协议下报文的内容,
整个外卖员这个人,有一个头,两只胳膊两条腿,并且要穿衣服,遵循的规则是IP报文。
了解了IP协议,我们再来说说网络层到底干了啥。
首先,网络层通过IP协议,统一化了这一层里数据的格式。
统一完了格式,
1.网络层的首要功能就是传输数据。
传输层将传输层的协议数据单元——报文交给网络层,网络层加上IP首部成为IP数据报,
这里需要借助路由器和路由算法,传输到目的地的网络层。
然而,这里的IP数据报里的数据都是基于逻辑层面的。
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。
为了交付给数据链路层,我们需要借助ARP协议(地址解析协议),
来完成IP地址到MAC地址的映射。
这样,剩下的交给数据链路层,进行成帧,差错控制,流量控制等,
再给物理层,物理层将数据变成信号,传给对方物理层,再到对方链路层,网络层,
就形成了一次网络层与网络层之间的数据交换。
2.进行IP数据报格式的统一,还有一个目的是进行异构网络的互连。
使用物理层或数据链路层的中继系统(中继器,交换机等),无非只是把一个网络扩大了。
但是从网络层的角度看,仍然是一个网络。
由于网络层我们都采用了标准化协议,
所以我们可以通过路由器,将各种物理异构的网络连接起来,
成为一个虚拟的IP网络。
3.拥塞控制
如果所有结点都来不及接受分组,而要丢弃大量分组的话,
网络就处于拥塞状态。
拥塞控制是确保子网能够承载所达到的流量,这是一个全局性过程。
二、网络层的功能与数据交换方式
网络层主要有以下功能:
功能一:路由选择与分组转发
路由器完成两个功能:
1.路由选择:首先要选择一条最近或者相对近的路。
2.分组转发:确定好路后,需要从合适的端口发出去。
功能二:异构网络互连
将各种性能各异的物理网络互联成一个逻辑网络,使这些网络在IP层看上去就像一个统一的网络。
功能三:拥塞控制
拥塞控制是确保子网能够承载所达到的流量。
为什么要进行数据交换?
交换是通过某些交换中心,将数据进行集中和传送。
传输线路为各个用户共用,从而大大节省通信线路,降低系统费用。
总共有以下三种方式:
其中分组交换又分为数据报方式和虚电路方式。
1.电路交换
原理:
建立一条源结点和目的结点间的一条由中间结点构成的专用物理连接线路。
在数据传输结束之前,这条线路一直保持。
阶段:
优点:独占资源,通信时延小,有序,没有冲突;
缺点:灵活性差,因为独占资源,整体使用效率低下,而且难以规格化。
2.报文交换
数据交换单位为报文。
采用存储转发方式。
长短不一致,长度不限且可变。
优点:动态分配线路,提高线路利用率
缺点: 实时性差,只适用于数字信号,且因为报文长度无限制,需要每个结点有较大缓冲区。
3.分组交换
分组交换解决了报文交换中,大报文传输的问题。
也就是IP层的交换方式。
三种方式图解:
4.数据报方式
1.源主机A将报文分成多个分组,依次发送到直接相连的结点A。
2.A收到分组后,对每个分组进行差错检测和路由选择,不同分组的下一条结点可能不同。
3.结点C收到分组P1后,对P1进行差错检测,若正确则向A发送确认信息,A收到C确认后则丢弃分组P1副本。
4.所有分组到达目的地B。
采用无连接方式,不保证分组的有序到达,不保证可靠通信。
5.虚电路方式
虚电路为网络层提供连接服务。源结点与目的结点之间建立一条逻辑链接,而非实际物理连接。
保证分组的有序到达,可靠性由网络保证。
致命缺点:一点故障,所有经过故障结点的虚电路均不能正常工作。
三、IPv4
IPv4指的是现在普遍使用的IP,版本号为4。
IP协议定义了数据传送的基本单元——IP分组及其确切的数据格式。
IP也包括一套规则,指明分组如何处理、错误怎样控制。
IPv4数据包格式如下:
如果IP数据报的总长度大于链路层的最大传送单元,如以太网是1500B,许多广域网不超过576B,那么需要将IP数据报中的数据分装在多个较小的IP数据包中,这些较小的数据报称为片。
四、IPv4地址
IPv4地址:全世界唯一的4字节标识符,标识路由器主机的接口。
其地址由两部分组成:{《网络号》,《主机号》}。
网络号标志主机或路由器所连接到的网络;
主机号标志该主机或路由器。
一共有五类地址:
特殊IP地址
其中有些IP地址具有特殊用途,不作为主机的IP地址:
如果主机号全为0,表示这个网络本身;
如果主机号全为1,表示这个网络的直接广播地址,对特定网络上的所有主机进行广播;
如果32位全为0,即0.0.0.0,表示本网络上的本主机;
如果32位全为1,即255。255.255.255,表示整个TCP/IP网络的广播地址,又称受限广播地址,路由器不会转发;
127.0.0.0保留为环路自检地址,表示任意网络的本身,用于本地自测。
五、私有IP地址与网络地址转换NAT
首先,为什么要划分私有IP地址?
两个原因:
1.IP地址有限,IP地址是全球唯一标识符,而划出私有IP地址后,这些私有IP地址在不同的网络中可重用,大大节约了IP地址的消耗;
2.为了网络安全,隐藏内部网络结构,降低了内网受到攻击的风险。
所以我们划分出了私有IP地址。
私有IP地址只用于局域网,不用于广域网。
在因特网中的所有路由器,对于目的地址是私有地址的数据报一律不转发。
这种采用私有IP地址的互联网被称为本地互联网。
那么私有IP地址的主机如何与广域网中的其他主机进行网络通信呢?
这就要用到NAT协议——网络地址转换协议。
在专用网连接到因特网的路由器上安装一个NAT软件,也就是网络地址转换软件,
这样这个路由器就成为了NAT路由器,它至少有一个有效的外部全球IP地址。
他的作用是将专用网络地址转换为公用地址。
上图中,专用网192.168.0.0有两台主机,
NAT路由器就负责把LAN端的地址转换为WAN端的地址,端口号唯一标志这个网络的某个进程。
六、子网划分
为什么要划分子网?
原因有两点:
1.IP地址空间的利用率有时候很低。
比如我是一个公司老板,
虽然现在员工不多,
但是为了以后公司扩展,
我购买了一个B类地址,
它提供了2^16-2个主机数;
这样就会在很长一段时间内,B类地址中很多IP地址是空的。
造成了IP地址空间的利用率很低。
2.两级IP地址不够灵活。
为了解决上述两个问题,我们引入了子网。
子网:{《网络号》,《子网号》,《主机号》}
子网划分的是两级IP地址的主机号,而不是网络号。
所以从一个IP地址本身,我们并不知道一个网络是否进行了子网划分。
为了得知一个网络是否进行了子网划分,‘我们引入了子网掩码。
子网掩码是一个与IP地址相对应的,长度也为32bit的二进制串,由一串1与一串0组成。
1,对应IP地址中的网络号和子网号,
0,对应IP地址中的主机号。
只需要将子网掩码与IP地址逐位相与,就能得到相应子网的网络地址。
七、CIDR(无分类编址)
传统划分IP地址还是一个固式的思维,
而CIDR,无分类编址协议消除了传统A,B,C和划分子网的概念,
他把网络前缀都相同的连续IP地址组成了一个CIDR地址块。
八、路由聚合
CIDR的功能是将多个子网聚合成一个较大的子网,构成超网,或者路由聚合。
而使用CIDR时,可能会有多个匹配的结果。我们应该选择具有最长网络前缀的路由,因为更加具体。
九、协议之ARP
前面我们学习了数据交换方式,
有电路交换,报文交换,分组交换。
对于IP层的一个分组来说,他始终是逻辑上的东西:
IP地址只是一个虚构的逻辑地址,并不是实打实的物理地址。
但是在实际网络的链路上,传送数据帧时,最终必须使用硬件(物理)地址。
所以我们需要一个协议,来完成IP地址到MAC地址的映射,从物理上解决下一跳走哪的问题。
这个协议就是地址解析协议ARP。
每一台主机上,都有一个ARP高速缓存,这个缓存用来存放本局域网上的各个主机,路由器的IP地址到MAC地址的映射表,称为ARP表。
我们使用ARP协议,来维护这张ARP表。
ARP工作原理
假如主机A想向主机B发送IP数据报,
1.检查自身的ARP高速缓存中有无主机B的IP地址。
如果有,则将此硬件地址写进MAC帧的目的地址,然后通过局域网将此MAC帧发往这个目的硬件地址;
2.如果没有,则将MAC帧的目的地址记为FF-FF-FF-FF-FF-FF,用此帧封装并广播一个ARP请求分组。
同一局域网中的所有主机都会收到这个请求分组,而如果某主机并不是请求分组的目的主机,则会丢弃;
3.目的主机B收到来自A的请求分组后,会回馈给A一个响应分组,这个分组里包含了B的IP与MAC的映射关系。
4.A收到该响应分组后,将B的IP与MAC的映射写进自身的ARP缓存中,然后重复步骤1,进行发送。
ARP协议有4种典型情况:
1.主机A发给本网络上的主机B,用ARP找到B的硬件地址;
2.主机A发给另一网络上的主机B,用ARP找到本网络上一个路由器(网关)的硬件地址 ;
3.路由器发给本网络的主机A,用ARP找到主机A的硬件地址;
4.路由器发给另一网络的主机B,用ARP找到本网络上的一个路由器的硬件地址。
习题:
十、协议之DHCP
主机如何获得IP地址?
有两种方法:
1.静态配置——手工
2.动态配置
DHCP——动态主机配置协议就解决了动态为各个主机分配IP地址的问题。
DHCP是应用层协议,使用客户/服务器方式。通过广播交互,基于UDP。
需要IP地址的主机在启动时就向DHCP服务器广播一个发现报文,这时主机就成了DHCP服务器的客户。
虽然所有主机都能收到这个广播报文,但只有DHCP服务器会回答此报文。
我们来看一看DHCP的工作流程:
1.主机广播DHCP发现报文(试图找到一个DHCP服务器为自己分配一个IP地址)
2.DHCP服务器广播DHCP提供报文(服务器拟分配给主机一个IP地址和相关配置)
3.主机广播DHCP请求报文(主机想接受上述IP地址和相关配置,于是向服务器请求)
4.DHCP广播DHCP确认报文(正式将IP地址分配给主机)
十一、协议之ICMP
为了更有效地转发IP数据报,提高交付成功机会,
我们使用ICMP,网际控制报文协议。
这个协议支持主机或路由器向目的主机或路由器发送一些差错或异常报告,以及网络探寻,以特定的ICMP报文形式。
ICMP报文分为两种:
1.差错报文:用于目标主机/路由器向源主机/路由器报告差错和异常情况。
2.询问报文:用于测试目的站是否可达,以及了解其相关状态。
常见应用:分组网间探测PING
十二、IPv6
解决IP地址耗尽的措施有以下三种:
1.采用无分类编址CIDR,使IP地址的分配更加合理。
2.采用网络地址转换NAT
然而上述两种方法只能延缓耗尽的速度。
于是我们引入了IPv6,具有更大的地址空间(128bit)。
与IPv4相比:
1. IPv6扩大了地址空间;
2.IPv6的首部更加灵活
3.IPv6支持即插即用,自动配置,不需要DHCP
十三、路由协议-IGP之RIP
RIP是基于距离-向量的路由选择协议。
适用于小互联网,
仅和相邻路由器交换信息,
交换的是自己的路由表,
每30秒交换一次。
练习:
RIP协议的报文格式:
特点:当网络故障时,需要比较长的时间才能将此信息传送到所有路由器。
十四、路由协议-IGP之OSPF
OSPF是基于链路状态的路由选择协议。
1.和所有路由器广播信息
2.信息为与本路由器相邻的所有路由器的链路状态(和哪些相邻,以及该链路的度量/代价)
3.只有当链路状态变化时,路由器才向所有路由器广播此信息。
适用于大网络。
基于IP数据报。
十五、路由协议-EGP之BGP
BGP是外部网关协议,基于距离-向量。
1.与其他AS的邻站BGP发言人交换信息。
2.交换的是网络可达性的信息,即要到达某个网络所要经过的一系列AS。
3.发生变化时,更新有变化的部分即可。
是应用层协议,借助TCP传送。
三种协议比较:
十六、IP组播
假如主机A有一个视频节目,想让90台主机接受。
如果基于单播——一对一:
但如果基于组播:
IP组播地址让原设备能过将分组发送给一组设备。
属于多播组的设备将被分配一个组播组IP地址。
D类地址。
组播是基于UDP的。
IGMP协议
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
ICMP和IGMP都是基于IP数据报传送的。
IGMP工作有两个阶段:
阶段1:加入组播组
1.某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,请求自己要成为该组的成员;
2.本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
阶段2:检测是否还为组播组成员
1.本地组播路由器周期性地探寻本地局域网上的主机,以便知道这些主机是否还是组播组的成员。
2.只要有一个主机对某个组相应,那么组播路由器就认为这个组是活跃的;如果经过几次探寻,没有一个主机响应,组播路由器就认为本网络上没有此组播组的主机,就不再把这组的成员关系发给其他组播路由器。
十七、移动IP
移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。
相当于多了一个中间人。
十八、网络层设备之路由器
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。