4.计算机网络-网络层(一)

网络层

概述

IP协议

ICMP协议

ARP协议与RARP协议

IP地址的子网划分

网络地址转换 - NAT技术


概述


网络层的设计不关注物理层和数据链路层的实现细节
在这里插入图片描述
网络层:解决数据路由问题,决定数据在网络中传输的路径,实现跨节点的数据传输
路由器是网络层非常重要的设备
本章学习索引

  • 网络层IP协议相关:
    IP协议、子网划分、简单路由过程
  • 网络层其他协议:
    ARP协议与RARP协议、ICMP协议
  • IP的路由算法:
    路由的概述、内部网关路由协议、外部网关路由协议

IP协议


虚拟互联网络

回顾问题:
MAC表只能实现相邻物理节点的传输,若传输需要跨多个路由时怎么办??
在这里插入图片描述

实际的计算机网络是错综复杂的;物理设备通过IP协议,屏蔽了物理网络之间的差异;当网络中的主机使用IP协议连接时,则无需关注网络细节;
如下,A通过IP协议向C发送报文
在这里插入图片描述
IP协议使复杂的实际网络变为一个虚拟互连的网络;使网络层可以屏蔽底层细节而关注网络层的数据转发;解决虚拟网络中数据报传输路径问题

IP协议
IP地址

链路层使用MAC地址来标识唯一的一个物理地址;
网络层也有一个地址的概念:IP地址
在这里插入图片描述
IP地址一共32位,常分为4个8位,共能表示 2 32 2^{32} 232 = 4294961296个地址;
IP地址是可变的,MAC地址是永久不变的是和网卡绑定;
IP地址常用点分十进制来表示(0255.0255.0255.0255)。

IP数据报

前面链路层介绍中,链路层将物理层的比特流分成帧首部、帧数据、帧尾部,其中的帧数据内容通常情况下就是IP数据报,如下;
在这里插入图片描述
IP数据报分两部分:IP首部、IP数据报的数据。

IP首部固定版本(4)首部长度(4)服务类型 TOS(8)总长度-字节(16)
标识(16)标志(3)片偏移(13)
生存时间(8)协议(8)首部校验和(16)
源IP地址(32)
目的IP地址(32)
可变可选字段(长度可变)填充
数据部分IP数据报的数据
IP首部

IP首部长度最小是20字节(上表IP首部固定部分),最大60字节(固定 + 可变,同时首部长度为4位也限制了首部大小)

  • 版本:
    占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流的版本是4,即IPv4,也有IPv6
  • 首部长度
    占4位,表示IP首部总长度,最大值为15,单位是4字节(32位),意味着IP首部最大长度为15 × 4 = 60字节
  • 服务类型
  • 总长度
    占16位,表示IP数据报总长度(IP首部(4*首部长度) + IP数据),最大值为65535字节

IP数据最大长度比链路层MTU大很多,数据链路层会将IP数据报分片为多个数据帧发送

  • 标识
    占16位,协议内部具体所使用的
  • 标志
    占3位,只有两位有意义,标记当前IP报文是否可以分片
  • 片偏移
    占13位,当IP报文被分片时,片偏移记录的是当前数据帧是第几个偏移的IP数据报分片数据
  • 生存时间TTL(Time to live)
    占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文

防止IP数据报找不到目标地址时,在网络中无限的传输。同时也代表该IP数据报要在有限发送到目标,否则将被丢弃

  • 协议
    占8位,表明IP数据所携带的数据具体是什么协议(如:TCP、UDP等)
协议名ICMPIGMPIPTCPUDPOSPF
协议字段值12461789
  • 首部校验和
    占16位,校验IP首部是否有出错
  • 源IP地址
  • 目的IP地址
IP报文抓取分析:

在这里插入图片描述

IP协议的转发流程

逐跳(hop-by-hop):数据报文传输过程中每过一个节点称为一跳,IP报中的TTL值为报文最大可经过的跳数

路由表

路由表记录的是目的IP地址下一跳IP地址的映射

