网络层的协议:网际协议IP,首先需要了解网络主要的设计思路与实现的服务:
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据传输服务。
- 发送分组时不需要先建立连接。每一个分组独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供可靠传输,使得路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 主机中的进程通信的可靠性由运输层的TCP协议来负责
采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能移适应多种应用。
IP网际协议
IP协议提供了一种不可靠、无连接的数据传输服务,作用于主机:
1、不可靠:不能保证IP数据报能成功到达目的地;发生错误会直接丢弃该数据报,然后发送ICMP消息给信源端;
2、无连接:传送IP数据报(分组)前不需要要建立连接,每一个分组独立发送,与其前后的分组无关(不进行编号)
IP数据报格式
版本号(4): IPV4 就是 4,IPV6 就是 6
首部长度(4):记录IP数据报首部的长度,首部最小长度为20字节,最大为60字节
以4 个字节为单位:每行32bit,即4个字节(首部长度不是4字节的整数倍,必须在填充字段加以填充)
最小值为 5:仅有固定部分,可变部分为0,固定部分有5行,即1001。
最大值为 15:首部长度为4bit,而2^4是16,所以它的取值范围是0-15,即1111
所以最小长度=54= 20 个字节,最大=15*4= 60个字节。
服务类型(8): Qos 用,目前不怎么使用。(8)
总长度(16):首部+数据部分的长度,以字节为单位。 最多可以传送 2^16^-1=165535 字节的 IP 数据包
【为什么 IP 首部中要有总长度字段】
因为一些数据链路(以太网)有MTU最大传输单元】限制,小于最小MTU需要填充一些数据以达到最小长度,大于最大MTU需要对数据报进行分片处理,所以需要总长度来确定 IP 数据部分的内容。标识字段(8):唯一标识主机发送的每一份数据报,具有相同标识的数据报片属于同一个数据报
标志 (3):R、DF、MF三位。目前只有后两位有效
- DF位:为1表示不分片,为0表示分片
- MF:为1表示“更多的片”,为0表示这是最后一片
片偏移(13bit):标识被分片的每一个报片相对于原始数据的位置,第一个分片对应的值为0。
【分片处理举例】
IP数据包数据部分长度为3200位,首部为160位,MTU为1200,则发送数据报必须分片
因为首部为160,所以分片后传输的数据部分长度最大为1040
数据报 总长度 标识 MF DF 片偏移 原始数据报 3200+160 123 0 0 0 数据报片1 1040+160=1200 123 1 0 0 数据报片2 1040+160=1200 123 1 0 1040/8=130 数据报片3 1040+160=1200 123 1 0 1040/8+130=260 数据报片4 80+160=240 123 0 0 80/8+260=270 生存时间 TTL(8):经过一个路由器减一。 字段为 0 时,数据报被丢弃,并且发送 ICMP 报文通知源主机。目的是防止数据报在选路时无休止地在网络中流动。
协议(8):区分上层协议( 目标端根据协议把收到的IP数据报送到TCP或UDP等处理此报文的上层协议)
首部校验和(16):仅对首部进行校验
【首部校验和计算方法】
- 先把校验和字段置 0。
- 对首部中每组 16 位比特多多组进行二进制反码求和。
- 结果存在检验和字段中。
- 接收端 收到一份 IP 数据包后,同样对首部中每个 16bit 二进制反码求和。
- 最后结果全为 1,表示正确,否则表示错误。
- 如果是错误的,IP 就丢弃该数据报,但是不生成差错报文,由上层去处理。
【对比: ICMP,IGMP,TCP,UDP:对首部和数据进行校验】
共同点:用到的算法都是一样的。
区别:IP 计算的时候没有将数据包括在内,ICMP,IGMP,TCP,UDP 同时对首部和数据进行检验
源地址(32):发送端IP地址
目的地址(32):接收端IP地址
IP地址
IP地址由[网络号,主机号]组成,在网络号字段前会有1~3的类别位
IP地址的指派范围:
网络类别 | 网络号范围 | 最大可指派的网络数 | 最大主机数 |
---|---|---|---|
A 类地址 | 1.0.0.1~~126.255.255.254 | 2^7^-2(保留地址全0+127环回)=126 | 2^24^-2=16777214 |
B 类地址 | 128.0.0.1~~191.255.255.254 | 2^14^-1(128.0.0.0)=16383 | 2^16^-2=65534 |
C 类地址 | 192.0.0.1~~223.255.255.254 | 2^21^-1(192.0.0.0)=2097151 | 2^8^-2=254 |
D 类地址 | 224.0.0.1~~239.255.255.254 | 主机数-2:全0的本主机,全1的所有主机 | |
E 类地址 | 240.0.0.1~~254.255.255.254 |
IP地址的特点:
(1) 每个IP地址由网络号与主机组成(分等级的地址结构),好处是:①网络号由IP管理机构管理,而主机号由得到该网络号的单位自行分配;②路由器仅根据目的主机所连接的网络号转发分组,减小路由表的存储空间以及查找路由表的时间
(2) 一个网络是具有相同网络号的主机的集合,因此,用转发器或网桥连接的若干个局域网仍是一个网络,具有不同网络号的局域网必须使用路由器进行互连
(3) IP地址实际上是标志一个主机(或路由器)和一条链路的接口,如果一个主机同时连接到两个网络,那么主机必须有两个ip地址,这种主机就是多归属主机。由于路由器至少连接两个不同的网络,因此一个路由器至少有两个不同的IP地址
直接交付与间接交付:
当源主机向目的主机发送数据报时,先要检查目的主机是否与源主机连接在同一个网络上:
如果是,就将数据报直接交付给目的主机B而不需要通过路由器;
如果不是,则应该将数据报发送给本网络上的某个路由器,由该路由器进行转发,这叫做间接交付。
主机和路由器本质区别
主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。
IP 路由选择
IP路由选择其实是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。
特性:
(1) IP 路由选择是逐跳进行的。IP 路由表并不知道到达目的的完整路径,只提供下一跳地址。
(2) 为一个网络指定一个路由器,而不是为每个主机指定一个路由器。这样可以缩小路由表规模。
过程(简单版):根据最长匹配原则,找到条目,发送到指定的路由器或主机。如果不能找到,返回一个“主机不可达”或“网络不可达”的错误。
IP 搜索路由表的步骤(详细版)
- 从IP数据报首部提取目的IP地址
- 根据最长匹配原则,首先搜索匹配的网络地址,如果找到则直接将数据报交付给条目中所对应的的网络接口
- 如果找不到,则搜索匹配的网络号,如果找到,则间接交付给条目中对应的下一站路由器,由该路由器进行分组转发
- 如果还找不到,就搜索默认选项,由默认选项中的下一站路由器进行分组转发
- 如果路由表中没有默认项,而又没有找到匹配项,则结果取决于该 IP 数据报是由主机产生的还是被转发的
- 如果数据报是由本机产生的,那么就给发送该数据报的应用程序返回一个“主机不可达差错”或者是“网络不可达差错”的差错报文。
- 如果是被转发的数据报,就给源主机发送一份“主机不可达”的差错报文。
附加补充:
路由选路原则:
先进行最长匹配原则,满足后进行管理距离最小优先,依旧满足进行度量值最小优先
A: 最长匹配原则:最长匹配原则是CISCO IOS路由器默认的路由查找方式。当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的表项进行bit by bit的逐位查找,直到找到匹配度最长的条目,这叫最长匹配原则。
B: 管理距离AD最小优先:可以是多种路由协议的比较;也可以是同种路由协议的比较,比如双线出口所配置的两条默认浮动路由比较
C:度量值metric最小优先:路由协议不同则度量值不能做比较,比如rip度量值为跳数;ospf度量值为带宽;eigrp度量值为带宽+延迟等。所以在不同种协议之间先比较管理距离