IP协议(Internet Protocol):网络层协议。
网络层协议位于传输层和链路层中间,传输层解决端到端的问题,预先建立连接保证了消息的可靠性。而IP协议并不预先建立连接,它任由数据在网络中传输,每个节点通过路由算法来找到数据传输到的下个节点,它不保证数据的可靠性。消息可靠性有上方传输层来保证。
IP协议目前主要有两种架构,IPv4和IPv6,IPv4是目前应用最广泛的互联网协议。
IPV4协议的工作原理
1.分片(Fragmentation) 还是将数据拆分传输,把数据切分成片,适配底层传输网络 2.增加协议头(IP Header)
Type Of Service:服务的类型,是为了响应不同的用户诉求,用来选择延迟、吞吐量和丢包率之间的关系。 IHL(Internet Header Length):IP协议头的大小。 Total Length:报文(封包datagram)的长度 Identification:报文的ID,发送方分配,代表顺序 Fragment offset:描述是否要分包(拆分),和如何拆分。 Time To Live:封包存活的时间。 Protocol:描述上层的协议,比如TCP=6,UDP=17 Options:可选项 Checksum:检验封包的正确性 3.延迟、吞吐量、丢包率 延迟:1bit的数据从网络的1个终端传送到另一个终端需要的时间 吞吐量:单位时间内可以传输的平均数据量。 丢包率:发送出去的封包没有到达目的地的比例。 注意:三个条件无法同时满足 4.寻址(Addressing) 寻址:给一个地址,然后找到这个东西。IPv4地址是32位:逐级寻址 例如:103.16.3.17 103对应二进制:0110 0111 16对应二进制: 0001 0000 3对应二进制:0000 0011 17对应二进制:0001 0001
第一步:找到顶层网络 103.16.3.1 最顶层的网络号和 255.0.0.0 (子网掩码)做位与运算得到: 位运算:1&1=1,1&0=0,0&1=0,0&0=0 103.16.3.1 & 255.0.0.0 = 103.0.0.0(顶层网络)
第二步:找到下一层网络 用IP地址103.16.3.1和下一级的子网掩码做位与运算: 103.16.3.1 & 255.255.0.0 = 103.16.0.0(下一级网络) 第三步:找到再下一级网络 使用 255.255.255.0 子网掩码找到下一级网络: 103.16.3.1 & 255.255.255.0 = 103.16.3.0 最后一步:定位设备,设备就在子网 103.16.3.0 中;最终找到的设备号是 1 注意:子网掩码不一定都是 255
5.路由(Routing) 若寻找的IP地址不在局域网中,需要网关路由找到去往对应网络的路径。IP地址和子网掩码位与的过程是由路由算法实现的。
IPV6协议
IPv4只能支持大约43亿设备(2的32次方),远远是不够用的。 IPv4有个方案是拆分子网 :例如一个公司分配一个外网ip,那么公司中局域网内应用要想访问外网,需要NAT协议转换,通过同一个外网ip进行访问。 IPv4不够用,那么就出现了IPv6的协议,IPv4有4个8位,共32位,IPv6有8个16位,共128位也就是(2的128次方),这个数量目前来说是绝对够用的吧。 IPv6和IPv4两者工作原理相似,为切片、增加封包头、路由(寻址)几个阶段。
IPv6和IPv4的主要区别
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个字符。 2.书写方式:IPv6地址可简写 例如:0123:4567:0000:0000 :0123:4567:0000:cdef
可以省略若干组 0000用:: 代替,简写后就是0123:4567:: 0123:4567:0000:cdef 但是只能出现一次,如果出现多次,比如将后边的0000也用::代替,如 0123:4567:: 0123:4567:: cdef ,那怎么知道是前边有八个0还是后边有八个0呢。所以说只能出现一次。
开头的0和连续的0也可以省略简写如:123:4567::123:4567:0:cdef
3.寻址 寻址-全局单播 站点前缀(Site Prefix):48bit(也就是前三个16位),一般是由ISP(Internet Service Providor,运营商)或者RIR(Regional Internet Registry, 地区性互联网注册机构)。RIR将IP地址分配给运营商。 子网号(Subnet ID):16bit(第四个16位),用于站点内部区分子网。 接口号(Interface ID):64bit后四个16位),用于站点内部区分设备。
寻址-本地单播 就是给定地址,在本地网定位设备 例如:fe80::123e:456d fe80开头就标记为Link-local,在本地进行寻址 分组多播 需要以8个1,也就是 ff00 开头,后面跟上一个分组的编号。 所在的网络中已经定义了该分组编号,而且有设备可以识别这个编号。 拥有分组下设备的完整清单,并把数据发送给对应的设备们。 IPv4也支持分组多播,但需要网络配置整体配合。
4.新设备接入 新设备接入IPv6后,会使用IPv6的邻居发现协议(Neighbour Discover Protocol)为自己申请一个IP地址。当新设备需要发送信息到目的地时,还可以通过ND协议广播查询目标设备。然后如果需要路由,还可以通过ND查找路由器。IPv6:更加无状态化,减少数据冗余带来的风险和负担
Ipv6的主要优势:
解决了IP地址耗尽的问题 解决了网络区域、站点划分的问题。 协议层支持多播。Ipv6可以有专门的地址用作多播。 支持邻居发现协议,自动分配地址,做到了无状态接入设备。
|