目的IP地址下一跳IP地址
IP1IP4
IP2IP5
IP3IP6

注意:映射的是下一跳IP地址,而不是目的IP地址

转发流程

在这里插入图片描述

  • 只从网络层来看
    A发出目的地址为C的IP数据报,查询路由表得到下一跳为E
    A将数据报发送给E
    E查询路由表发现下一跳为F,将数据报发送给F
    F查询路由表发现目的地址C,直接连接发送数据报给C
  • 结合网络层和数据链路层来看
    A发出目的地址为C的IP数据报,查询路由表得到下一跳为E
    A将数据报交给数据链路层,并告知目的MAC地址是E
    数据链路层填充源MAC地址和目的MAC地址E
    数据链路层通过物理层将数据发送给E
    E的数据链路层接收到数据帧,把帧数据交给网络层
    E查询路由表,发现下一跳F
    E把数据报交给数据链路层,并告知目的MAC地址为F
    E的数据链路层封装数据帧并发送给F
    F的数据链路层接收到数据帧,把帧数据交给网络层
    F查询路由表,发现下一跳为C
    F把数据报交给数据链路层,并告知目的MAC地址为C
    F的数据链路层封装数据帧并发送

数据帧每一跳的MAC地址都在变化
IP数据报每一跳的IP地址始终不变


ICMP协议


一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。
所以我们就需要一种协议来协助IP协议完成这样的功能 – ICMP协议。

  1. ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议
  2. ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6
  3. ICMP报文作为IP报文数据去使用,对应IP首部协议字段值为1
ICMP功能
  • 确认IP包是否成功到达目标地址
  • 通知在发送过程中IP包被丢弃的原因
    在这里插入图片描述
ICMP报文

ICMP报文包含在IP数据报中(见上面IP报文抓取案例)

格式
类型(8位)代码(8位)校验和(16位)
ICMP报文数据(不同的类型和代码,内容不同)
ICMP报文可以分为两类**差错报告报文**和**询问报文**
报文类型
ICMP报文种类TYPE描述CODE
差错报告报文3(终点不可达)网络不可达0
主机不可达1
5(重定向)对网络重定向0
对主机重定向1
11传输超时-
12坏的IP头0
缺少其他必要参数1
询问报文0或88:表示请求0:表示回答-正常响应为0???
13或14时间戳请求13:表示请求14:表示回答-
17或18地址码请求17:表示请求18:表示回答-
10或9路由检查通告一般指的是返回路由的状态信息-
ICMP协议的应用
  • ping
    type:0、8

    • Ping回环地址127.0.0.1
    • Ping网关地址
    • Ping远端地址
  • traceroute
    type:3
    探测IP数据报在网络中走过的路径
    原理:
    在这里插入图片描述

    • 当前主机向目标IP发送若干个TTL递增的探测UDP包;
    • 当UDP包到达某节点TTL耗尽时该节点会向源IP回应一个ICMP的差错报文(携带当前节点信息);
    • 目标地址收到探测UDP包后,返回ICMP Port Unreachable(端口不可达)通知;

    traceroute默认使用大于30000的目标端口,保证目标地址收到UDP报文后返回端口不可达的ICMP报文

    • A获得B返回的ICMP Port Unreachable回应后得知B在链路上的位置,停止traceroute。

例:
在这里插入图片描述
上例抓取的数据包如下
在这里插入图片描述


ARP协议与RARP协议


ARP和RARP协议是TCP/IP协议栈里面基础的协议,ARP和RARP的操作对程序员是透明的,理解®ARP协议有助于理解网络分层的细节

ARP(Address Resolution Protocol)地址解析协议

ARP协议用于 将网络层IP32位地址映射数据链路层MAC48位地址
在这里插入图片描述

ARP缓存表

ARP缓存表保存IP地址和MAC地址的映射关系
在这里插入图片描述
ARP缓存表是ARP协议和RARP协议运行的关键;
ARP缓存表缓存了IP地址到硬件地址之间的映射关系;
ARP缓存表存在生命周期TTL,缓存表记录并不是永久有效的,因为一个机器的IP地址是会变化的;

