IP协议是位于网络层的重要协议,其主要有两大功能
- 地址管理
- 路由选择
认识IP协议报头
- 8位服务类型(TOS)只有四位有效(同一时刻只能选一个状态,为规划最优路径的标准提供参考),分别为
- 最小延时
- 最大吞吐量
- 最高可靠性
- 最小成本
- 16位总长度限制了单个IP数据报的长度(64k),所以IP协议在传输过程中会自动进行分包组包
- IP协议的分包组包过程:
- 16位标识:区分是否为同一个包
- 13位片偏移:来自同一个数据不同包的先后顺序
- 3位标志位:是否为最后一个数据包了
- IP协议的分包组包过程:
- 8位生存时间
- 当一个IP数据报被发出时,会有一个初始的TTL,每经过一个路由器/交换机,TTL-1
- 当TTL减为0,收到该包的路由器就会丢了该包
- 正常的IP数据报会在TTL减为0之前达到
- 这个生存时间是为了预防一些不能达到的IP数据报无休止的传输
地址管理
IP地址是一个 点分十进制 构成的数据(例如 127.0.0.1 环回IP)
IP地址 = 网络号(描述当前网段信息,局域网的标识) + 主机号(区分一个局域网内不同的主机)
- 同一个局域网中的主机,网络号相同,主机号不同
- 两个相邻的局域网 网络号不同
- 如果IP的主机号全为0,则该IP表示网络号
- 如果IP的主机号全为1(255),则该IP表示广播号
- 如果IP是127开头的,则该IP “环回IP”(主机自己)
- 如果IP是10,192.168,172.16 – 172.31开头的,则该IP 是一个局域网内部的IP(内网IP),其余为外网IP
- 外网IP一定是唯一的,内网IP在当前局域网中唯一
NAT机制
- 让多个设备共用同一个外网IP,要求外网IP必须是唯一的,内网IP在当前局域网中可以重复
- 同一个局域网中区分不同的主机可以通过端口号来区分
- 两个局域网中的设备要实现通信,怎么办呢?
- 通过一个具有外网IP的服务器(主机3和主机4通信,通过QQ服务器)
- NAT机制中,一个局域网内最多的主机个数就是端口号个数(65535),这也限制了主机数量
- 通过一个具有外网IP的服务器(主机3和主机4通信,通过QQ服务器)
IPV6:虽然有NAT机制,但是也有一定的限制(同一局域网内的主机数不能超过65535台),要从根本上解决这个问题 – 就引入了IPv6
IPv4:4个字节,32个比特位
IPv6:16个字节,128个比特位(号称能给地球上每一粒沙子分配唯一的IP地址)
路由选择
IP协议的路由选择就类似于 “问路”,IP数据报在传输的过程中,如果当前的路由器知道目的地址在哪,就会直接告诉他,如果不知道,会给一个大概的方向(下一跳),该数据报到了之后继续 “问路”,直到到达目的IP。
- 在路由器内部,维护了一个路由表,记录了一些网段信息(网络号),以及每个网络号对应的接口
- 在一个新的路由设备接入局域网时,该路由器就会和局域网内的路由器 “交朋友”,得到自动更新周围的信息到路由表中,同时会得到周围路由表中的信息。