一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
1 基本概念
IP协议(Internet Protocol):网络层协议
1.1 IP协议可能遇到的问题
- 封包损坏:在传输过程中数据发生损坏
- 丢包:在传输过程中发生数据丢失
- 重发:通过不同的路由发行了相同的数据,并且都到达目的地
- 乱序:到达目的地的数据顺序和发送的数据是不一致的 但这些问题都不在网络层解决
1.2 网络层需要解决的3个问题
- 延迟
- 吞吐量
- 丢包率
1.3 IP协议的架构
IP协议目前主要有两种架构,IPv4和IPv6,IPv4是目前应用最广泛的互联网协议。
2 IP协议的工作原理
2.1 分片(Fragmentation)
- 把数据切分成片
- 为了适配底层传输网络
2.2 增加协议头(IP Header)
IPV4协议的协议头参数:
- Type Of Service:服务的类型,是为了响应不同的用户诉求,用来选择延迟、吞吐量和丢包率之间的关系。
- IHL(Internet Header Length):IP协议头的大小。 最大的协议头部就是60个字节
- Total Length:报文(封包datagram)的长度
- Identification:报文的ID,发送方分配,代表顺序
- Fragment offset:描述是否要分包(拆分),和如何拆分。
- Time To Live:封包存活的时间。
- Protocol:描述上层的协议,比如TCP=6,UDP=17
- Options:可选项
- Checksum:检验封包的正确性,若是被篡改或者损坏,则直接丢弃
- Source adress:源IP 32位
- Destination address:目的地IP 32位
2.3 延迟、吞吐量、丢包率
- 延迟:1bit的数据从网络的1个终端传送到另一个终端需要的时间
- 包括发送前的准备时间和发送时间
- 吞吐量:单位时间内可以传输的平均数据量。
- 丢包率:发送出去的封包没有到达目的地的比例。
Type of Service字段:低延迟,高吞吐量,低丢包率,低成本
2.4 寻址(Addressing)
- 寻址:给一个地址,然后找到这个东西
- IPv4地址(32位):逐级寻址
2.5 路由(Routing)
- 若寻找的IP地址不在局域网中,需要路由找到去往对应网络的路径。
- IP地址和子网掩码位与的过程是由路由算法实现的。 路由算法:
- 寻找路由编号
- 根据子网掩码&去算
- 查询路由记录
- 数据转发
3 IPv6协议
3.1 背景
IPv4只能支持43亿设备,不够用。
3.2 IPv6的工作原理
IPv6和IPv4两者工作原理相似,为切片、增加封包头、路由(寻址)几个阶段。
3.3 IPv6和IPv4的主要区别
3.3.1 地址
- 地址数量:
- IPv4有4个8位,共16位,IPv6有8个16位,共128位
- 分割符号:
- IPv4的地址用 . 分割,如 103.28.7.35 。每一个是8位,用0-255的数字表示。
- IPv6的地址用 : 分割,如 0123:4567:89ab:cdef:0123:4567:89ab:cdef 。每个是一个16位的16进制数字,就是4个符。
3.3.2 寻址
全局单播
- 站点前缀(Site Prefix):48bit,一般是由ISP(Internet Service Providor,运营商)或者RIR(Regional Internet Registry, 地区性互联网注册机构)。RIR将IP地址分配给运营商。
- 子网号(Subnet ID):16bit,用于站点内部区分子网。
- 接口号(Interface ID):64bit,用于站点内部区分设备。
本地单播
- 给定地址,本地网定位设备
分组多播
- 需要以8个1,也就是 ff00 开头,后面跟上一个分组的编号。
- 所在的网络中已经定义了该分组编号,而且有设备可以识别这个编号。
- 拥有分组下设备的完整清单,并把数据发送给对应的设备们。
- IPv4也支持分组多播,但需要网络配置整体配合。
3.3.3 新设备接入
新设备接入IPv6后,会使用IPv6的邻居发现协议(Neighbour Discover Protocol)为自己申请一个IP地址。当新设备需要发送信息到目的地时,还可以通过ND协议广播查询目标设备。然后如果需要路由,还可以通过ND查找路由器。
3.3.4 Ipv6的主要优势
- 解决了IP地址耗尽的问题
- 解决了网络区域、站点划分的问题。
- 协议层支持多播。Ipv6可以有专门的地址用作多播。
- 支持邻居发现协议,自动分配地址,做到了无状态接入设备。