查看ARP缓存表

arp -a
在这里插入图片描述

ARP报文结构

在这里插入图片描述

ARP协议类型为0806,RARP协议类型为8035

用wireshark抓取的arp报文结构如下,注意以太网首部的帧类型和ARP首部的协议类型的值均为0806,即ARP
在这里插入图片描述
ARP首部最后的op字段用于记录ARP操作的类型,分别是:

  • ARP请求,其值为1。
  • ARP应答,其值为2。
  • RARP请求,其值为3。
  • RARP应答,其值为4。
ARP使用情景

1. 主机A与主机B通信,A Ping B,图1:A-交换机-B,AB同一子网
在这里插入图片描述
(1) ping数据包用的是ICMP协议,IP协议的一个子协议,位于三层,包含A的IP,B的IP,三层进行IP封装成包,进入二层
(2_1) A查询ARP表通过目的IP获取对应MAC地址,若查询不到看下面。
(2_2) 如果不存在B的MAC,A广播一个ARP请求(目标MAC地址为FF-FF-FF-FF-FF-FF,目的IP为B),B收到广播ARP请求后发现目的IP和自己吻合就会返回一个ARP应答,A收到B的ARP应答获得B的MAC地址后建立ARP表项。
(3) 将B的MAC地址作为数据帧的目标地址组装数据帧由链路层发送出去。
(4) 当再进行A与B之间数据包转发,将直接用B的MAC地址封装,数据转发得以高速交换
路由器似乎会维护ARP表?上面的描述应该是A通过交换机连接B的情况!我也不确定!!

2. 主机A与主机C通信,A Ping C,图:A-交换机-路由器M-路由器N-交换机-C,AC不同子网,处于不同网段
在这里插入图片描述
(1)A查询自己的路由表,C和自己不在同网段,则用网关MAC作为目标MAC封装数据帧由链路层发送给网关
(2)网关获得合法以太帧,接收以太帧后递交给IP层,
(3)网关查询路由表寻找MAC,若没找到MAC则广播ARP请求到C上,C回应ARP应答,网关维护C的ARP映射关系(这个细节感觉也不太对??)
(4)通过映射MAC组装数据帧发给C

疑问??
当前路由器的所有下一跳地址都不是目的IP地址,这时怎么办?
IP数据包传输的完整过程
ARP协议原理

演示:主机A:10.252.22.141 ping 主机B:10.252.23.22 的过程(A主机arp表中没有B的IP/MAC映射),主机A抓取的报文分析

  1. A主机ARP表中找不到BIP的映射,这时会广播ARP请求
    在这里插入图片描述
  2. B收到广播后,返回给A的ARP响应报文
    在这里插入图片描述
  3. A接收到B的ARP响应后建立ARP映射,可以发送ping数据包了(ICMP协议)

ICMP协议为IP协议的子协议,上面的报文解析也能看出来,也可详见上面IP协议报文内容分析
在这里插入图片描述

  1. B返回给A的ICMP响应
    在这里插入图片描述
RARP(Reverse Address Resolution Protocol)逆地址解析协议

将MAC地址转换为IP32的协议,RARP的协议类型为8035,上面已介绍
RARP现在已很少使用了
在这里插入图片描述


IP地址的子网划分


IP地址的分类

在这里插入图片描述

  • A类地址网络号为八位第一位必须是0
  • B类地址网络号为16位,前两位必须为10
  • C类地址网络号为24位,前三位必须为110
  • D类地址,前四位为1110
  • E类地址,前四位为1111

D和E类一般用于特殊用途

分类最小网络号最大网络号子网数量最小主机号最大主机号主机数量
A类地址0(00000000)127(01111111) 2 7 2^7 270.0.0255.255.255 2 24 2^{24} 224
B类地址128.0191.255 2 14 2^{14} 2140.0255.255 2 16 2^{16} 216
C类地址192.0.0223.255.255 2 21 2^{21} 2210255 2 8 2^8 28
特殊的主机号(区分网络号)
  • 主机号全为0表示当前网络段,不可分配为特定主机
  • 主机号为全1,表示广播地址,向当前网络段所有主机发送消息

