IP协议重点总结(附实例)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


前言

又是新的一年展望2023年博主给大家带来了网络中IP协议的重点总结附上博主本人的实例帮助大家更好的理解网络层的IP协议。

一、IP地址

1.1 概念

IP地址Internet Protocol Address是指互联网协议地址又译为网际协议地址。

1.2 作用

IP地址是IP协议提供的一种统一的地址格式它为互联网上的每一个网络和每一台主机分配一个逻辑地址以此来屏蔽物理地址的差异。

1.3 格式

IP地址是一个32位的二进制数通常被分割为4个“8位二进制数”也就是4个字节如
01100100.00000100.00000101.00000110。

通常用“点分十进制”的方式来表示即 a.b.c.d 的形式a,b,c,d都是0~255之间的十进制整数。如100.4.5.6。

拓展

IPv4数量=2^32大约43亿左右而TCP/IP协议规定每个主机都需要有一个IP地址。对于全世界计算机来说这个数量是不够的所以后来推出了IPv6长度128位是IPv4的4倍。但因为目前IPv4还广泛的使用且可以使用其他技术来解决IP地址不足的问题所以IPv6也就没有普及。

1.4 组成

IP地址分为两个部分网络号和主机号

  • 网络号标识网段保证相互连接的两个网段具有不同的标识
  • 主机号标识主机同一网段内主机之间具有相同的网络号但是必须有不同的主机号

通过合理设置网络号和主机号就可以保证在相互连接的网络中每台主机的IP地址都是唯一的。

1.5 分类

A类10.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到255.255.255.255 暂时保留

特殊的IP地址

  • 将IP地址中的主机地址全部设为0就成为了网络号代表这个局域网
  • 将IP地址中的主机地址全部设为1就成为了广播地址用于给同一个链路中相互连接的所有主机发送数据包
  • 127.*的IP地址用于本机环回loop back测试通常是127.0.0.1
  • 本机环回主要用于本机到本机的网络通信系统内部为了性能不会走网络的方式传输对于开发网络通信的程序即网络编程而言常见的开发方式都是本机到本机的网络通信。

私网地址

网络中的主机需要通信需要使用一个IP地址目前我们普遍使用的IPv4的地址分为A、B、C、D、E五类在上面已经列出其中A、B、C类是我们常见的IP地址段。在这三类地址中大多数为公有地址需要向国际互联网信息中心注册。在IPv4地址中预留了3个IP地址段作为私有地址共家庭、企业、学校等内部组网使用。

在这里插入图片描述

除了这三个ip地址段为私有ip地址外其它的都为公网ip。

这些地址已被声明私有化任何内网中的设备可以任意使用这些地址但是在这三个范围内的IP地址不允许出现在Internet外网上。所以我们平台在内部组网时用的比较多比如监控项目与公司内部电脑ip设置用的多的就是192.168.xx。

通常情况下按照需要容纳的主机数选择私有地址段。家庭网络规模比较小一个C类地址192.168.1.x可以容纳254个终端足够使用。

二、NAT地址转换

2.1 作用

NAT技术当前解决IP地址不够用的主要手段是路由器的一个重要功能

  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校家庭公司内部采用每个终端设置私有IP而在路由器或必要的服务器上设置全局IP
  • 全局IP要求唯一但是私有IP不需要在不同的局域网中出现相同的私有IP是完全不影响的

家用路由器会承担几个功能

  1. 路由器
  2. NAT
  3. DNS服务器

私网地址只能在局域网中使用不同的局域网可以使用同样的私网地址私网地址是不能出现在互联网上的。那么私网地址如何访问互联网呢这就需要用到NAT地址转换将内网地址映射到外网地址。

而NAT地址转换它实现内网的IP地址与公网的地址之间的相互转换将大量的内网IP地址转换为一个或少量的公网IP地址减少对公网IP地址的占用。

2.2 转换过程

转换过程如下
在这里插入图片描述

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37
  • NAT路由器收到外部的数据时又会把目标IP从202.244.174.37替换回10.0.0.10
  • 在NAT路由器内部有一张自动生成的用于地址转换的表
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

