Network ICMP 协议与Ping 、 Traceroute

  1. icmp 分为 查询报文与有差错控制报文
  2. ping 使用查询报文,traceroute 使用差错报文
  3. 查询报文有 ICMP ECHO REQUEST 与 ICMP ECHO REPLY,查询的类型为8,应答的报文为0
  4. 差错报文:
    • 终点不可达
      • 网络不可达 (没找到地方)
      • 主机不可达 (找到地方没找到人)
      • 协议不可达 (找到地方,找到人,语言不通)
      • 端口不可达 (找到地方,找到人,要说的事情对不上)
      • 分片错误 (因为过程中策略限制,无法送达)
    • 源站抑制 (告诉发送方减小发送的数量)
    • 时间超时 (超过网络包的生存时间)
    • 路由重定向(告诉发送方下次走另外一条路线)

Traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器。Traceroute 的参数指向某个目的 IP 地址,它会发送一个 UDP 的数据包。将 TTL 设置成 1,也就是说一旦遇到一个路由器或者一个关卡,就表示它“牺牲”了。如果中间的路由器不止一个,当然碰到第一个就“牺牲”。于是,返回一个 ICMP 包,也就是网络差错包,类型是时间超时

Traceroute 还有一个作用是故意设置不分片,从而确定路径的 MTU。要做的工作首先是发送分组,并设置“不分片”标志。发送的第一个分组的长度正好与出口 MTU 相等。

报文类型类型代码描述
目的不可达3当数据包无法到达目的地时发送,例如网络不可达、主机不可达、协议不可达、端口不可达等
超时11当数据包的 TTL(生存时间)字段降为 0 时发送,或分片重组超时
参数问题12当 IP 数据包中的参数有问题时发送,例如 IP 头部中的某些字段值无效
重定向5当路由器发现一个更有效的路由时发送,建议发送方使用更短的路径
回显请求8用于测试目的主机的可达性和响应时间,发送方发送回显请求
回显应答0对回显请求的响应,确认目的主机的可达性
时间戳请求13用于请求目的主机的时间戳信息,以便同步网络设备的时钟
时间戳应答14对时间戳请求的响应,包含目的主机的时间戳信息
信息请求15请求目的主机的特定信息
信息应答16对信息请求的响应
路由器通告(IPv6)9用于 IPv6,由路由器发送给邻近节点,提供网络配置信息
路由器请求(IPv6)10用于 IPv6,由节点发送给路由器,请求网络配置信息
邻居通告(IPv6)135用于 IPv6,通告节点的可达性
邻居请求(IPv6)133用于 IPv6,请求邻居节点的信息
重定向消息(IPv6)134用于 IPv6,类似于 IPv4 的重定向报文,但用于 IPv6 环境

Network 链路层主要解决什么问题

hub 集线器存在的问题

  1. 这个包是发给谁的?谁应该接收? ( mac 地址解决)
  2. 大家都在发,会不会产生混乱? (轮流协议)
  3. 有没有谁先发、谁后发的规则?如果发送的时候出现了错误,怎么办?(随机访问控制接入协议)
  • Arp 协议
  • 已知IP 未知MAC 通过广播请求对方的MAC 地址
  • Aarp
  • 已知 MAC 未知 IP

交换机

记录目标PC MAC 地址和转发的端口 形成对应 MAC 地址表,通过学习不再通过广播来发送和接收。交换机通过学习生成转发表(MAC 地址表);有过期的时间。

如果一个局域网里面有多个交换机,ARP 广播的模式会出现什么问题呢?

如果是通过级联方式组网,A会将广播转发给B,B会广播到所有的端口。如果存在环路,会形成广播风暴。

Network DHCP 与 PXE

dhcp 的工作方式

  1. c -> dhcp discover
  2. s -> dhcp offer
  3. c -> dhcp request
  4. s -> dhcp ack

1、dhcp Discover (只有MAC 地址)

2、dhcp Offer

3、dhcp Request

4、dhcp Ack

PXE 协议

dhcp 服务器配置中的PXE 参数

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0
{
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option time-offset -18000;
default-lease-time 21600;
max-lease-time 43200;
range dynamic-bootp 192.168.1.240 192.168.1.250;
filename “pxelinux.0”;
next-server 192.168.1.180;

}

Network net_device flags网络设备状态标识

ip -s -h l show dev enp1s0

UP 表示网卡处于启动的状态;BROADCAST 表示这个网卡有广播地址,可以发送广播包;MULTICAST 表示网卡可以发送多播包;LOWER_UP 表示 L1 是启动的,也即网线插着呢。MTU1500 是指什么意思呢?是哪一层的概念呢?最大传输单元 MTU 为 1500,这是以太网的默认值。

qdisc 是什么意思呢?qdisc 全称是 queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc(排队规则)把数据包加入队列。

最简单的 qdisc 是 pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。

pfifo_fast 稍微复杂一些,它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。

三个波段(band)的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2 之间也是一样。

数据包是按照服务类型(Type of Service,TOS)被分配到三个波段(band)里面的。TOS 是 IP 头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。

Network 网络概念

  1. 为什么要分层?
    • 更好的理解是分工,为了更好的完成工作通过各层之间的协同工作独立以交互的完成一个任务。
  2. 二、三层设备
    • 所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。
  3. CIDR 无类型域间选路
    • 可以看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号。
    • 这就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。
    • CIDR 第一个地址、子网掩码、和广播地址的计算 如16.158.165.91/22 其中前22位表示网络号,后10们表示主机地址。其中165的二进制形式10100101为取前6位表示 网络号也就是16.158.164.0 第一个地址是16.158.164.1 、子网掩码为255.255.252.0 、广播地址是16.158.<101001><11>.255。
  4. MAC 和 IP 的定位 作用
    • MAC 地址在子网定位,IP在跨子网定位。例如,从 192.168.0.2/24 访问 192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC 地址就不行了,需要 IP 地址起作用了。
  5. 网络各层单位
    • 传输层:段
    • 网络层:包
    • 链路层:帧