网络原理3——IP详解及IP相关技术

一.IP基本知识

  • IP在TCP/IP模型中处于第三层,网络层。网络层主要实现主机之间点对点(end to end)通信
  • IP层与MAC层(数据链路层)之间的关系,链路指两个物理上直连的设备,而IP负责总体导航,期间IP源地址和目的地址不变,MAC地址一直都在改变。可以理解成每一跳归mac层管,总体路线归IP层管。

IP地址

IPv4地址由32位二进制数表示,表示成十进制每8位点断开。其中第一部分为分类号,固定。然后是网络号,代表当前主机处在哪个网络之中,最后剩下来的是主机号,代表该主机是当前网络中哪一台。
ip地址分类
网络原理3——IP详解及IP相关技术_第1张图片
网络原理3——IP详解及IP相关技术_第2张图片

最大主机数的计算:
用主机号(2的次方)-2.
这个2:
一个代表全0,全0代表网络号。
一个代表全1.全1代表广播。意思就是网络中全体会议。广播用于同一链路中互连主机之间共享信息,不得跨越路由器

要想跨越路由器怎么办?
D类地址多用于多/组播,用于将包发送给组内特定所有主机,多/组播可穿透路由器

CIDR无分类地址

正因为 IP 分类存在许多缺点,所以后⾯提出了⽆分类地址的⽅案,即 CIDR 。
表示形式 a.b.c.d/x ,其中 /x 表示前 x 位属于⽹络号, x 的范围是 0 ~ 32 ,这就使得 IP 地址更加具有灵活性。
⽐如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是⽹络号,剩余的 8 位是主机号。

子网掩码

有另⼀种划分⽹络号与主机号形式,那就是⼦⽹掩码,掩码的意思就是0掩盖掉主机号,剩余的就是⽹络号

子网掩码 & IP地址 =网络号 ,注意按位相与
网络原理3——IP详解及IP相关技术_第3张图片
路由器根据网络号进行转发。
子网掩码的另一个作用,进行子网划分。

子网划分

子网划分将主机号进一步拆分为 1.子网地址 2.子网主机地址
网络原理3——IP详解及IP相关技术_第4张图片
假设对C类地址: 192.168.1.0 进行划分。

子网掩码为:码 255.255.255.192 。即最后一个字节的前两位可用作子网号,由此00 01 10 11分为四个子网络
网络原理3——IP详解及IP相关技术_第5张图片

  1. 00子网:网络地址192.168.1.0,第一个可用地址192.168.1.1 ,由第二个子网反推回来可知最后一个地址为63
  2. 01子网:网络地址192.168.1.64,第一个可用地址为,192.168.1.65,由于主机地址6位每个子网64个地址。用64+64-1=127也可得到最后一个地址127.
  3. 后同不赘述

划分后:
网络原理3——IP详解及IP相关技术_第6张图片

IP路由

路由表记录着网络地址与下一跳地址。在主机和路由器上都有路由表。
发送IP包的时候,首先确定IP包的目标网络地址,再在路由表中找最长匹配的相同网络地址(无匹配的就发送至默认路由),下一跳发送到该地址。
网络原理3——IP详解及IP相关技术_第7张图片

举例说明:

  1. 主机要发送一个目的地址为10.1.2.10的包,查找主机自己的路由表,由于没有匹配的,默认路由发送至10.1.1.1.至路由器1.
  2. 路由器1:收到包之后也进行搜索路由表,找到10.1.2.0/24的匹配。找到下一跳10.1.0.2.至路由器2.
  3. 路由器2:收到包之后再次匹配,因为下一跳在自己身上的另一个接口,路由器2经由这个接口发送给网络中目标主机。

环地址127.0.0.1

默认一个特殊的IP127.0.0.1作为本地环回地址,代表本机。数据包不会流向网络,只在本机内流通。

IP分片?

数据链路的最大传输单元MTU是不同的,常见的以太网的MTU为1500字节。如4000字节的数据包要分成3个片。
所以当数据包大于这个大小的时候就要分片。
但因为IP不保证可靠性,一旦某个数据丢失整个IP数据包都作废,所以在TCP引入MSS在传输层TCP来分片,不由IP来分片
对于UDP协议,我们尽量不要发送一个大于MTU的数据报即可。

二.IP相关技术

DNS域名解析(应用层)

上网通常使用网址和域名,而不是IP地址。
DNS域名解析,可以将域名网址自动转换成具体的IP地址