2.3 NAPT端口映射

家庭网络普遍使用端口映射的方式NAT的核心是一张映射表源IP地址源端口目的IP地址目的端口将内网源IP地址和端口映射到同一个公网地址的不同端口如下图所示。

在这里插入图片描述

  • 这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下建立连接时就会生成这个表项
  • 在断开连接后就会删除这个表项

总之家庭网络由于网络规模比较小通常使用了192.168开头的私网地址光猫拨号获取了一个公网地址或者运营商私网地址通过NAT方式的映射到这个公网地址的不同端口访问互联网。主要注意的NAT模式和路由模式是不同的。

2.4 现实中的栗子以博主的手机为例

2.4.1 连无线WLAN的情况

现实中我们手机要是连着Wifi上网那么点开设置 -> 关于手机 -> 状态信息, 我们可以看到如下

在这里插入图片描述

博主静态设置了IP地址

在这里插入图片描述

可以看到这是一个私网地址192.168开头路由器的IP是192.168.1.1一般来说都是这个本机的IP地址是192.168.1.3博主手动自己分配给本机的IP一般来说都是DHCP动态自动分配的这里仅是为了演示本机的数据会从本机网卡发送到路由器再经过网关转化成公网IP地址然后一条一条地往目标IP传送。

2.4.2 用流量上网

是不是觉得用流量就是本机直接就是公网IP入网了呢

此时点开状态信息嗯哼怎么是个10.59开头的IP这也是个私网地址啊

在这里插入图片描述

其实这是运营商的内网IP你的手机通过空口到基站基站通过光纤到节点从节点到网关网关到公网在网关上做地址转换NAT/PAT所以你的手机分配到的是运营商的内网地址。最后是到运营商的某个网关上转换成公网地址。

2.5 NAT的缺陷

由于NAT依赖这个转换表所以有诸多限制

  • 无法从NAT外部向内部服务器建立连接
  • 转换表的生成和销毁都需要额外开销
  • 通信过程中一旦NAT设备异常即使存在热备所有的TCP连接也都会断开

这里博主也不是很了解大家可以网上搜索一下NAT穿越

三、子网掩码

3.1 格式

子网掩码格式和IP地址一样也是一个32位的二进制数。其中左边是网络位用连续的二进制数字“1”表示1的数目等于网络位的长度右边是主机位用二进制数字“0”表示0的数目等于主机位的长度。

特点前面全是1后面全是0

在这里插入图片描述
一般用点分法表示

如上面图的就是 255.128.0.0

子网掩码也可以使用二进制所有高位1相加的数值来表示如以上子网掩码也可以表示为/9。(前缀长度为9)

3.2 作用

网络通信时子网掩码结合IP地址可以计算获得网络号划分子网后的网络号及主机号划分子网后的主机号。一般用于判断目的IP与本IP是否为同一个网段。

如果不属于同一个网段就要交给网关处理

  1. 找到本机相连的网关设备IP
  2. ARP寻址根据网关IP查找对应的MAC地址

3.3 计算方式

  • 将 IP 地址和子网掩码进行“按位与”操作二进制相同位与操作两个都是1结果为1否则为0得到的结果就是网络号。
  • 将子网掩码二进制按位取反再与 IP 地址位与计算得到的就是主机号。

示例

在这里插入图片描述

四、IP协议

4.1ipv4协议头格式