前面介绍的ARP请求广播的目标MAC地址位也全为1,即FF-FF-FF-FF-FF-FF

1.2.3.4为一个普通A类地址,1.0.0.0表示网络号为1的网段,1.255.255.255表示网络号为1网段的广播地址

特殊的网络号
  • A类地址网络段为0表示特殊网络
  • A类地址网络段为127,即网络段后七位为1(01111111),表示回环地址
  • B类地址网络段其他位为0(10000000.00000000:128.0)是特殊地址,不可使用
  • C类地址网络段192.0.0不可使用
基于上述特殊网络号和主机号,可以得到更准确的各类地址详情表格
分类最小网络号最大网络号子网数量最小主机号最大主机号主机数量
A类地址1127(01111111) 2 7 2^7 27-20.0.1255.255.254 2 24 2^{24} 224-2
B类地址128.1191.255 2 14 2^{14} 214-10.1255.254 2 16 2^{16} 216-2
C类地址192.0.1223.255.255 2 21 2^{21} 221-11254 2 8 2^8 28-2
回环地址

127.0.0.1,通常被成为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。
 安装网卡前就可以ping通这个本地回环地址,一般都会用来检查本地网络协议、基本数据接口等是否正常

划分子网

划分子网可以节省IP资源
划分子网时,网络号组成被分为三个部分,网络号、子网号、主机号
在这里插入图片描述
例如将一个C类地址192.10.10.0分为两个子网
在这里插入图片描述

子网掩码

子网掩码用于表示某个IP号中网络号和子网号的所占的位数;
 子网掩码和IP一样,都是32位;由连续的1和连续的0组成;
 连续的1表示目标IP的对应位为子网号
A、B、C类网络号的子网掩码就是对应网络号位数的1和主机号位数的0组成,如下
在这里插入图片描述
上文例中C类地址192.10.10.0分为两个子网,其子网掩码如下:
在这里插入图片描述
IP域掩码进行与运算,就得到子网号

  • 在这里插入图片描述
  • 在这里插入图片描述
无分类编制CIDR
  • CIDR中没有A、B、C类网络号和子网划分的概念
  • CIDR将网络前缀相同的IP地址称为一个CIDR地址块
  • 网络前缀是任意位数的
    在这里插入图片描述
斜线记法

格式:IP/子网掩码位数
如:193.10.10.129/25表示的IP及掩码如下
在这里插入图片描述

CIDR前缀长度掩码点分十进制地址数
/13255.248.0.0512K
/14255.252.0.0256K
/15255.254.0.0128K
/16255.255.0.064K
/17255.255.128.032K
/18255.255.192.016K
/19255.255.224.08K
子网和超网

在这里插入图片描述


网络地址转换 - NAT技术


IPv4最多只有40亿+个IP地址,早期的IP地址的不合理规划导致大量IP号浪费,导致IP号不够使用,NAT技术用来解决IP号不够用的问题

概念
  • NAT
     Network Address Translation,网络地址转换,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,如下图所示。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。
    在这里插入图片描述
     NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用。
  • 公有IP地址
     也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻 址的地址。
  • 私有IP地址
     也叫内部地址,属于非注册地址,专门为组织机构内部使用。因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址
    10.0.0.0 ——— 10.255.255.255

172.16.0.0——— 172.16.255.255

192.168.0.0———192.168.255.255

  • 端口号
    进程和外部网络进行交互时的入口
  • NA(P)T表
    内网IP:端口和外网IP:端口的映射关系表
    在这里插入图片描述
分类
  • 静态NAT(Static NAT)
  • 动态地址NAT(Pooled NAT)
  • 网络地址端口转换NAPT(Port-level NAT)
    • 源NAT(Source NAT,SNAT)
      修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。
    • 目的NAT(Destination NAT,DNAT)
      修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据包的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT。

TODO 这个NAT介绍的也太简单了?????待补充

网络资料:
NAT技术基本原理与应用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzw@sirius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值