1、网络层
1.1 网络层提供的两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的端
在计算机网络领域,网络层
应该向运输层
提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责
?是网络还是端系统? 答曰: 是端系统来负责
,网络传输过程中出现意外造成丢包的话,路由器不管,要求重发
- 两种服务,网络层应该向运输层提供怎样的服务?* 虚电路服务> 需要管理员提前建立好连接,指定固定的路线,发生故障断连后便无法进行传输
1.2.1 中继系统
网络互相连接起来要使用一些中间设备
中间设备
又称为中间系统
或中继(relay)系统
。* 物理层中继系统:转发器(repeater)
。* 数据链路层中继系统:网桥
或桥接器(bridge)
。* 网络层中继系统:路由器(router)
。* 网桥和路由器的混合物:桥路器(brouter)
。* 网络层以上的中继系统:网关(gateway)
。
注:现在普遍说的
网关
就是指路由器的接口了
1.2.2 需解决的问题
- 互连在一起的网络要进行通信,会遇到许多问题需要解决,如:* 不同的寻址方案* 不同的最大分组长度* 不同的网络接入机制* 不同的超时控制* 不同的差错恢复方法* 不同的状态报告方法* 不同的路由选择技术* 不同的用户接入控制* 不同的服务(面向连接服务和无连接服务)* 不同的管理与控制方式
1.2.3 分组在互联网中的传输
图中的3便指的是网络层
1.2.4 虚拟互连网络的意义
- 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
- 使用 IP 协议的虚拟互连网络可简称为 IP 网。
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 逆地址解析协议 RARP (Reverse Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
1.3.1 协议间层次关系
1.3.2 IP层次结构
IP地址分为网络ID
和主机ID
,通过路由器可以将网络分为不同的网段
(也就是不同的网络ID),网段可以类比电话号码的区号:
- 因此在打电话(访问网络)的时候,
- 就可以先根据区号(网段)去找所属的地区(网段),
- 然后再根据号码(主机ID)拨通对应的电话(访问对应的主机)
- 为何既需要IP地址又需要MAC地址?先来看如下的图展示的通信过程
1.5 ARP协议和RARP协议
ARP:地址解析协议 RARP:逆地址解析协议
1.5.1 ARP工作原理
如下图所示: 1、主机A想要和主机B进行通信,但是不知道主机B的MAC地址,于是A进行广播,所有主机都可收到; 就好比有人告诉你隔壁班某某找你,但是不知道位置,于是乎你对班里的所有人都大喊一声!我是XXX,我想知道某某的位置在哪!!! 2、主机B收到广播后,就回复主机A,告诉其MAC地址,于是建立连接。 好比你要找的那个人,他听到了你的呼唤,站起来回复到:二傻子,这呢,这呢,我的位置在这!于是乎下次你们就可以直接找到对方的位置进行交谈了。
1.5.2 ARP欺骗
- 何为ARP欺骗: 知道了ARP的工作原理,现在有这么一种情况,假如在主机A发送广播的时候,在当前的网段中安装了黑客软件,可以抓取广播,那么就可以将黑客的MAC地址告知主机A,这么一来,主机A的数据就会直接发给黑客软件,再由黑客软件转发至主机B,所有的信息都会暴露,这也就是ARP欺骗。
1.5.3 ARP高速缓存的作用
- 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
1.5.4 使用ARP的四种典型情况
- 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
1.6 IP数据报的格式
- 一个 IP 数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
- 首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
- 区分服务——占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段
- 总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
- 标识(identification) 占 16 位,它是一个计数器,用来产生数据报的标识
- 标志(flag) 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF = 0 时才允许分片。
- 片偏移(12 位) 指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
- 协议(8 位)字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程
1.7 ICMP简介
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP 不是高层协议,而是 IP 层的协议。
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ICMP 差错报告报文共有 5 种
- 终点不可达
- 源点抑制(Source quench)
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
2、相关面试题
ARP相关
- **ARP 的作用?**ARP 为 IP 地址到对应的硬件地址提供动态映射。
- **点对点链路使用 ARP 吗?**不使用
- **ARP 高效运行的关键是什么?**关键是每个主机上都有一个 ARP 的高速缓存。
- ARP 协议有什么缺点?* 缓存:主机的地址映射是基于高速缓存的,动态更新的。地址刷新是有时间限制的。 可 以通过下次更新之前修改计算机上的地址缓存,造成拒绝服务攻击或者 ARP 欺骗。* 广播: 攻击者可以伪装 ARP 应答。* ARP 应答没有认证,都是合法的。可以在不接受到请求的时候就发出应答包。
- ARP 代理的概念和应用场景若 ARP 请求是从一个网络的主机发送给另一个网络上的主机,那么连接这两个网络的路由 器就可以回答该请求,这个过程叫做 ARP 代理。ARP 代理路由器响应 ARP 请求的 MAC 地 址为路由器的 MAC 地址而非 ARP 请求的主机的 MAC 地址。 ARP 代理的应用环境: 两个物理网络之间的路由是使用相同的网络号,两个路由器设置成 ARP 代理,实现相互隐 瞒物理网络
- 免费ARP指主机发送 ARP 查找自己的 IP 地址,即数据链路层 SIP=DIP 作用有两个: 1)一个主机使用免费 ARP 确定是有存在有其他主机设置了相同的 IP 地址 2)如果发送免费 ARP 的主机改变了 MAC 地址,可以通过发送免费 ARP 的方式告知其他主机端更新 ARP 表
IP相关
- 如何理解 IP 的不可靠和无连接。* 不可靠:指的是不能保证数据报能成功地到达目的地。 发生错误时候,丢弃该数据包,发送 ICMP 消息给信源端。 可靠性由上层提供。* 无连接:IP 不维护关于后续数据报的状态信息。 体现在,IP 数据可以不按顺序发送和接收。A 发送连续的数据报,到达 B 不一定是连续的, 来回路由选择可能不一样,路线也不一样,到达先后顺序也不一样。
- I**P 报文的格式和各个字段的含义。**具体详见上文
- **为什么 IP 首部中要有总长度字段?**因为一些数据链路(以太网)需要填充一些数据以达到最小长度。因为以太网帧的最小长度 是 46 个字节,但是 IP 长度可能更短,所以需要总长度来确定 IP 数据部分的内容。
- **主机和路由器本质区别是?**主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。
- IP 路由选择的特性有什么?* IP 路由选择是逐跳进行的。 IP 并不知道到达任何目的的完整路径,只提供下一跳地址。* 为一个网络指定一个路由器,而不是为每个主机指定一个路由器。 这样可以缩小路由表规模。
- IP 搜索路由表的步骤* 搜索匹配的主机地址 ----》搜索匹配的网络地址 ----》搜索默认选项* IP 层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组
- **如果路由表中没有默认项,而又没有找到匹配项,这时如何处理?**结果取决于该 IP 数据报是由主机产生的还是被转发的。 如果数据报是由本机产生的,那么就给发送该数据报的应用程序返回一个差错,或者是“主 机不可达差错”或者是“网络不可达差错”。 如果是被转发的数据报,就给原始发送一份 ICMP 主机不可达的差错报文。
ICMP相关
- **ICMP 报文的分类?**ICMP 分为两类,一类是 ICMP 查询报文,另一类是 ICMP 差错报文。
- **重定向报文有什么规则?**重定向报文只能有路由器生成。 重定向报文是为主机而不是为路由器使用的。
- **Ping 命令的具体过程是怎么样的?**参考文章:《对于 Ping 的过程,你真的了解吗?》