网络层协议IP
目录
在复杂的网络环境中确定一个合适的路径
一、IP协议
1.1.IP协议的作用
把数据报从A主机跨网络送到B主机

在网络通信中,需要把数据报100%从A主机跨网络送到B主机
- 传输层TCP协议:提供了策略,比如重发机制,连接机制等等
- 网络层IP协议:提供了能力,能够将数据从A主机传输到B主机
TCP协议通过端口号,解决了进程间通信的问题
IP协议通过IP地址,解决了主机间通信的问题
(IP地址标识了通信双方主机的唯一性)
就像去故宫旅游得先坐飞机到北京,数据报在到达对方主机前
先要到对方所在的子网中,再在子网中转发,发送到对方主机
1.2.基本概念
IP地址:目标网络 + 目标主机
主机:配有IP地址,进行路由控制的设备
路由器:配有IP地址,进行路由控制的设备
(当代路由器可以在应用层工作,类似小型计算机)
路由:数据报从一个子网到另一个子网
二、IP协议格式
分离问题:4位首部长度 + 16位总长度实现解包
分用问题:8位协议表明有效载荷是什么数据,分清上层是TCP协议还是UDP协议
- 4位版本号(version):IP协议的版本,IPv4就是4
- 4位首部长度(header length):IP报头的长度,每个比特位的单位为4字节
- 8位服务类型(Type Of Service):前3位弃用,4位TOS字段,1位保留字段
- 4位TOS字段:最小延时、最大吞吐量、最高可靠性、最小成本
- 16位总长度(total length):IP数据报的总字节大小
- 8位生存时间(Time To Live):每经过一个路由器,TTL减1,如果减到0还未到达就直接丢弃
- 8位协议:确定上层协议(TCP协议/UDP协议)
- 16位头部校验和:使用CRC校验,鉴别头部是否损坏(比特位翻转等情况)
- 32位源IP地址:表明发送端
- 32位目的IP地址:表明接收端

三、子网划分
子网分为公网子网和私网子网,私网子网又被称为内网子网,用来组件局域网通信
3.1.网段划分
IP地址:网络号 + 主机号
网络号:保证互相连接的两个网段具有不同的标识
主机号:同一网段内,主机之间具有相同的网络号,但必须有不同的主机号


3.2.路由器
路由器有管理地址,主机号通常是1
路由器至少要配置一个公网IP和一个内网IP,实现数据报的路由
路由器能够给子网中的网络设备分配IP地址(应用层协议DHCP)
打开电脑浏览器,输入路由器的管理地址,就会访问到路由器上部署的HTTP服务
显示登录界面,输入家里路由器对应的用户名和密码,弹出H5页面,配置路由器

路由报文的本质是查找目标主机,查找的本质是淘汰的过程,淘汰的效率高那么查找的效率就高
**网段划分的原因:**在查找目标主机前,先查找目标网络,淘汰其他网络,在全网中提高查找效率
3.3.分类划分
分类划分法:将32位比特位进行划分,确定网络号有多少位

- A类:0.0.0.0 ~ 127.255.255.255
- B类:128.0.0.0 ~ 191.255.255.255
- C类:192.0.0.0 ~ 223.255.255.255
- D类:224.0.0.0 ~ 239.255.255.255
- E类:240.0.0.0 ~ 247.255.255.255
IP地址是有限的,各国运营商需要抢夺IP地址搭建国家的子网
随着互联网发展,大多组织申请B类网络地址,导致A类浪费大量地址,所以提出了新的划分方案
3.4.无类别域间路由
CIDR(Classless Interdomain Routing):无类别域间路由
子网掩码(subnet mask):一个32位的正整数,用一串1开头,一串0结尾
作用:区分网络号与主机号
设置掩码中1和0的个数,将IP地址与子网掩码进行按位与得到新的网络号,充分利用IP资源
子网内最大主机数 == 子网地址范围大小 - 2

