网络层
一、网络层的作用
负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序。
网络层的中间设备:路由器,能看到网络层的IP地址来选择路径。
附:不同层的中间设备:
中间设备又称为中间系统或中继(relay)系统。
物理层中继系统:转发器(repeater),有点像集线器。
数据链路层中继系统:网桥或桥接器(bridge)。
网络层中继系统:路由器(router)。
传输层/应用层中继系统:网关(gateway)器。网关就是路由器接口的地址。一般是本网段第一个地址。
二、网络设备和OSI参考模型的关系
发送端(封装):
(1)应用层准备要传输的数据;
(2)传输层把文件进行分段并编号;(数据段)
(3)网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
(4)数据链路层把每个数据加上MAC地址;两种情况:(数据帧)
使用自己的子网掩码,判断自己和目标地址分别在哪个网段,若在同一个网段(不过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧;如果子网掩码不是一个网段(用与运算),通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2,因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF。
(5)物理层把数据帧变成数字信号(bit流)
接收端(解封):
(1)交换机Hub0接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的,要去哪。
(2)路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容。
(3)路由器M2到M3是点对点通信,遵守PPP协议。
(4)PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来。
三、ARP协议
1.TCP/IP协议层次关系
2.ARP协议的作用
将IP地址通过广播(本网段,不通过路由器),目标MAC地址是FF-FF-FF-FF-FF-FF,解析目标IP地址的MAC地址。
ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系。如果所找的主机和原主机不在同一个局域网上,那么就要通过ARP找一个位于本局域网上的某个路由器的MAC地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知情的。
只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的MAC地址。
3.使用ARP的四种典型情况
(1)发送方是主机,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
(2)发送方是主机,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
(3)发送方是路由器,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
(4)发送方是路由器,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
4.逆地址解析协议RARP
只知道自己MAC地址就能获得其IP地址。
四、网际控制报文协议ICMP
1.ICMP协议
ICMP:在IP之上,用来测试网络层有没有故障。使用最多的命令是ping。
为了提高IP数据报交付成功的机会,在网络层使用了ICMP(Internet Control Message Protocol)。
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告;
ICMP不是高层协议,而是IP层协议;
ICMP报文件为IP层数据报的数据加上数据报的首部,组成IP数据报发送出去。
2.ping(Packet Internet Grope)命令诊断网络故障
PING是网络层命令。
TTL是数据报的生存时间每过一个路由器就会减1,作用是防止数据报在网络中循环。TTL默认初始值如下:
Linux 64
Windows 128
Unix 256
可以根据TTL值粗略判定对方是什么系统。
(1)PING,因特网包套所起,用于测试网络连接量的程序。ping发送一饿ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
(2)ping指端对端联通,通常用作可用性检测,但是某些病毒会强行大量远程执行ping命令抢占你的网络资源,导致系统网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。
(3)如果打开IE浏览器访问网站失败,可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索。
3.ping和pathping命令
QQ能登上,网页打不开是为什么? 网络层没有问题,域名解析有问题。
pathping 能跟踪数据包路径,发现出问题的位置。
Windows上跟踪数据包路径的命令:tracerert 10.7.1.53
路由器上跟踪数据包路径的命令:traceroute 12.0.0.3
五、IGMP协议和多播组播
1.广播:目标MAC地址全是F,目标IP地址全是255,也就是全是1.全网广播不能跨越路由器。
组播=多播:分组广播。
2.访问多播视频节目
使用多播一般用于直播,网络会议,能够节省带宽。
IGMP协议的作用就是周期性扫描本网段内有没有主机在访问多播数据包。
六、IP数据包的结构
首部:第一部分是固定长度,20字节,是所有IP数据包必须具有的。后一部分是可选字段,4字节,长度可变。
(1)版本:用来表示TCP/IP是哪个版本,ipv4还是ipv6.
(2)区分服务:确定更高的传输优先级。
(3)总长度:确定数据部分长度。一共是16位,最多有2^16-1=65535字节。
注意,网络层,数据包最大65535字节;而数据链路层数据最大是1500字节,是不一样的。所以说,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元MTU。
数据包分片:把数据分割,分别添加IP地址,通过网络发给目标MAC地址。目标在通过网络层拼接。传送过程中可能会丢包,或者后发的先到(泪滴攻击就是利用目标机发送破坏的IP包(重叠的包货过大的包负荷)可以通过TCP/IP协议来瘫痪各种不同的操作系统)。所以需要编号。
(4)标识:如果出现数据包分片,那么标识用来确定哪些数据包是需要组合的。
(5)标志:确定该数据包是完整的还是分片中的一部分。占3位,只有前两位有用,标志字段最低位是MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间一位是DF(Don’t Fragment),只有DF=0才允许分片。
(6)片偏移:偏移等于当前字节在数据部分的第几个再除以8.(下图是一个举例)
(7)生存时间:就是TTL,time to live,每过一个路由器就减1。8位二进制。防止数据包在网络中循环。
(8)协议:用协议号标识数据部分是什么数据。
ICMP协议号:1;
IGMP协议号:2;
TCP协议号:6;
UDP协议号:17;例如:DNS解析
IPv6协议号:41;
OSPF协议号:89;
(9)首部检验和:16位,只检验数据报的首部,不检验数据部分。这里不是采用CRC检验码而是采用简单的计算方法。每经过一个路由器就会检验一次。
(10)源地址和目的地址都是IP地址,32位,只符合IPv4。IPv6是128位。
(11)可变部分:一般没用。
七、路由
1.静态路由
需要管理员告诉路由器所有没有直连的网络下一跳给谁。
适合于小规模网络,不能自动调整路由。
2.动态路由
(1)RIP协议
周期性广播(30s)路由表,选择路径的依据是最少的跳数,最大跳数是15跳,所以一般不适合大网络。
(2)OSPF协议
根据带宽选择路径。
参考文献: