IP

345 阅读6分钟

IP基本认识

数据链路层:MAC实现直连的两个设备之间的通信; 网络层:IP负责没有直连的两个网络之间的通信。

因此,源IP地址和目标IP地址在传输过程中是不会变化的; 源MAC地址和目标MAC地址一直在变化。

IP地址

image.png

IP地址是以网卡来配置的; 服务器,路由器等设备都是有2个以上的网卡; 一块网卡也可以设置2个以上的IP。

IP地址的分类

image.png

image.png

其中,

image.png

  • 主机号全为0,指定某个网络。
  • 主机号全为1,指定某个网络下的所有主机,用于广播;

广播地址分为本地广播和直接广播。

  • 在本网络内广播的叫做本地广播;
  • 在不同网络之间的广播叫做直接广播。(有一定的安全问题,路由器不转发)
组播地址用于什么?

组播用于将包发送给特定组内的所有主机。 广播无法穿透路由,组播可以穿透路由。

image.png

组播地址划分为三类:

  • 预留的组播地址。只能在局域网中,路由器不转发;
  • 用户可用的组播地址。可以用于Internet上。
  • 本地管理组播地址。供内部网使用。

IP分类的缺点

  1. 同一网络下没有地址层次;
  2. 不能很好的与现实情况匹配。

无分类地址CIDR

image.png

image.png

两台计算机要通讯,首先判断是否处于同一广播域内,即网络地址是否相同; 若相同,则可以把数据包直接发送到目标主机。

路由器寻址工作,也是根据IP地址的网络号进行转发。

怎么进行子网划分?

image.png

image.png

公有IP地址与私有IP地址

image.png

IP地址与路由控制

image.png

在路由控制表中找到与目标地址具有相同网络地址的记录; 若存在多条,则选择相同位数最多的网络地址。(最长匹配)

若不存在,则转发到默认路由。

环回地址是同一台计算机上的程序之间进行网络通信的默认地址:127.0.0.1(localhost)。数据包不会流向网络。

IP分片与重组

image.png

在分片传输中,一旦分片丢失,会造成整个IP数据报作废。 (IP层若无法重组成一个完整的TCP/UDP报文,不会交付于传输层)。

所以,TCP引入了MSS; 对于UDP,我们尽量不要发送一个大于MTU的报文。

IPv6基本认识

IPv6地址长度是128位,每16位为一组。

image.png

若出现连续的0时可以省略,并用两个::隔开(只允许出现一次)。

image.png

image.png

  • 单播地址,用于一对一的通信
  • 组播地址,用于一对多的通信
  • 任播地址,用于通信最近的节点,最近的节点由路由协议决定
  • 没有广播地址

IPv6单播地址类型

image.png

  • 同一链路单播通信,不经过路由器,可以使用链路本地单播地址
  • 在内网里单播通信,可以使用唯一本地地址,相当于Ipv4的私有IP
  • 在互联网通信,可以使用全局单播地址,相当于IPv4的公有IP

IPv4首部与IPv6首部

image.png

  • 取消了首部校验和字段
  • 取消了分片/重新组装相关字段
  • 取消了选项字段。删除选项字段使得IPv6首部成为固定长度的40字节。

IP协议

DNS

image.png

image.png

ARP

ARP是借助 ARP请求ARP响应 确定MAC地址的。

image.png

RARP

image.png

DHCP

我们的电脑通常都是通过DHCP动态获取IP。

image.png

  • DHCP交互中,全程都是使用UDP广播通信

因为路由器不会转发广播包,为了解决这一问题,就出现了DHCP中继代理

image.png

  • DHCP客户端向DHCP中继代理发送DCHP请求包;而DHCP中继代理在收到这个广播包后,再以单播形式发给DHCP服务器。
  • 服务器收到该包后,再以单播形式向DHCP中继代理返回应答,并由DHCP中继代理将此包广播给DHCP客户端。

NAT

为了缓解IPv4地址耗尽的问题,提出了NAT。

image.png

可以把IP+端口号一起转换:NAPT

image.png

NAT穿透技术: 客户端主动从NAT服务器获取公有IP地址,然后自己建立端口映射条目,就不需要NAT设备来进行转化了。

ICMP

image.png

ICMP类型

image.png

IGMP

组播地址不是用于机器IP地址; 因为组播地址没有网络号和主机号。 组播地址用于UDP协议; 机器发送UDP组播数据时,目标地址填的是组播地址,那么组播组内的机器都能收到数据包。

image.png

常规查询与响应工作机制

image.png

  • 路由器周期性发送目的地址为 224.0.0.1(表示同一网段内所有主机和路由器) IGMP常规查询报文。
  • 主机1和主机3收到这个查询,随后启动计时器,在计时器超时后发送IGMP成员关系报告报文(目的IP地址为组播地址);若在超时前收到同一组内的成员关系报告报文,则自己不再发送。
  • 路由器收到成员关系报文后,就会在IGMP路由表中加入该组播组;后续网络中一旦该组播地址的数据到达路由器,它会把数据包转发出去。

离开组播组工作机制

情况一,网段中仍有该组播组:

image.png

  • 224.0.0.2(表示发向网段内的所有路由器)

情况二,网段中没有该组播组:

image.png

ping的工作原理

ICMP

image.png

ICMP包头格式

ICMP封装在IP包里,工作在网络层。

image.png

image.png

查询报文类型

会送消息--类型0和8

image.png

image.png

  • 选项数据中,ping还会存放发送请求的时间值,来计算往返时间。

差错报文类型

目标不可达消息

image.png

原点抑制消息

当路由器向低速线路发送数据时,发送队列缓存为0而无法发送出去时,可以向IP包的源地址发送ICMP原点抑制消息

表示遇到了网络拥堵的问题。

可能会引起不公平的网络通信,一般不被使用。

重定向消息

路由器发现发送端主机使用了非最优路径发送数据,那么它会返回一个ICMP报文。该报文中包含了最合适的路由信息和源数据。

超时消息

IP包中有一个字段叫做TTL,每经过一次路由器-1;

TTL为0时,IP包被丢弃; 路由器发送一个ICMP超时消息给发送端主机。

解决循环状况。

image.png

ping——查询报文

发送过程:

image.png

image.png

traceroute——差错报文

作用一

故意设置特殊的TTL,来追踪去往目的地时沿途经过的路由器。

原理:生存期限从1开始顺序递增的同时发送UDP包。

发送方如何知道发送的UDP包到达了目的主机?

发送UDP包时,填入一个不可能的端口号; 当差错报文类型是端口不可达时,说明发送方发出的UDP包到达了目的主机。

作用二

故意设置不分片,从而确定路径的MTU。

image.png