在大型的计算机网络中,一台计算机怎么跨众多节点传输数据到另一台计算机中呢?
-- 网络层
网络层功能
- 网络层基本功能是讲分组从一台发送主机移动到一台接收主机中
- 进一步地,包括转发,路由选择,连接建立三种重要功能
转发
- 涉及分组在单一路由器中从一条入链路到一条出链路的传输
- 当一个分钟到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路
这个时候的转发需要到路由器中的MAC地址表,路由器检测到达分组首部特定字段的值,在MAC地址表中索引查询该值以确定将该分组移动到哪一输出链路
路由选择
- 涉及到一个网络所有路由器如何经路由器选择协议共同交互以决定分组从源到目的地的路径
- 当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由
连接建立
- 从源到目的地沿着所选择的路径,各个设备彼此握手, 在数据分组开始传输之前建立状态
- 因特网网络层不提供建立功能
- ATM,帧中断,MPLS等网络体系结构提供连接建立功能
IP协议的转发流程
网络层传输转发流程:
- A发出目的地为C的IP数据报,查询路由表发现下一跳为E
- A将数据报发送给E
- E查询路由表发现下一跳为F,将数据报发送给F
- F查询路由表发现目的地C直接连接,将数据报发送给C,完成A跨设备传输数据到C
现结合网络层和数据链路层中的传输转发流程:
- E的数据链路层接收到数据帧,把帧数据交给网络层
- E查询路由表,发现下一跳为F
- E把数据报交给数据链路层,并告知目的MAC地址为F
- E的数据链路层封装数据帧并发送
- F的数据链路层接收到数据帧,把数据交给网络层
- F查询路由表,发现下一跳为C
- F把数据报交给数据链路层,并告知目的MAC地址为C
- F的数据链路层封装数据帧并发送,以完成了数据包由计算机A发送到计算机C
在数据包传输过程中:
- 数据帧每一条的MAC地址都在变化
- IP数据报每一跳的IP地址始终不变
网络层IP协议相关
- IP协议
- 子网划分
- 简单的路由过程
IP协议
虚拟互连网络
- 实际的计算机网络时错综复杂的
- 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
- 当网络中的主机使用IP协议连接时,则无需关注网络细节
IP协议的作用
- IP协议使得复杂的实际网络变为一个虚拟互连的网络
- IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
- IP协议解决了在虚拟网络中数据报传输路径的问题
IP协议地址
- IP地址长度位32位,常分成4个8位
- IP地址常使用点分十进制来表示(0255.0255.0255.0255)
- 114.114.114.144 1.1.1.1 255.255.255.0
IP报文格式
版本:
占4位,指的是IP协议的版本,通信双方版本必须一致,当前主流版本IPv4,也有IPv6
首部位长度:
占4位,最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节
总长度:
占16位,最大数值为65535,表示IP数据总长度(IP首部+IP数据) MTU
TTL:
占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文
协议:
占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP\UDP等)
首部校验和:
占16位,校验IP首部是否有出错
ARP协议与RARP协议
ARP协议 -- 地址解析协议
数据链路层和网络层配合使用的一个重要协议,我们要通过结合网络层和数据链路层中的传输转发流程来分析。
作用:把网络层中IP32位地址转为数据链路层MAC48位地址
RARP协议 -- 逆地址解析协议
作用:数据链路层MAC48位地址转化为把网络层IP32位地址
在这过程中存在一个ARP缓存表
ARP缓存表作用:
ARP缓存表缓存有IP地址和MAC地址的映射关系
ARP缓存表意义:
- ARP缓存表是ARP协议和RARP协议运行的关键
- ARP缓存表缓存了IP地址到硬件地址之间的映射关系
- ARP缓存表中的记录并不是永久有效的,有一定的期限
总结:
- (R)ARP协议是TCP/IP协议栈里面基础的协议
- ARP和RARP的操作对程序员是透明的
- 理解(R)ARP协议有助于理解网络分层的细节
- 协调网络层和数据链路层进行配合工作的一些协议
IP地址子网的划分
- 分类的IP地址
- 划分子网
- 无分类编址CIDR
分类的IP地址
IP地址长度为32位,常分成4个8位
特殊的主机号
- 主机号全0表示当前网络段,不可分配位特定主机
- 主机号为全1表示广播地址,向当前网络段所有的主机发消息
特殊的网络号
- A类地址网络段全0(00000000)表示特殊网络
- A类地址网络点后7位全1(01111111:127)表示回环地址
- B类地址网络段(10000000.00000000.128.0)是不可使用的
- C类地址网络段(129.0.0)是不可使用的
回环地址
127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。
划分子网
分类的IP地址主要有A类、B类、C类三类(D类为多播地址),其中:
- A类拥有超过65535台主机
- B类拥有介于255~65535台主机
- C类拥有小于255台主机
这种分类却又几个很明显的缺陷:
- IP地址空间的利用率有时候很低,地址浪费大;
只有两三台主机的网络,也至少要一个C类IP地址,AB类浪费更严重,少有达上万台主机的大型IP网络。
- 路由表太大,影响网络性能
路由器需要能够从路由表中找出怎样到达其他网络的下一跳地址,而一个物理网络对应一个网络号,如果网络越多,则路由表越大,路由器的存储空间就需要越大,查找也更耗时,但使用构造超网,则能减少网络数,提升性能。
- 不够灵活
企业有很多部门,每个部门可能需要各自独立的网络,这怎么办呢?再申请网络?可是人数又不多,怎么办呢?划分子网刚好可以解决这个问题,而且便于管理。
划分子网是指将IP类网划分为若干个子网。一般是从网络的主机号用若干位作为子网号(当然用来分配的主机号就相应减少),于是二级网络便成了三级网络。
划分子网后,发送到子网某台主机的IP数据报,仍是根据IP数据报的目的网络号找到连接到路由器,然后路由器根据IP数据报的目的网络号和子网号找到子网,再把IP数据报交付主机。
并且,划分了子网后,ip地址的网络号是不变的,因此在局域网外部看来,这里仍然只存在一个网络,即网络号所代表的那个网络;但在网络内部却是另外一个景象,因为我们每个子网的子网号是不同的,当用化分子网后的ip地址与子网掩码做'与'运算时,每个子网将得到不同的子网地址,从而实现了对网络的划分。
子网掩码
子网掩码是一个应用于TCP/IP网络的32位二进制值,它可以屏蔽掉ip地址中的一部分,从而分离出ip地址中的网络部分与主机部分,基于子网掩码,管理员可以将网络进一步划分为若干子网。
作用:
前面说过,在使用TCP/IP协议的两台计算机之间进行通信时,IP数据报中是没有子网的相关信息,这时可以通过将本机的子网掩码与接受方主机的ip地址进行'与'运算,即可得到目标主机所在的网络号,又由于每台主机在配置TCP/IP协议时都设置了一个本机ip地址与子网掩码,所以可以知道本机所在的网络号。
通过比较这两个网络号,就可以知道接受方主机是否在本网络上。如果网络号相同,表明接受方在本网络上,那么可以通过相关的协议把数据包直接发送到目标主机;如果网络号不同,表明目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其他网络,直至到达目的地。在这个过程中你可以看到,子网掩码是不可或缺的!
子网掩码的分类
- 缺省子网掩码:
即未划分子网,对应的网络号的位都置1,主机号都置0。
A类网络缺省子网掩码:255.0.0.0
B类网络缺省子网掩码:255.255.0.0
C类网络缺省子网掩码:255.255.255.0
- 自定义子网掩码:
将一个网络划分为几个子网,需要每一段使用不同的网络号或子网号,实际上我们可以认为是将主机号分为两个部分:子网号、子网主机号。 形式如下:
未做子网划分的ip地址:网络号+主机号
做子网划分后的ip地址:网络号+子网号+子网主机号
也就是说ip地址在化分子网后,以前的主机号位置的一部分给了子网号,余下是子网主机号。
ICMP协议概述
因为IP协议是不可靠的传输服务,因此源地址发出的IP数据包很可能无法达到目标地址(目标地址不存在、过程中某链路中断等)
这时ICMP协议就能检测IP数据包传输过程中的各种错误,并通知源地址
ICMP协议实现原理
让发现错误的路由器,向数据包的(通过IP数据包的信息获取)源主机地址发送一个ICMP数据包,并且通过ICMP数据报告出错的原因
需要注意的是,ICMP协议是IP协议的补充,ICMP与IP协议位于同一个层次(IP层),但ICMP报文是封装在IP数据报的数据部分进行传输的。
封装在IP数据报的数据,只是IP报文里的一组数据
ICMP数据包的格式
格式
报文种类:
差错报告的报文:
询问报文: