IP 协议是TCP/IP协议栈中非常重要的一个协议
组成
ip 地址 由 32位二进制数字组成(IPV4版本),分成两个部分: 网络ID 和 主机ID
网络id 在整个互联网是唯一的,而主机id在所在的网络id中是唯一的, 这样每一个ip地址都是唯一的。
ip地址分类
- A类地址: 网络id占用一个字节,首位固定0,可用编号 0-127
- B类地址: 网络id占用两个字节,前两位固定10 ,可用编号 128-191
- C类地址: 网络id占用三个字节,前三位固定110 ,可用编号 192-223
- D类地址:多播
- E类 研究
IP地址的结构为啥是分级组成
- 方便管理,ip地址分配管理者只需要把网络id分配出去,即可,否则每一个主机的ip都需要分配的话,会死人的。
- 减少路由器内存,减少路由查询时间。不同的网络之间通信,通过路由器查询网络id来找到要送达的网络,而至于送到某个主机则由所在网络的路由器去完成,这样能很大程度上减少路由表的数据,减少路由查找时间。
ip地址为啥要分成这些类
- 因为需求不一样,有些公司接入的主机很多,需要一个能容纳很多主机的ip地址,有些则需要比较少的ip地址。
ip数据报传输过程
- 主机A发送数据报,本网络路由器查看路由表,目的主机B是否在同一网络,如果是同一个网络,那么就直接交付,不需要经过其他的路由器;如果不是,本网络路由器查找路由表找出下一跳的路由器,直到找到主机B所在网络的路由器,由它进行直接交付。
IP地址是逻辑上的地址,类似小明家这个概念。你去小明家肯定去的是一个具体的物理地址(坐标)。IP数据报在真正传输的过程中也需要找到目的主机IP地址对应的物理地址,才能交付。ARP(address resolution protocal)地址解析协议就是做这个工作的。对应的还有RARP(逆地址解析协议, 已经被DHCP协议替代)
ARP协议实现原理
- 每一个主机都有一个ARP高速缓存(ARP cache),存储着各个主机和路由器的ip地址和硬件地址的映射表。那这个主机是怎么知道这些数据的呢?
利用广播的原理,当一次通信请求过来时候,需要找下一跳的目的主机,如果发现目的主机的ip地址和物理地址不在自己的cache中的时候 就自动运行ARP进程发出一个广播:我是主机A,IP地址是128.0.1.xxx (可能通过逆地址解析出来),物理地址是xxx,想要找IP地址是128.0.1.xxx的硬件地址。 - 然后本局域网中的所有主机都会收到这个广播,发现找的是自己就记录下主机A的ip地址和物理地址(以备后用),并响应:我的IP是xxx,物理地址是xxx。
TIPS:
- 高速缓存有生存周期,方便物理地址发生更改的时候,再次发起ARP广播,否则一直都是走cache 就over了。
- ARP协议只是解决了局域网内ip地址到物理地址的转换。不同网络的传输,交给路由器来完成ARP解析。