网络:网络层IP协议
目录
一、IP协议
1、 IP数据报
1.1 IP首部
2、IP协议的转发
2.1 路由表
2.2 IP协议转发流程
3、子网划分
3.1 分类的IP地址
3.2 划分子网的基本思想
3.3 子网掩码
3.4 无分类编址CIDR(构成超网)
二、ARP协议
1、ARP协议
2、RARP协议
三、网络地址转换NAT
四、差错报告:ICMP协议
1、差错报告
2、询问报文
3、应用
3.1 Ping
3.2 Traceroute
五、路由
1、自治系统
2、内部网关协议:RIP
2.1 距离矢量算法DV
2.2 RIP协议
2.4 RIP协议的优缺点
3、OSPF协议
3.1 Dijkstra(迪杰斯特拉)算法
3.2 链路状态协议LS
3.3 OSPF协议
3、外部网关协议BGP
3.1 BGP简介
3.2 BGP发言人
六、核心提炼
1、主要问题
2、重要概念
一、IP协议
IPV4长度的32位,分成4个8位,常点分10进制来表示。
IP协议的主要作用:
- 使得复杂的网络,变成虚拟互联的网络了;
- 使得网络层可以屏蔽底层的细节,而专注于网络层的数据转发;
- 解决了虚拟网络中,数据报传输路径的问题。
1、 IP数据报
对于数据链路层,IP数据报是组成帧的数据部分。而IP数据报,又是由IP首部和IP数据报的数据两部分组成。
1.1 IP首部
每一行都是32个比特,前5行是必须存在的;第六行选项非必须。也就是说,IP首部至少有20个字节长度。
第一层的32个比特的信息:
- 版本:IP协议的版本,主要是IPV4,也有IPV6;
- 首部长度:指的是IP首部的总长度,占4个比特,即最大为15,单位是“32比特”,或者说“4个字节”。所以,头部最大长度是60个字节,也就是说选项最长可以是60-20=40个字节;
- 总长度:整个IP数据的总长度(IP首部+IP数据),16位,单位是字节,即IP数据最长为65535字节。
第二层的32个比特的信息:
- 3位标志:目前只使用了前两位,用于标识IP数据报文是否可以分片;
- 13位片偏移:如果IP报文被分片了,则使用13位片偏移来记录当前的数据帧,是分片后的第几片;
第三层的32个比特的信息:
- 生存时间TTL:8位,IP报文在网络中的寿命,只要报文通过一台设备(路由器或者计算机),则TTL减一,当TTL为0时,网络会丢弃这个IP报文。用于避免IP报文在找不到终点的时候,无限的在网络中传输,消耗带宽;
- 协议:8位,指的是IP报文携带的数据,是什么协议的数据,例如TCP、UDP等。协议内容参考下面的图片;
- 首部校验和:校验IP的首部是否出错,如果出错就丢弃掉。
可以看到,IP数据中是可以继续封装IP数据的。
2、IP协议的转发
IP协议转发的大致流程:
抽象的来看,是通过逐跳(hop-by-hop)来实现的在不同网络中的传输:
2.1 路由表
路由表中,每一条路由存储的是两个信息:(目的网络地址,下一跳的地址)。目的网络地址指的是最终要到达的IP地址,下一跳地址,指的是要去目的网络地址,下一跳应该先去那个IP地址。
2.2 IP协议转发流程
IP协议转发的一个完整流程:
再加上数据链路层,传输过程如下:
1)A ----> E:
2)E ----> F:
3)F ----> C:
其中,在每一条中:
- 数据帧:每一跳的源MAC地址和目的MAC地址都在变化;
- IP数据报:每一跳的源IP地址和目的IP地址都不变。
3、子网划分
3.1 分类的IP地址
IPV4地址由网络号和主机号组成,总共32位。根据网络号和主机号长度的不同,IP地址分为如下几类:
- A类地址:网络号8位,主机号24位,并且首位是0;
- B类地址:网络号16位,主机号16位,并且首位是10;
- C类地址:网络号24位,主机号8位,并且首位是110。
三类地址的特点:
特殊主机号:
- 主机号全是0:表示当前网络段,不能分配给特定主机;
- 主机号全是1:表示当前网络段的广播地址,即向主机号全1的地址发送广播,用来通知当前网络段的全部主机,不能分配给特定主机。
特殊的网络号:
- 对于A类地址,网络段全0,表示特殊网络,不允许使用;
- 对于A类地址,网络段后7位地址全为1(即127),表示回环地址,不允许使用;
- 对于B类地址,网络段全0(即128.0),不可使用;
- 对于C类地址,网络段全0(即192.0.0),不可使用。
本地回环地址:127.0.0.1被称为本地回环地址,不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。
3.2 划分子网的基本思想
二级IP地址(网络号+主机号)有很多不合理的地方:
- IP地址的空间利用率可能很低:如果有256名员工,这个公司就必须申请B类IP地址,会导致大量的IP地址不能被利用;
- 路由表过大影响网络性能:路由器中会存储一个路由表,记录到目标地址的下一跳路由器地址。如果物理网络中的IP地址资源过多,会导致路由表过大,路由器查询时间过长,导致网络性能恶化;
- 两级IP地址不够灵活:有时候一个单位需要在新的地方开辟新的网络,但是在申请到一个新的IP地址之前,新增的网络不能连接到互联网。
由于以上问题,所以提出了三级子网的概念,在网络号的基础上,增加一个子网号。这种做法,就叫划分子网,或者子网寻址、子网路由选择。
划分子网的思路:
- 整个网络对外表现为一个网络,外部网络无法区分这个网络内部的不同子网;
- 从主机号借用若干位作为子网号,IP地址在本单位内部显示为三级IP地址:<网络号>,<子网号>,<主机号>;
- 从其他网络发送给本单位某台主机的IP数据报,仍是根据本单位的网络号发送到本单位的路由器上,本单位的路由器再收到IP数据报之后,再按子网号找到目的子网,然后把IP数据交付给目的主机。
3.3 子网掩码
子网掩码是一个子网的重要属性。
子网掩码是为了定位到一个子网下的一组IP地址的子网。子网掩码也是32位,网络号和子网号对应的位数都是1,主机对应的位置都是0,这样一个IP地址和一个子网掩码逐位进行与运算,得到的结果就是网络号+子网号的网段信息。
3.4 无分类编址CIDR(构成超网)
无分类编址CIDR(Classless Inter-Domain Routing)的主要特点:
- 消除了传统的A、B、C三类地址和划分子网的概念,可以更有效地分配IPV4地址空间。CIDR将IP地址分成两部分:网络前缀和主机号,使IP地址称为无分类的两级编码:<网络前缀>,<主机号>。CIDR还使用斜线记法,在IP地址后面加斜线,然后写上网络前缀的位数。例如128.14.35.7/20。网络前缀可以是任意长度。
- CIDR把网络地址相同的连续IP地址组成一个CIDR地址块。只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的最小地址和最大地址,以及地址的数量。
使用CIDR后,路由器查询路由表的操作更复杂了。通常是把无分类编址的路由表存放到一种层次的数据结构中,然后自上而下的按层次进行查找。这里最常用的是二叉线索,这是一种特殊结构的树,每一层代表IP地址中的一位,深度最多有32层。
二叉线索的每个叶节点中还需要存储一个子网掩码。在用二叉线索查找到叶节点后,还需要将寻找的IP地址和该叶节点的子网掩码逐位相与,看结果是否与对应的网络前缀相匹配,如果匹配,就按下一跳的网络地址转发该分组,否则就丢弃该分组。
二、ARP协议
1、ARP协议
ARP(Address Resolution Protocol),地址解析协议,用于将IP地址转换为48位的MAC地址。
ARP高速缓存表:用来记录IP地址和MAC地址的映射关系。
如果ARP高速缓存表中没有记录IP地址和MAC地址的映射关系,ARP进程将会在本局域网广播ARP请求分组,其中包含自己的IP地址和MAC地址,以及想要知道的MAC地址的目标IP地址。目标设备收到这个广播后,会向主机发出响应,告知自己的MAC地址。路由器的ARP进程收到响应后,就在ARP高速缓存中写入该MAC地址和IP的映射关系。
需要注意的是,ARP的高速缓存表是有期限的,因为IP地址到MAC地址的映射,会随着IP地址的变化而变化。
2、RARP协议
RARP(Reverse Address Resolution Protocol),逆地址解析协议。
三、网络地址转换NAT
网络地址转换技术NAT主要用于,多个主机通过一个公有IP访问互联网的私有网络中。
现在一般吧运输层的端口号也算上,也叫做网络地址与端口号转换NAPT。局域网中的一台主机通过某个端口向公网发送消息的时候,路由器通过NAPT将该主机的“IP:端口”转换成“路由器的公网IP:路由器上的某个端口”,再去给公网发送数据;收到公网上另一个实例响应的消息后,再根据接收响应的端口,映射到对应的局域网的主机的相应端口。
NAPT路由器和普通路由器不同的地方在于:
- 普通路由器在转发IP数据报的时候,一定要更换其IP地址,而普通路由器不会更换;
- 普通路由器在转发数据的时候,是工作在网络层,而NAPT路由器还要看运输承担端口号。
NAT减缓了IP地址的消耗,但是增加了网络的复杂度。
四、差错报告:ICMP协议
网际控制报文协议ICMP(Internet Control Message Protocol),允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP协议是封装在IP数据报的数据部分里面的:
ICMP首部的内容:
字段解释:
- 类型:指的是ICMP报文的种类;
- 代码:指的是当前ICMP种类的具体的错误类型;
- 校验和:校验报文是否出错。
ICMP报文分成两类,一类是差错报告的报文,一类是询问报文。
1、差错报告
差错报告的报文内容:
2、询问报文
询问报文的内容:
3、应用
3.1 Ping
Ping命令通过ICMP的询问报文实现。Ping命令的响应内容:
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.103 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.085 ms
- 64 bytes指的是报文的大小。IP首部至少20个字节,所以ICMP报文花费了不超过44个字节;
- ttl表示报文的寿命,每经过网络中的一个节点,ttl减一。
用ping命令排查网络状态:
- ping 127.0.0.1:ping回环地址是为了检查协议栈是否有问题;
- ping 网关(路由器):一般路由器地址是192.168.1.1,检查终端到网关是否是通的;
- ping 远端地址,例如ping百度。
3.2 Traceroute
Traceroute用于探查IP数据报在网络中走过的路径。Traceroute使用了差错控制报文。
Traceroute首先会发出一个TTL为1的报文,然后在经过第一个路由器的时候TTL减1,变成0,第一个路由器会返回一个差错信息,然后Traceroute记录下返回差错信息的路由器的地址,作为第一个网关;然后Traceroute再发送一个TTL为2的报文,获取第二个网关。以此类推,知道传送到目标地址,获取路径上的全部网关。
五、路由
路由是网络层的主要功能。这里主要讨论路由表的来源,即在路由表中下一跳地址是如何获取到的。
1、自治系统
一个自治系统AS,是一个管理机构下的网络设备群。
AS内部网络自行管理,AS对外提供一个或多个出入口。
自治系统内部路由的协议,被称为内部网关协议,包括RIP、OSPF等。
自治系统外部路由的协议,被称为内部网关协议,即BGP协议。
2、内部网关协议:RIP
2.1 距离矢量算法DV
距离矢量算法是运行在图中的一种算法。算法描述:
- 图中的每一个节点,都使用两个向量:Di、Si。Di描述了当前节点到下一个节点的距离;Si描述了当前节点到别的节点的下一个节点是哪个。
- 每个节点都会和相邻的节点交换向量Di和Si信息,并根据交换的信息进行运算,并更新自己的Di和Si的信息。
Di和Si的详细描述:
- di1表示,当前节点i到节点1的距离;
- si1表示,当前节点i到节点1的路径中的下一个节点是什么;
- n表示,当前节点的数量;
- 求dij的最小值:dij = min(dix + dxj)。
路由器中会存储这样一个表,记录节点到节点之间的距离,同时使用dij = min(dix + dxj),来更新表中的距离值,其中S表示到目标节点的下一个节点:
2.2 RIP协议
RIP(Routing Information Protocol)协议,路由信息协议,算法描述:
- 使用距离矢量算法DV算法的一种路由信息;
- 把网络的跳数,作为DV的距离;
- RIP协议每隔30s交换一次路由信息;
- RIP协议默认把跳数大于15的路由,认为是不可达路由。
RIP协议的过程:
- 路由器初始化路由信息Di和Si两个向量;
- 对相邻路由器X发过来的信息进行修改,将所有距离+1,下一跳修改为X;
- 根据X发过来的信息,更新本地路由表:插入新的路由;对于下一跳为X的,更新为新信息;对比相同目的的距离,如果新信息更小,则更新本地路由表;
- 如果3分钟没有收到相邻的路由器信息,则把该相邻路由器设置为不可达(16跳)。
2.4 RIP协议的优缺点
1、故障信息传递慢
下图中,如果A不可达,则B询问C发现,A是可达的,跳数为2,则将A的跳数修改为3;然后C询问B,发现到A下一跳是B,则将跳数更新为4;一直这样循环下去,知道B和C中A的跳数都超过15以后,才会认为A不可达。
这个问题是由于每个路由器只能看到相邻路由器的信息,看不到更远的信息导致的。
2、网络规模受限
RIP协议认为15跳以上是不可达,所以如果网络规模较大时,跳数可能会过多,这时候会认为本来可达的链路为不可达。所以RIP协议不能应用于网络规模较大的情况。
3、实现简单,开销小
3、OSPF协议
3.1 Dijkstra(迪杰斯特拉)算法
这是使用广度优先搜索的图算法,用于解决有权图从一个节点到其他节点的最短路径问题。核心思想是“以起始点为中心,向外层层扩展”。
算法描述:
- 初始化两个集合(S, U),S是只有定点A的集合,U是所有其他顶点的集合;
- 如果U不为空,则U集合中的顶点进行举例排序,并取出举例A最近的顶点D;
- 将D纳入S集合,更新通过顶点D访问到U集合所有顶点的距离(如果距离更小,才更小);
- 重复第2步和第3步,直到U为空。
3.2 链路状态协议LS
链路状态协议LS的特点:
- 路由器会向所有的路由器发送状态信息:路由器会向相邻路由器发送消息,而相邻路由器在收到消息后,会继续向相邻的路由器广播该信息;
- 这个消息会描述,该路由器与相邻路由器的链路状态,包括距离、时延、带宽,网络管理员可以介入这个状态的管理;
- 只有当链路状态发生状态的时候,才会发送更新消息。
3.3 OSPF协议
OSPF(Open Shortest Path First)协议,指的是开放最短路径优先协议。协议的核心是迪杰斯特拉算法。
- 路由器会向所有的路由器发送状态信息:所以每个路由器的链路状态数据库都是完整的、全网一致的;
- 消息描述该路由器与相邻路由器的链路状态:链路状态包括距离、时延、带宽等信息,协议更加客观;
- 只有当链路状态发生状态的时候,才会发送更新消息:减少了数据的交换。
OSPF协议的5种协议类型:
- 问候消息:发送给隔壁路由器,确认与隔壁路由器是否可达;
- 链路状态数据库的描述信息:用于向隔壁路由器发送自己的链路状态消息;
- 链路状态请求消息:用于向隔壁路由器请求链路状态数据库;
- 链路状态更新消息:重要,非常频繁的一个消息,这条消息会不断广播到这个网络;
- 链路状态确认:用于对链路状态更新的确认。
OSPF协议的过程:
- 路由器接入网络;
- 路由器向相邻路由器发出问候信息,确认可达性;
- 和隔壁路由器互发状态描述信息,并根据隔壁路由器的状态描述信息,更新自己的链路状态数据库;
- 路由器广播和接受链路状态更新消息,并更新自己的链路状态数据库。
OSPF协议和RIP协议对比:
3、外部网关协议BGP
3.1 BGP简介
BGP(Border Gateway Protocol),边际网关协议,是运行在自治系统之间的协议。
使用BGP协议的原因:
- 互联网规模很大,如果使用OSPF协议,性能将会非常差;
- 资质系统内部可能使用不同的路由协议,不同协议之间无法通信;
- 自治系统之间的信息传输需要考虑一些网络状态之外的信息,例如政治、安全等。
BGP协议可以找到到达目的地是一条比较好的路由。注意,这里不是最好的路由,而是比较好的路由。
3.2 BGP发言人
- 自治系统边界的路由器会被配置为BGP发言人,AS之间通过BGP发言人来交换信息。
- BGP发言人可以人为配置策略,比如是否允许某些自治系统的信息通过、需要什么代价才能通过等。
比如,如下的结构中,每个主干ISP就是一个自治系统AS,分别可以配置各自的BGP发言人,在和其他系统通信的时候,就可以判断是否允许对方系统的消息通过。高层的自治系统的BGP代言人,可以拦截发向自己的低级自治系统的消息。
六、核心提炼
1、主要问题
- 什么是IP地址,IP地址有什么特征?IP地址和MAC地址有什么区别和联系?
- IP报文由IP头部和IP数据两个部分组成,IP头部一般占用多少个字节?
- 请简述IP头部包含哪些数据?
- IP头部的TTL数据有什么作用?
- 网络层是怎么界定区分一个IP报文的?
- 路由表是网络层重要的数据结构,路由表有什么作用?
- ARP协议有什么作用?如何清理本机的ARP缓存?
- ARP协议的设计有一定的缺陷,请通过搜索引擎自行搜索了解利用ARP漏洞攻击的方法。
- IP地址一共4Bytes,32bits,理论上可以表示多少个IP?
- 为了科学的使用IP地址,早期的科学家把IP地址划分为A、B、C三类IP地址,这些IP地址有什么特点?
- A类地址理论上可以有多少个子网,每个子网理论上有多少个主机号?
- 请列举特殊的网络号和特殊的主机号。
- 如何计算一个IP的网络号是什么?
- 一个网络的掩码是255.255.255.248,请问这个网络可以连接多少台主机?
- 网络地址转换技术(NAT)解决了什么问题?
- NAT技术的实现原理。
- ICMP报文和IP报文一样,也是由头部和数据两个部分组成,请简述ICMP报文的头部字段。
- ICMP报文和IP报文由什么关系?ICMP报文是怎么样传输的。
- 常见的利用ICMP协议的计算机应用有ping和traceroute,请简述这两个应用的功能,以及这两个应用是怎么利用ICMP协议完成工作的。
- 网络层路由可以抽象成一个图算法问题,按照网络的大小可以分为内部网关协议和外部网关协议,请列举与网络路由相关的算法。
- 请简述RIP协议的过程。
- RIP协议有什么优点和缺点?
- 请简述OSPF协议的过程,OSPF协议中起到重要的算法是什么算法?
- OSPF协议有什么优点和缺点?
- 网络层有了RIP协议和OSPF协议,为什么还需要BGP协议?BGP协议解决了什么问题?
2、重要概念
- 虚拟互联网络
- IP协议
- ICMP协议
- 路由表
- 子网掩码
- 无分类编址CIDR
- NAT
- 自治系统(AS)
- 距离矢量
- RIP协议
- 链路状态
- 迪杰斯特拉算法
- OSPF协议
- BGP协议
网络:网络层IP协议相关推荐
- 网络 网络层 | IP协议、网段划分、公网与私网、路由选择
网络层是用信子网的边界,是通信设备的协议最高层.其功能是负责地址管理与路由选择(为每一条网络中的数据根据想去的地方选择合适的路径),典型的协议是IP协议,典型的设备是路由器 IP协议 IP协议的工作类 ...
- 网络基础网络层--IP协议
网络基础网络层--IP协议 一.IP协议解析 (一)4位版本 (二)4位报头长度 (三)8位服务类型 (四)16位数据报长度 (五)16位分片标识 (六)3位分片标志 (七)13位分片偏移 (八)8位 ...
- 熟悉网络层IP协议和数据链路层
1. 应用层IP 协议 1.1 IP协议头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): IP头部的长度是多少个32 ...
- 网络层IP协议—ipv4
什么是IP协议? IP 协议(Internet Protocol)是一个处于垄断地位的网络层协议. IPv4 就是 IP 协议的第 4 个版本,是目前互联网的主要网络层协议.IPv4 为传输层提供 H ...
- 网络基础 IP协议 子网划分 子网汇总 超网 无类间路由超详细介绍
1.10数据封装/解封装过程 1.10.1封装 特点 从四层网上层封装 2.过程 1)在数据后面加FCS校验.data->FCS校验 2)对数据在四层进行封装,通过TCP/UDP.TCP/UDP ...
- 网络原理IP协议/以太网
大家快来学习啦~~~ 目录 1.IP协议 1.1地址管理 1.1.1普通地址 1.1.2特殊地址 1.1.3NAT机制 1.2路由选择 1.以太网协议 2.DNS协议 一.网络层 1.IP协议 ①IP ...
- 网络层IP协议和数据链路层
目录 IP协议 协议头格式 分片 网段划分 特殊的IP地址 IP地址的数量限制 NAT技术 NAT技术背景 NAT IP转换过程 NAPT NAT技术的缺陷 NAT和代理服务器 私有IP地址和公网IP ...
- 网络:IP协议与寻址
TCP/IP协议族中最核心的协议,提供不可靠.无连接的数据报传输服务. · 不可靠:不能保证IP数据报能成功送达. · 无连接:并不维护后续数据报的状态信息,每个数据报的处 ...
- 计算机网络-实验5:网络层-IP协议分析
实验报告 IP协议分析与子网转发 实验目的:1.理解IP协议数据报格式,IP数据包分片: 2.了解路由器在不同子网之间转发数据报,配置静态路由. 实验任务1.启动W ...
最新文章
- 漫谈惯性、视觉暂留、潜意识、混合动力发动机、先入为主 - 纯粹的无厘头?...
- Python函数(1)
- POJ3748 位操作【位运算+STL】
- 计算机实验内容记录,关于实验数据自动记录到电脑上的问题
- 大数据小视角1:从行存储到RCFile
- 基于web在线餐饮网站的设计与实现——蛋糕甜品店铺(HTML+CSS+JavaScript)
- 计算机格式字体颜色,电脑怎么设置不同的字体颜色样式
- 【NLP】第10章 使用基于 BERT 的 Transformer 进行语义角色标记
- 电子计算机4个发展阶段的划分,计算机以什么划分发展阶段
- html里alert怎么设置确定和取消,自定义alert 确定、取消功能(示例代码)
- html中如何实现倒计时
- 电子计算机进行会计核算 其会计,1. 使用电子计算机进行会计核算,其软件与其生成会计 ….doc...
- C语言的access函数的用法
- 老电脑安装XP时遇到问题的总结
- 新神魔大陆服务器现在在维护吗,新神魔大陆1月22日合服维护公告
- 直流有刷电机并联小电容作用分析
- Win10使用CH340 USB-SERIAL串口
- Xshell、xftp 安装PJ 以及使用
- 皇家恩菲尔德子弹500经典
- robotframework 内置库BuiltIn学习笔记