在这里插入图片描述

  • 4位版本号version指定IP协议的版本对于IPv4来说就是4。

  • 4位头部长度header lengthIP头部的长度是多少个32bit也就是 length * 4 的字节
    数。4bit表示最大的数字是15因此IP头部最大长度是60字节。

  • 8位服务类型Type Of Service3位优先权字段已经弃用4位TOS字段和1位保留字段必须置为0。4位TOS分别表示最小延时最大吞吐量最高可靠性最小成本。这四者相互冲突只能选择一个。对于ssh/telnet这样的应用程序最小延时比较重要对于ftp这样的程序最大吞吐量比较重要。

  • 16位总长度total lengthIP数据报整体占多少个字节。

  • 16位标识id唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了那么每一个片里面的这个id都是相同的。

  • 3位标志字段第一位保留保留的意思是现在不用但是还没想好说不定以后要用到。第二位置为1表示禁止分片这时候如果报文长度超过MTUIP模块就会丢弃报文。第三位表示"更多分片"如果分片了的话最后一个分片置为0其他是1。类似于一个结束标记。

  • 13位分片偏移framegament offset是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此除了最后一个报文之外其他报文的长度必须是8的整数倍否则报文就不连续了。

  • 8位生存时间Time To LiveTTL数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由TTL -= 1一直减到0还没到达那么就丢弃了。这个字段主要是用来防止出现路由循环。

  • 8位协议表示上层协议的类型。

  • 16位头部校验和使用CRC进行校验来鉴别头部是否损坏。

  • 32位源地址和32位目标地址表示发送端和接收端。

  • 选项字段不定长最多40字节略。

这里博主挑几个重要的作如下总结

4.2 关于16位标识+3位标志+13位片偏移

一般电脑分片的功能都是关着的。

网络层的下层数据链路层一般是有每次能发送的数据的大小的限制的

举个栗子

因为数据包的传送都是一条一条的从这个局域网跳到另一个局域网中的假如千兆以太网一次性能传10吨数据令牌环网一次传1吨无线网传10吨
在这里插入图片描述

此时我主机需要传送5吨的数据此时经过千兆以太网能一次性传送但经过令牌环网时由于最大传输的容量是1吨所以要把这5吨的数据做处理有如下情况

  1. 发不过去就不发了直接扔掉 —— 造成了网络的不可靠。网络层没有负责可靠的职责
  2. 进行分片发送 5吨 = 【a , b, c, d, e】每个一吨分别发送到达目标之后再进行组装

关于组装

要组装的话需要

1.哪些分片原来是一组的比如 【a,b,c,d,e,f,g,h】怎么让对方直到【a,b,c,d,e】是一组的。这时候就需要给同一批数据包做统一的编号也就是这个16位标识的作用

在这里插入图片描述
2.怎么让对方知道数据包的排列顺序比如对方从接受缓冲区看到了这些数据【b,a,d,c,e】怎么样能还原正确的顺序【a,b,c,d,e】呢此时就需要13位片偏移来标识

在这里插入图片描述
比如【b,a,d,c,e】中b 偏移 1 吨 a 偏移 0 吨d 偏移 3 吨c偏移 2 吨e 偏移 4 吨。所以组装起来就能得到正确顺序。

3.怎么知道一个分片是这批数据的最后一个分片呢
类比链表最后一个节点最后一个结点必须有特殊的地方就可以分辨当前分片是否为结束分片。此时就需要这3位标志位了

在这里插入图片描述
有8种不同的信息用于不同的情况

  1. 不能分片
  2. 允许分片 && 这个分片是最后一个分片
  3. 允许分片 && 这个分片不是最后一个分片

4.3 关于TTL

TTLTime To Live

IP Packet 能在网络中生存的时间以 为单位ip包每经过网络一跳寿命-1

在这里插入图片描述

有这个寿命是为了防止ip包在网络中无限传递尤其是在有环路的情况下

在这里插入图片描述可以影响到网络层的上层传输层/应用层

比如 TCP中的MSLMaximum Segment Live

4.4 查看IP协议头部信息

用工具随便抓一个包可以看到图中蓝色的部分就是我们的数据包的IP协议头部信息
在这里插入图片描述
分析如下

在这里插入图片描述
Linux 设置的 TTL 一般是64Windows是128

举个例子

在这里插入图片描述这里ping一个网站显示的TTL = 55 的意思就是 网络总共经过的跳数路由器= 64-55=9 . 因为对方主机十有八九是个Linux操作系统因为如果是128的话 128-55 = 73 这么多跳都可以跳到火星了~~

在这里插入图片描述

总结

以上就是IP协议的重点总结关于后续数据链路层中数据是怎么传输的长期目标和短期目标博主会在下一篇更新~感谢各位支持

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6