网络原理---拿捏网络层:IP协议

文章目录

  • IP协议
    • 4位版本
    • 4位首部长度、选项
    • 8位服务类型(TOS)
    • 16位总长度
    • 16位标识、3位标志、13位片偏移
    • 8位生存时间(TTL)
    • 8位协议
    • 16位首部校验和
    • 32位源IP地址、32位目的IP地址
      • 解决IP地址不够用的问题
        • 动态分配IP地址
        • NAT机制(主流机制)
        • IPv6
  • IP地址管理
  • 特殊的IP地址
  • IP路由选择

IP协议

学习协议很大程度上就是在学习协议的报文格式,以下便来介绍IP协议的报文格式:
网络原理---拿捏网络层:IP协议_第1张图片

4位版本

4位版本:虽然用4位进行表示,但是只使用4和6.代表IPv4协议和IPv6协议。

4位首部长度、选项

4位首部长度:和TCP的4位首部长度一样,也是变长的。因为选项可有可无,可以有一个也可以有多个

8位服务类型(TOS)

8位服务类型:其中只有4位有效,表达了当前IP协议不同的工作模式:最小延时、最大吞吐量、最高可靠性、最小成本。 这4位里同时只有1位可以是1,不能同时都是1.

16位总长度

16位总长度:描述了IP数据包的报文长度是多少。

IP总长度 - IP报头长度 = TCP报文长度

IP数据包最大只能是64kb吗?

不是的。IP协议自带了分包分组的机制(将一个大的数据包分成几个小的数据包分别进行传输),通过这个机制可以传输很长的TCP数据包。

16位标识、3位标志、13位片偏移

这三个都是用来实现IP协议的分包分组机制的。
网络原理---拿捏网络层:IP协议_第2张图片

就像搬家一样,如果要搬的东西太多,一车装不下,就叫几辆车一起搬,每辆车用来搬一部分。
这几辆车都是我找来的,它们的16位标识相同;
先找的车片偏移比较小,后找的车片偏移比较大;
最后一辆车会有特殊的标志;

8位生存时间(TTL)

TTL:单位是”次数“,是一个整数,一般取32/64/128这样的整数。

数据报在传输的过程中,每经过一个路由器转发TTL就 -1 ,如果减到0了就把这个数据报丢掉(不再继续转发了)

预期的正常情况下,每个数据报都可以在很短的次数内传输到世界上任何一个地方的主机上的。(六度空间理论)

如果经过TTL这么多次的转发还没有到达目的地,大概率是地址写错了,就会放弃传输。

8位协议

8位协议:指的是IP载荷中数据报使用的传输层协议。

接收方收到数据报会进行分用,当分用到网络层的时候,下一次就要交给传输层分用。8位协议就决定了把这个数据报交给传输层的哪个协议来解析。

16位首部校验和

16位首部校验和:作用是为了检查数据是否出错了。保证接收方知道接收到的数据是正确的还是错误的。

32位源IP地址、32位目的IP地址

32位源IP地址:描述发件人的地址
32位目的IP地址:描述收件人的地址

IP地址是32位的,是4个字节。为了让人看得更清楚,通常就会把这个32位的整数转化为”点分十进制“的表示方式。比如:

本机IP:127.0.0.1

使用三个点把IP地址分为4部分,每个部分都是1个字节,范围是0-255

解决IP地址不够用的问题

一个IP地址用32位表示,它的范围是0-42亿9千万。而IP地址是用来区分网络中的每一台主机,每台主机的IP地址和别人都是不同的。但是当前地球上的所有主机早已超过了43亿,因此,我们就需要解决IP地址不够用的问题。以下有三种解决策略:

动态分配IP地址

设备上网的时候才分配IP地址,不上网的时候就把IP回收给别人用。

缺点:没有增加IP地址的数量,只是提高了利用率。”治标不治本“

NAT机制(主流机制)

不再强制要求每个主机都有独立的IP,而是把IP分为俩类:
a)外网IP / 公网IP
b)内网IP / 私网IP / 局域网IP

规定的内网IP格式:

  1. 10.*
  2. 172.16.* - 172.31.*
  3. 192.168.*

约定: 在同一个局域网内部IP不能重复,但是在不同的局域网之间IP可以重复。如果在局域网内部想访问某个外网的服务器,就会使用一个外网IP来代替同一个局域网中的所有设备(大大节省了外网IP的个数)

路由器本身就是NAT设备,它就会记录映射关系。在发起请求和做出相应时,都会做出相应的映射。

注:当前网络的现状:动态分配+NAT机制

IPv6

IPv4:用4个字节、32位来表示IP地址。范围是0 - 42亿9千万
IPv6:用16个字节、128位来表示IP地址。 范围是42亿 * 42亿 * 42亿 * 42亿

注:IPv6彻底解决了IP地址不够用的问题。就是地球上的每一粒沙子都够表示了。

IP地址管理

  • IP地址分为两个部分:网络号和主机号
    网络号:标识网段,保证相互连接的两个网段具有不同的标识。即:局域网的身份标识
    主机号:标识主机,同一网段内主机之间具有相同的网络号,但必须有不同的主机号

    即:同一个局域网中主机之间的网络号是相同的,两个相邻的局域网中主机之间的网络号必须是不同的,隔着的局域网中主机之间的网络号可以是相同的。

  • 子网掩码:用来划分从哪里到哪里是一个网络号。是32位的,左半边都是1、右半边都是0(不会0和1混着)

    左半边有多少个1就代表IP地址左侧的多少位是网络号
    把子网掩码和IP地址进行按位与运算得到的结果就是网络号

特殊的IP地址

如果一个IP地址,主机号为0,此时这个IP就标识网络号。
如果一个IP地址,主机号为1,此时这个IP往往表示这个局域网的“网关”
如果一个IP地址,主机号为全1,此时这个IP表示广播IP
127.*开头的IP都是”环回IP“

IP路由选择

路由选择:网络层是点到点传输的,路由选择就是在俩点之间规划出一个路线。

路由选择是”启发式“的过程,类似于”问路“

IP数据报中本身就包含一个目的IP,网络数据到达路由器的时候,路由器自身有一个”路由表“的数据结构(路由表就是这个路由器认识的路),一个路由器无法认识到网络的全貌,但是可以认识到附近的一部分。

如果当前的目的IP路由器认识,就会给出一个明确的路线。
如果当前的目的IP路由器不认识,路由器就会把数据报转发给另一个”见多识广“的路由器。
如果转发了很多次都没有找到目的IP(TTL减到0),就舍弃这个数据报

注:路由过程不光是找到一条路,而是筛选出一条更好的路。

你可能感兴趣的:(JavaEE初阶,网络,tcp/ip,网络协议)