四、特殊的IP地址
4.1.网络号
将IP地址中的主机地址全部设置为0,表示网络号,代表这个局域网
4.2.广播地址
将IP地址中的主机地址全部设置为1,表示广播地址,给同一个链路中相连的所有主机发数据包
4.3.本机环回测试
127.*的IP地址用于本机环回测试,通常为127.0.0.1
五、IP地址的数量控制
5.1.IPv4的局限性
IPv4是一个32位的整数,一共有2^32个IP地址,大概在43亿左右
IP地址并非按主机台数配置,而是每一个网卡都要配置一个或多个IP地址,所以数量远远不够
5.2.动态分配IP地址
只给接入网络的设备分配IP地址,同一个MAC地址的设备,每次接入互联网的IP地址不同
5.3.IPv6
用16字节128位来表示一个IP地址
5.4.NAT技术
网络地址转化技术
六、私有IP地址和公网IP地址
6.1.局域网私有IP地址
公网 :内网(私网、局域网) == 1 :n
如果一个组织内部组建局域网,IP地址只能用于局域网内的通信,无法直接连接到公网
内网地址理论上使用任意IP地址都可以,RFC1918规定了以下的IP地址能够组件局域网
- 10.*:前8位网络号,共16777216个地址(构建大型网络)
- 172.16.* ~ 172.31.*:前12位网络号,共1048576个地址(构建中型网络)
- 192.168.*:前16位网络号,共65536个地址(构建小型网络)
在这个范围内的都是私有IP地址,其余为全局IP地址
在网络通信的过程中,私有IP地址不能出现在公网上
正常人直接接触的都是内网,局域网,而不是公网
6.2.运营商
路由器本身具有构建子网的能力,给子网内所有主机分配IP地址
运营商路由器与家用路由器构建成了一个子网(网络号:10.1.1.*)
家用路由器与家中网络设备构建成了一个子网(网络号:192.168.1.*)
运营商路由器配备了能与公网通信的IP地址,是公网的出入口路由器

内网IP是固定的,不同内网的内网IP会出现重复,所以内网IP只能在该内网中有效
内网IP绝对不能出现在公网,也不能出现在其他内网,否则无法找回主机所在内网
主机发送报文,每经过一个内网的路由器,就会进行源IP的替换,替换成当前路由器的WAN口IP
NAT技术(网络地址转换):内网IP经过路由器WAN口IP替换的技术
运营商可以控制主机发送的报文是否转发到公网,网络欠费或报文携带敏感信息时都会无法转发
6.3.公网IP地址
各国的运营商自主申请公网IP,组件自己国家的公网环境
公网IP不是单纯以国家为单位划分,而是结合网民数量按照地区划分
一个区域有多大的网络,取决于有多少个公网IP


七、路由
在复杂的网络结构中,找出一条通往终点的路线

搜索路由表,查找到下一跳路由器
搜索路由表,未找到提供缺省路由
搜索路由表,查找到目标网络所在的出入口路由器,进行内网转发
7.1.路由表
Destination:目的网络地址
Gateway:下一跳地址
Genmask:子网掩码
Flags:U标志(该条目有效)G标志(该条目的下一跳地址是路由器地址)
Iface:发送接口

7.2.路由表生成算法
静态路由:路由表由网络管理员收到维护
动态路由:路由表由一些算法自动生成(距离向量算法、LS算法、Dijkstra算法)
八、IP报文分片与组装
8.1.MTU与MSS
数据链路层从上层接收下来的完整报文大小不超过1500字节(MTU 最大传输单元 1500字节)
如果超过了,就需要在发送方的网络层进行分片处理,在接收方的网络层进行组装
任何一个分片丢失,都表示该报文整体丢失,如果分片越多,发生丢包的概率越大
传输层控制每次交给网络层的报文大小,就能够减少分片数量(MSS 最大段尺寸 1460字节)

8.2.分片与组装

16位标识:不同报文,标识不同,相同分片,标识相同
3位标志:
- 第一位:保留
- 第二位:设为1时表示禁止分片,报文长度超过MTU,IP自动丢弃报文
- 第三位:设为0时表示最后一个分片,其他是1
13位偏移量:分片在原始报文的偏移量
如何甄别特定报文是否分片
3位标志的第三位是1
3位标志的第三位是0,13位片偏移大于0
如何保证分片收全
16位标识相同的分片聚合在一起,按照片偏移进行升序排序
自身片偏移数字 + 自身报文长度 = 下一个分片的片偏移数字