网络层是OSI参考模型中的第三层,同时也是TCP/IP模型的第二层。它介于传输层和数据链路层之间,主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
协议结构图如下所示:
-
路由选择与分组转发(最佳路径)
路由算法:静态路由算法(非自适应路由算法)、动态路由算法(自适应路由算法)
动态路由算法:全局性(OSPF)、分散性(RIP)
分层次的路由选择协议:内部网关协议IGP、外部网关协议EGP -
异构网络互联
-
拥塞控制
- 注意:若所有节点都来不及接收分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。
解决方法:开环控制(静)、闭环控制(动)
IP 协议是基于 IP 地址将数据包发送给目的主机,能够让互联网上任何两台主机进行通信。
-
IP地址的组成
IP地址由网络号(网段地址)和主机号(主机地址)两部分组成。
-
IP地址的分类
IP 地址分为四类,分别是 A类、 B类、 C类、 D类(还有一个保留的E类)。 -
IP数据报格式
-
版本: 4 位版本号(version):指定 IP 协议的版本,对于 IPv4 来说,就是 4
-
首部长度: 4 位头部长度(header length):IP 头部的长度,单位是 4 比特,最小为 5(因为固定部分为 20 字节,所以最小就是 5),也就是说首部长度是 4×5=20 到 4×15=60 之间
-
区分服务: 8 位服务类型(Type Of Service):3 位优先权字段(已经弃用),4 位 TOS 字段,和 1 位保留字段(必须置为 0)。4 位TOS 分别表示:最小延时、 最大吞吐量、 最高可靠性、最小成本。 这四者相互冲突,只能选择一个。对于ssh/telnet 这样的应用程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。
-
总长度: 16 位总长度(total length):整个ip数据报的总长度为2^16-1=65535字节。不过由于链路层的MTU限制,超过1480字节后就会被分片(以太网帧MTU为1500字节,除去20 字节的IP报头)。
-
标识: 16 位标识(id):唯一的标识主机发送的报文。如果 IP 报文在数据链路层被分片了,那么每一个片里面的这个id 都是相同的。
-
标志:** 3 位标志字段:第一位保留。第二位置为 1 表示禁止分片,这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。第三位表示“更多分片”,如果分片了的话,最后一个分片置为 1,其他是 0。类似于一个结束标记。
-
片偏移: 13 位分片偏移(framegament offset):是分片相对于原始 IP 报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置,实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是 8 的整数倍(否则报文就不连续了)。
-
生存时间(TTL): 8 位生存时间(Time To Live, TTL):数据报到达目的地的最大报文跳数,一般是 64。每次经过一个路由,TTL就减1,一直减到 0 还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环
-
协议: 8 位协议:表示上层协议的类型
-
首部校验和: 16 位头部校验和:使用 CRC 进行校验,来鉴别头部是否损坏。也就是二进制的和!
-
源地址和目的地址: 32 位源地址和 32 位目标地址: 表示发送端和接收端
-
可选字段和填充: 用来支持排错、测量以及安全等措施
-
IP数据报分片
以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位;最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的 MTU。
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation);不同的数据链路层标准的 MTU 是不同的。 -
NAT(网络地址转换)
NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
宽带分享: 这是 NAT 主机的最大功能。
安全防护: NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。 -
CIDR 与 VLSM
解决 IP 地址浪费问题,除了使用子网掩码,还使用了 CIDR 和 VLSM 技术。
CIDR: 是主机号向网络号借位,目的是把几个网络汇总成一个大的网络,增加子网主机数量。
VLSM: 是网络号向主机号借位,目的是把一个标准的网络划分成几个子网,减少子网主机数量。 -
路由选择协议(RIP/OSPF/BGP)
路由选择协议主要用于路由器之间实现路由表收敛的协议,当路由表稳定时,使用其对数据包进行转发。
RIP: 距离矢量路由协议,跳数(最大跳数为15跳,16跳不可达)
OSPF: 开放式最短路径优先,比RIP协议智能。
BGP: 边界网关协议 -
ARP(地址解析协议)
ARP协议主要完成主机或路由器IP地址到MAC地址的映射(解决下一跳走哪的问题)
-
ARP协议的作用是什么: 二层寻址
-
ARP协议作用范围是什么: 同一个广播域
-
查看指令
arp -a
-
ARP应用
-
ARP协议4种典型情况
- 主机A发送给本网络上的主机B:用ARP找到主机B的硬件地址;
- 主机A发送另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
- 路由器发送给本网络的主机A:用ARP找到主机A的硬件地址;
- 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
-
RARP
反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。 -
网际控制报文协议ICMP
-
ICMP报文
-
ICMP的应用
- PING:测试两个主机之间的连通性,使用了ICMP会送请求和回答报文。
- Traceroute:跟踪一个分组从原点到终点的路径,使用了ICMP时间超时差错报告报文
-
网际组管理协议IGMP
IGMP协议是配置在路由器接口上的。用来周期性扫描本网段还有哪些计算机在绑定多播数据包,如果一个也没有的话,向上游路由器请求多播数据包就拒绝。一份也别过来了。 -
IP组播地址
组播路由选择协议常使用的三种算法:
基于链路状态的路由选择
基于距离-向量的路由选择
协议无关的组播(稀疏/秘籍) -
ping
ping工具就是通过 ICMP 消息测试网络层连通性的。源主机发出 Echo request 消息,目的主机回应 Echo reply 消息,则两台主机间的网络层通信正常。也可以通过 ping命令来判断目标主机是否启用。
OSI体系结构——网络层详解:https://blog.csdn.net/zhang175gl/article/details/105264596
OSI参考模型之网络层:https://blog.csdn.net/qq_46093534/article/details/116762359
IP地址基础知识:https://jinyi.blog.csdn.net/article/details/114484150
IP协议基本知识:https://www.jianshu.com/p/6135aa848e3d
IP 数据报格式及分片:https://ld246.com/article/1572322244697