网络层

网络层的主要功能:负责点到点(point-to-point)的传输

网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。另外,为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。

网络层的主要协议有:IP协议,ARP协议,RARP协议,因特网报文协议ICMP、因特网组管理协议IGMP等。

一:IP协议及IP数据报
IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。IP协议用于将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,并提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制——>这被认为是上层协议:TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。

IP数据报格式如下:
这里写图片描述

IP数据报由首部和数据部分组成。首部的前一部分是固定长度为20字节,是数据报必须具有的。在首部的固定部分之后的是一些可选字段,其长度是可变的。

IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。 4位版本字段: 对于IPv4,4位版本字段是4。

8位TOS字段:8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。总长度是整个数据报(包括IP首部和IP层payload)的字节数。

每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。

3位标志和13位片偏移用于分片。

TTL(Time tolive)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64。

协议字段指示上层协议是TCP、UDP、ICMP还是IGMP。 然后是校验和,只校验IP首部,数据的校验由更高层协议负责。

IPv4的IP地址长度为32位。

二:路由选择
路由是指将数据包从一台设各通过网络发往另一台处在不同网络上的设备。路由器并不关心这些主机,它们只关心网络和通向每个网络的最佳路径。路由器可以从相邻的路由器或从管理员那里认识远程网络。之后,路由器需要建立一个描述如何寻找远程网络的路由表(一张网络地图)。如果网络是直接与路由器相连的,那么路由器自然就知道如何达到这个网络。如果网络没有直接与它相连,路由器必须通过学习来了解如何到达这个远程网络。所采用的方法只有两种:静态路由方式,即必须由人来手动输入所有网络位置到路由表中;和动态路由方式:在动态路由中,在一台路由器上运行的协议将与相邻路由器上运行的相同协议之间进行通信,然后,这些路由器会更新各自对整个网络的认识并将这些信息加入到路由表中去。如果在网络中有一个改变出现,动态路由协议将自动将这个改变通知给所有的路由器。如果使用的是静态路由,则管理员将负责通过手工方式在所有的路由器上更新所有的改变。动态路由与静态路由没有绝对的优劣之分,在一个大型网络中,同时使用动态和静态路由是很典型的方式。

对于路径的选择:最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。在此会用到ARP协议。

更普遍的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过IP包的信息来为IP包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包:

1)如果IP数据包的TTL(生命周期)已到,则该IP数据包就被抛弃。
2)搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机
3)搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码”的协助。如果找到路由器,则将该包发向路由器。
4)搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器。
5)搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
6)如果都失败了,就丢掉这个包。

这再一次证明了,IP包是不可靠的。因为它不保证送达。

三:IP地址
1)网络地址

IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。

2)广播地址

广播地址通常称为直接广播地址,是为了区分受限广播地址。
广播地址与网络地址的主机号正好相反,广播地址中,主机号为全1。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。

3)组播地址

D类地址就是组播地址。

先回忆下A,B,C,D类地址吧:

A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;
B类地址以10开头,前两个字节作为网络号,地址范围是128.0.0.0~191.255.255.255;
C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。
D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);
E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。
注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。

  4)255.255.255.255

该IP地址指的是受限的广播地址。受限广播地址与一般广播地址(直接广播地址)的区别在于,受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播。例如:主机192.168.1.1/30上的直接广播数据包后,另外一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到。 注:一般的广播地址(直接广播地址)能够通过某些路由器(当然不是所有的路由器),而受限的广播地址不能通过路由器。

5)0.0.0.0

常用于寻找自己的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。

6)回环地址

127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。

7)A、B、C类私有地址

私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义。
A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255
B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255
C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255

四:IP寻址与子网掩码
1:IP寻址规则

1)网络寻址规则

A、 网络地址必须唯一。 
B、 网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。 
C、 网络标识的第一个字节不能为255。数字255作为广播地址。 
D、 网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。 

2)主机寻址规则

A、主机标识在同一网络内必须是唯一的。 
B、主机标识的各个位不能都为“1”,如果所有位都为“1”,则该机地址是广播地址,而非主机的地址。 
C、主机标识的各个位不能都为“0”,如果各个位都为“0”,则表示“只有这个网络”,而这个网络上没有任何主机。 

2:子网掩码
IP地址的定义是网络号+主机号。但是现在所有的主机都要求子网编址,也就是说,把主机号在细分成子网号+主机号。最终一个IP地址就成为网络号码+子网号+主机号。

1)子网掩码的概念

子网掩码是一个32位地址,用于区别两个IP地址是否属于同一个子网。若两个IP地址与其子网掩码相与后相同,则说明这两个IP地址属于同一个子网。
子网掩码由1和0组成,且1和0分别连续。左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示。
这样做的目的是为了让掩码与IP地址做按位与运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数(2的主机位数次方-2,因为主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号,这是两个特殊地址)。只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

默认分配的子网掩码每段只有255或0 
A类的默认子网掩码 255.0.0.0     一个子网最多可以容纳1677万多台电脑 
B类的默认子网掩码 255.255.0.0    一个子网最多可以容纳6万台电脑 
C类的默认子网掩码 255.255.255.0   一个子网最多可以容纳254台电脑 

2)确定子网掩码

用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。在定义子网掩码前,必须弄清楚用来使用的子网数和主机数目。 

3)子网掩码的计算
定义子网掩码的步骤为:

A、确定哪些组地址归我们使用。比如我们申请到的网络号为 “168.195.a.b”,该网络地址为B类IP地址,网络标识为“168.195”,主机标识为“a.b”。 
B、根据我们现在所需的子网数或者网络中需要接入的主机数目来计算子网掩码。
    1:利用子网数目计算
例:将B类IP地址168.195.0.0划分为27个子网,由于16<27<32,则取N=5,将其主机部分的前N位置1,即可得到该IP地址的子网掩码11111111.11111111.11111000.00000000(255.255.248.0)。
    2:利用主机数目计算
例:将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台。因为512<703<1024,则N=10,将该IP地址的主机位全部置1,即11111111.11111111然后从后向前将N位置0,可得到11111100.00000000252.0),然后网络地址全部设为1,即可得到子网掩码255.255.252.0

在此注意一个陷阱:在计算主机数目时,在每一个网络中要考虑一个网关地址,一个网络地址,一个广播地址。即若要求接入主机数目为14台,则需分配14+1+1+1=17个子网空间,此时N=5而不是4。

4)其他

IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0。

五:网络层协议介绍
1)地址解析协议
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。

ARP协议(地址解析协议)的工作原理

1:对于每台主机,其ARP缓存区都有一个ARP列表,存储着网络中IP地址和MAC地址的对应关系
2:当源主机向目的主机发送数据时,首先检查自己的ARP列表中是否有目的主机IP地址对应的MAC地址,如果有,直接发送信息
3:如果没有,就向本网段的所有主机广播发送ARP数据包,数据包中包括源主机IP地址,MAC地址及目的主机IP地址
4:本地网络的所有主机收到该ARP数据包后,首先检查目的主机IP地址是否和自身IP地址相同,若不同,忽略该数据包;若相同,将源主机IP地址和MAC地址加入到自身ARP列表中,如果列表中已存在该对应关系,则覆盖,然后发送一个ARP相应包给源主机,告知它就是源主机想找的MAC地址。
5:源主机接到ARP相应包后,首先将目的主机MAC地址加入到其ARP列表,并利用此信息发送消息。若源主机一直没有收到ARP响应包,表示ARP查询失败。

RARP协议
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址,并将其装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

2)路由选择协议
常见的路由选择协议有:RIP协议、OSPF协议。

RIP协议 :底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF协议 :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。

3)ICMP协议

由于IP协议的两个缺陷:没有差错控制和查询机制,因此产生了ICMP。ICMP主要是为了提高IP数据报成功交付的机会,在IP数据报传输的过程中进行差错报告和查询,比如目的主机或网络不可到达,报文被丢弃,路由阻塞,查询目的网络是否可以到达等等。

4)IGMP协议
因特网组管理协议(IGMP)被IP主机用于向所有的直接相邻的多播路由器报告它们的多播组成员关系。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值