1.OSI七层模型
物理层: 物理层主要负责传输比特流;
数据链路层: 数据链路层负责封装成帧、透明传输、差错检测;
网络层: 网络层负责路由选择,提供端到端的数据包传输;
传输层: 实现不同主机上两个进程之间的通信,包括可靠传输(TCP)和不可靠传输(UDP);
会话层: 会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
表示层: 主要是对接收到的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等))。
应用层: 确定进程之间通信的性质,以满足用户需要以及提供网络与用户应用软件之间的接口服务。
2.重要的协议
2.1 以太网协议 (数据链路层协议)
MAC地址(物理地址、硬件地址):一个MAC地址唯一指定一台设备,全球唯一,并且通常烧写在固件中。一般使用的格式为MAC-48,使用16进制表示,如:30-B4-9E-ED-85-CA 。 一个16进制数占4位,共12个,占48位,6字节。
以太网协议:应用于数据链路层的协议,用于相邻结点的数据传输。其协议头如下:
Mac地址表:Mac地址表的形式如下,有了Mac地址表就可以通过路由器进行转发,实现相邻结点间的数据传输。
通过以太网协议实现相邻结点间的数据传输的过程如下:
假如现在A要和C进行通信,但是到达E时查询Mac地址表没有发现匹配的Mac地址,那么路由器就会向除了A以外的端口进行广播。E收到B,C回复,便进行记录。
问题:如果两个通信的主机直接隔了多个路由器,如何跨设备传输?
2.2 IP协议 (网络层协议)
IP协议提供了虚拟互连网络,解决了在虚拟互联网络中数据报传输路径的问题。
IP协议头如下:
版本:占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6;
首部长度:占四位,故最大数值为15,表示的是IP首部的长度,单位是’‘32位字’’(4个字节),也就是说IP首部最大长度为60字节;
服务类型:表示包传输优先级;
总长度:占16位,表示IP消息的总长度;
16位标识(ID号):用于识别包的编号,一般为包的序列号。如果一个包被IP分片,则所有分片都拥有相同的ID;
标志:占3位,其中两位有效。分别代表是否允许分片,以及当前包是否为分片包;
片偏移:表示当前包的内容为整个IP消息的第几个字节开始的内容;
生存时间:表示包的生存时间,每经过一个路由器这个值减一,减到0时这个包就会被丢弃;
协议:占8位,表示IP数据所携带的具体数据是什么协议的;
首部校验和:用于检查错误,现在已不使用;
源IP地址:发送方的IP地址;
目的IP地址:接收方的IP地址;
可选字段:可变长度,可以用于记录其他控制信息,现在很少使用;
IP协议是网络层的协议,借助IP协议我们就能实现跨结点的数据传输。
流程如下:
在介绍具体过程之前,我们先介绍一下路由表:
路由表的形式很像之前的MAC地址表,路由表有两个字段:目的IP地址和下一跳的IP地址,借助路由表和IP协议我们就能实现跨结点传输数据。
IP协议转发流程:
可以看到,网络层使用的IP协议能够实现跨结点传输,但是底层还是依赖数据链路层的MAC协议。每次我们将数据链路层的数据帧交给网络层拼接成完整的IP数据报,通过IP数据报我们可以知道当前数据的目的IP是哪里,然后查询路由表就知道下一跳的IP地址。
知道了下一跳的IP地址就相当于是相邻结点间的数据传输,前面我们知道了相邻结点的数据传输可以用借助数据链路层实现。但是,数据链路层需要的不是IP地址,而是MAC地址(物理地址)。
下面介绍一个将IP地址转为MAC地址的协议。
2.3 ARP协议与RARP协议 (直接封装在数据链路层的数据帧里面,但是它使用了IP地址,故放在了网络层的协议)
ARP协议也叫做地址解析协议,它能将网络层32位IP地址转为数据链路层48位MAC地址。
RARP协议叫做逆地址解析协议,它能将MAC地址转为IP协议。
2.4 ICMP协议 :网络控制报文协议
主要用于辅助IP协议进行数据传输。
ICMP协议可以报告错误信息或者异常情况,其封装在IP协议内部,如下:
还记得IP协议有个8位的协议字段吗?通过在协议字段填充相应的值,我们就能知道当前IP协议携带的数据是什么类型的。
ICMP的协议规定如下,一般分为差错报告报文和询问报文:
ICMP的应用:
1.Ping应用:使用的是ICMP的询问报文
可以看到 IP 数据包的大小为32字节,我们一起来分析一下。
首先,ip协议头的大小一般为5行,一行是32位,4字节,故ip协议头占20个字节。
故剩下12个字节为ICMP报文的长度,其头部为4字节,所以ICMP报文的数据段为8字节。
2.Traceroute应用
用于探查IP数据报在网络中走过的路径。
此前的IP协议中有一个占8位的生存时间字段,每经过一个设备,TTL减1,当TTL为0时,网络设备必须丢弃该报文。
当网络设备丢弃报文时,会发送一个ICMP终点不可达报文,告诉源端主机数据传输发生了错误。
Traceroute通过将TTL从1开始增加,依次发送一个数据报到一个目的地址。由于TTL开始很小,到达不了目的地址,每次都会返回一个ICMP终点不可达报文,原主机就记录当前到达的最后一个地址…直到TTL足够大,此时到达目的地址,此时源主机也记录了这条路径上的所有经过的IP地址。
2.5 自治系统
自治系统是处于一个管理机构下(公司、学校)的网络设备群。自治系统内部网络自行管理,对外提供一个或者多个出(入)口。
自治系统内部路由的协议称为:内部网关协议(如RIP,OSPF);
自治系统外部路由的协议称为:外部网关协议(如BGP);
RIP协议: 是使用距离矢量算法的一种协议,用于维护路由表的数据;
OSPF协议: 即开放最短路径优先,使用的是迪杰特斯拉算法求最短路径的;
RIP协议和OSPF协议的比较:
BGP协议: 边际网关协议,运行在自治系统之间,用于寻找一条比较好的路由;