关于ARP协议、ICMP协议、IP协议、DNS服务 的知识点补充

1、ARP 和 RARP 协议

1.1 ARP:任意网络层地址 --> 任意物理地址

网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址机器,所以网络层必须把目标机器的IP地址转换为物理地址,才能使用数据链路层提供的服务。

① 以太网ARP请求报文格式

在这里插入图片描述

  • 硬件类型字段:表示物理地址的类型,若值为1表示MAC地址。
  • 协议类型字段:表示要映射的协议地址类型,若值为0x800,表示IP地址
  • 硬件地址长度字段:顾名思义,其值表示所使用的硬件地址的长度,单位是字节。MAC地址的长度为6。
  • 协议地址长度字段:顾名思义,其值表示所使用的网络层协议地址的长度,单位也是字节。IPv4地址的长度为4。
  • 操作字段:可表示4种ARP报文类型:ARP请求、ARP应答、RARP请求 和 RARP应答。其值分别为1,2,3,4。
  • 最后四个字段填写通信双方的以太网地址和IP地址。
  • ——发送端填充 目的端以太网地址 外的其他三个字段,从而构建ARP请求并发送。
  • ——接收端发现请求的目的端IP是自己,接把自己的以太网地址写入,交换两个目的端地址和发送端地址,从而构建ARP应答并返回。

综上,ARP请求/应答报文的长度位28字节,再加上以太网帧头部和尾部的18字节就是46字节。不过,有的实现要求以太网数据部分长度至少为46字节,此时ARP请求/应答报文会增加填充字节,以满足此要求。此时,一个携带ARP请求/应答报文的以太网帧长度为64字节。

1.2 RARP:任意物理地址-->任意网络层地址

RARP协议仅用于网络上的无盘工作站,他们缺乏存储设备,没法记住自己的IP地址,他们只能用网卡上的物理地址向网络管理者(服务器 或 网络管理软件)查询自己的IP地址。运行RARP服务的网络管理者通常存有该网络上所有机器的物理地址到IP地址的映射。

2、ICMP 协议

2.1 概述

ICMP协议是IP协议的重要补充,主要用于检测网络连接
ICMP协议并非严格意义上的网络层协议,因为它使用了处于同一层的IP协议提供的服务,而一般来说,上层应该为下层提供服务。

2.2 ICMP报文格式

其报文格式如图所示:
在这里插入图片描述

① 8位类型字段

用于区分报文类型,他将ICMP报文分为三大类:

  • 差错报文。这类报文主要用来回应网络错误。
  • 查询报文。用来查询网络信息,比如ping程序就使用ICMP查询报文查看目标是否可达。
  • 重定向报文。在5.3节细讲。

这里有对两种报文的具体讲解

② 8位代码字段

ICMP报文使用8位代码字段进一步细分不同的操作。如:重定向报文使用代码值0表示对网络重定向。代码值1表示对主机重定向。

③ 16位校验和字段

ICMP报文使用16位校验和字段对整个报文进行循环冗余校验(CRC),检验内容是否正确。

④ 内容字段

其余部分为内容字段,《Linux高性能服务器编程》的第2章详细讲解了主机重定向报文。

3、SCTP(流控制传输协议)协议

一种相对较新的协议,为了在因特网上传输电话信号而设计的。《Linux高性能服务器编程》里面并没有讲。

4、DNS 工作原理

DNS是一台分布式的域名服务系统。每个DNS服务器上有大量机器名和IP地址的映射,且动态更新。

4.1 DNS 查询 和 应答报文格式

报文格式如下图所示:
在这里插入图片描述

  • 16位标识字段:用于标记一对DNS查询和应答,以此区分一个DNS应答是哪个DNS查询的回应。
  • 16位标志字段:用于协商具体的通信方式和反馈通信状态。16位标志字段的细节如下所示:在这里插入图片描述
    • ——QR:查询 / 应答标志。0表示这是个查询报文,1表示这是应答报文。
    • ——opcode:定义查询和应答的类型。0为标准查询,1为反向查询(IP到域名),2为请求服务器状态。
    • ——AA:授权应答标志。仅由应答报文使用。1标识域名服务器是授权服务器。
    • ——TC:截断标志,仅当DNS保温使用UDP服务时使用。UDP数据报有长度限制,过长的NDS报文将被截断。1标识DNS报文超过512字节,并被截断。
    • ——RD:递归 / 迭代查询标志。1表示执行递归查询,0表示执行迭代查询。
    • ——RA:允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询。
    • ——zero:未被使用,必须全设置为0。
    • ——rcode:4位返回码,表示应答状态。常用值有0(无错误)和3(域名不存在)
  • 接下来的4个16位的字段分别指出DNS报文的最后4个字段的资源记录数目。对查询报文而言,一般包含1个查询问题,而应答资源记录数、授权资源记录数和额外资源记录数则为0.应答报文的应答资源记录数则至少为1,而授权资源记录数和额外资源记录数可为0或非0。
  • 下面的内容直接截图了,不敲了。
  • 在这里插入图片描述
    在这里插入图片描述

5、IP 协议

5.1 IP分片

分片可能发生在发送端,也可能发生在中专路由器上,而且可能在传输中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。

IP分片实验:
在这里插入图片描述

5.2 IP 路由

IP协议的核心任务是数据报的路由,即,决定发送数据包到目标机器的路径。为了理解IP路由过程,下面先分析IP模块的基本工作流程。

① IP模块工作流程

在这里插入图片描述
在这里插入图片描述

② 路由机制

要研究IP路由机制,要先了解路由表的内容。可以直接使用route命令查看路由表。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③ 路由表更新

在这里插入图片描述

④ IP转发

一般来说,路由器都能转发数据报,而主机只能接收/发送数据报,不能转发。这是因为主机上proc/sys/net/ipv4/ip_forward内核参数默认被设置为0。可以通过修改它使主机能转发数据报。
在这里插入图片描述

5.3 ICMP 重定向

① 什么是重定向?

假设一主机A,一路由器B,他们在一个网络中。
A给另一个网络中的主机发送数据报,数据先被传到了B,但是B给不到那个主机所在的网络。但是他知道发送给哪个路由器可以给到。所以,他就给A发送一个ICMP重定向报文,里面有那个路由器的IP,告诉A,你发到另一个路由器。并且还能更新A的路由表。

重定向过程:
在这里插入图片描述

综上,重定向有两个功能:

  • 告诉源主机正确的路由器IP地址
  • 更新源主机的路由表

② ICMP 重定向报文

在这里插入图片描述

  • ICMP重定向报文的类型值为5.
  • 代码字段有4个可选值,用于区分不同的重定向类型,这里只重点讨论主机重定向,其值为1。

接收ICMP重定向报文的主机根据这两个信息就可以断定引起重定向的IP数据包应该使用哪个路由器转发,并且以此来更新路由表

/proc/sys/net/ipv4/conf/all/send_redirects内核参数指定是否允许发送ICMP重定向报文,而/proc/sys/net/ipv4/conf/all/accept_redirects内核参数指定是否允许接收ICMP重定向报文段。一般来说,主机只能接收,路由器只能发送。

5.4 IPv6 头部结构

IPv6头部由40字节的固定头部和可变长的扩展头部组成。

① 固定头部

固定头部如下所示:
在这里插入图片描述
在这里插入图片描述

② 扩展头部

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值