DNS域名等级从高到低:
根域名服务器
顶级域名服务器(比如:com
权威域名服务器(xxx.com
域名解析过程:
常见的由迭代查询和递归查询两种。

  1. 主机/客户端向本地DNS服务器查询,一般是递归查询(所谓递归,就是本地服务器代替主机继续查询)
  2. 本地DNS服务器向根域名服务器查询一半采用迭代查询(迭代像问路,每次只给你指路而不带你去,意思是说每次本地DNS都要自己去问然后自己去找)

按下图示例:
图下解释
网络原理3——IP详解及IP相关技术_第8张图片
在dns之前:
客户端先检查自己的浏览器缓存有没有,没有看操作系统缓存有没有,再没有看本机dns解析文件hosts有没有。三个都没有发起DNS请求:

  1. 客户端发起一个DNS请求,问本地DNS服务器:xx网址的IP是啥。
  2. 本地DNS服务器先自查,查到了就告诉他; 如果没有先问最大的大哥“根”DNS服务器。
  3. 根DNS作为大领导,听到这个问题,笑了一笑,给本地DNS说去找对应的顶级DNS服务器,他的地址是xxx,去吧。
  4. 然后本地DNS拿到顶级DNS地址之后就去问,二哥。
  5. 顶级DNS作为小领导,听到也笑了,我给你负责这个事儿的权威DNS服务器的地址,你去找他。
  6. 然后本地DNS拿到权威DNS服务器的地址又去问三哥。
  7. 权威DNS服务器是干活儿的,知道具体的IP地址,告诉了本地DNS。
  8. 然后本地DNS返回结果给客户端。

ARP物理地址解析协议

我们知道了IP怎样寻址。但是在路由的过程中,点对点的寻址是在数据链路层完成的,而链路层的MAC物理地址才是他们的流通地址。
所以ARP主要解决IP地址到MAC地址的映射问题这样我知道了下一跳的IP就能通过ARP知道下一跳的具体物理地址。
ARP主要通过ARP请求和ARP响应两种包确定MAC地址。
在同一个子网内,主机广播发送ARP请求,问xxIP这个地址是谁的。
同一个子网内的设备收到ARP请求后,解析包的内容,这个包的目的地址如果和自己的IP地址一致,就将自己的MAC地址塞入ARP响应包返回给主机,告诉他xxIP这个地址是我的,我的MAC地址是xxxx。

然后操作系统会吧第一次ARP解析的结果缓存起来,下次他直接查缓存就能找到对应的IP和MAC。(注:有期限,定期清理,超出存储能力也会清理)

还有一个RARP协议,顾名思义,解决知道MAC但不知道IP的情况。解决方法一样,两次消息。通常用于小型嵌入式设备(如打印机)接入网络中的时候。

DHCP动态获取IP地址(基于UDP)

电脑通常通过DHCP动态获取IP地址。

  1. 客户端先发起DHCP发现报文,因为本身没有IP是一个没有身份的人,也不知道DHCP服务器的地址。所以使用UDP广播通信。客户端将该IP数据报传给链路层之后,链路层将帧广播到所有网络设备
  2. 服务器收到之后回应DHCP提供报文
  3. 客户端可能会收到多个提供报文,选一个即可。并向其发送DHCP请求报文
  4. 该客户端回应DHCP ACK应答。交互完成。

全程使用UDP广播通信,但广播只限于同一局域网,如果需要转发到另一个网络中,岂不是每个网络都要配一个DHCP服务器?
DHCP中继代理,对不同网段IP地址分配可以用同一个DHCP服务器同一管理
实现的方式就是路由器扮演中继代理的角色,把广播的信号中继单播出去。

NAT+端口=NAPT 公私网络地址转换

普通NAT没有什么意义,是公私有地址一对一映射。

私有网络内不同IP可以经由NAT路由器,映射为同一个共有IP地址,但是由于发来的端口号不同,所以包发回来的时候路由器还是能区分该转发回给谁。

ICMP控制报文协议(IP层协议)

ICMP 全称是 Internet Control Message Protocol,

ICMP报文类型

  • 查询报文类型
  • 差错报文类型
    网络原理3——IP详解及IP相关技术_第9张图片
    由上述报文就可实现以下功能:
  • 确认IP包是否送达
  • 报告IP包被丢弃原因
  • 改善网络设置

ping 基于ICMP

ping 命令执⾏的时候,源主机⾸先会构建⼀个 ICMP 回送请求消息数据包
ICMP包中最重要的有两个字段:

  1. 类型字段:表示该包类别,ICMP回送请求包字段为8
  2. 序号

每发出一个数据请求包,序号就会自加1。为了计算RTT,在发送报文的数据部分会插入时间戳。

然后开始封装
ICMP协议将数据包交给IP层,IP层提取目的地址,加上自己的源地址等信息加上IP头
然后继续向下到链路层,加上MAC头,加之前需要查MAC地址,所以这里可能需要用到ARP协议。再附加上一些控制信息。就可以发出去了。

接收方:
先拆MAC头,看对不对。接收帧,将IP包提取出来。IP层最终提取ICMP报文。
此时接收方会构建一个ICMP回送应答包,类型字段为0.

网络原理3——IP详解及IP相关技术_第10张图片
这是在同一网段的情况,如果不在同一网段,还需要经过网关和路由器的转发等步骤。

你可能感兴趣的:(网络原理,tcp/ip,ip协议)