✏️✏️✏️今天给大家分享的是网络层的重点协议——IP协议。
清风的CSDN博客
🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流!
✈️✈️✈️动动你们发财的小手,点点关注点点赞!在此谢过啦!哈哈哈!😛😛😛
目录
一、IP 协议格式
二、认识 IP 地址
2.1 概念
2.2 作用
2.3 格式
2.4 组成
2.5 分类
2.6 特殊的IP地址
2.7 子网掩码
2.7.1 格式
2.7.2 作用
2.7.3 计算方式
三、NAT 机制
一、IP 协议格式
- 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
- 4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节 数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
- 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择一个。
- 16位总长度(total length):IP数据报整体占多少个字节。
- 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
- 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为0,其他是1。类似于一个结束标记。
- 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
- 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL - 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
- 8位协议:表示上层协议的类型。
- 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。
- 32位源地址和32位目标地址:表示发送端和接收端。
- 选项字段(不定长,最多40字节):不做介绍
二、认识 IP 地址
2.1 概念
2.2 作用
2.3 格式
通常用 “ 点分十进制 ” 的方式来表示,即 a.b.c.d 的形式( a,b,c,d 都是 0~255 之间的十进制整数)。如:100.4.5.6。
IP协议有两个版本,IPv4和IPv6。IPv4数量=2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址。对于全世界计算机来说,这个数量是不够的,所以后来推出了IPv6(长度128位,是IPv4的4倍)。但因为目 前IPv4还广泛的使用,且可以使用其他技术来解决IP地址不足的问题,所以IPv6也就没有普及。
2.4 组成
- 网络号:标识网段,保证相互连接的两个网段具有不同的标识
- 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
2.5 分类
2.6 特殊的IP地址
- 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网
- 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
- 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
- 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信
在上述的分类中,存在IP地址浪费的问题:
- 单位一般会申请B类网络(C类连接主机数量有限),但实际网络架设时,连接的主机数量又常远小于65534(B类连接主机数),造成IP地址浪费;同理,A类网络的IP地址也会造成大量的浪费。
- 当一个单位申请了一个网络号。他想将该网络能表示的IP地址再分给它下属的几个小单位时,如果在申请新的网络就会造成浪费。
2.7 子网掩码
2.7.1 格式
2.7.2 作用
- 划分A,B,C三类 IP 地址子网:
- 网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。
对于网络通信来说,发送数据报时,目的主机与发送端主机是否在同一个网段,流程是不一样的。
2.7.3 计算方式
- 将 IP 地址和子网掩码进行“按位与”操作,得到的结果就是网络号。
- 将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
示例:
关于IP协议还有一个重要功能——路由选择(数据报在IP协议下如何传输)
路由器转发的过程类似于问路的过程,每个路由器内部都有一个数据结构——路由表。数据报到达路由器,就查询路由表。若查到就直接按照这个方向转发。否则路由器给一个默认的方向,沿着默认方向走。
三、NAT 机制
- NAT能够将私有IP对外通信时转为全局IP,也就是就是一种将私有IP和全局IP相互转化的技术方法
- 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP
- 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的
- 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 发送数据时就会生成表中的映射关系
NAPT 工作过程
这时候NAPT来解决这个问题了,使用IP+port来建立这个关联关系:
- 无法从NAT外部向内部服务器建立连接
- 转换表的生成和销毁都需要额外开销
- 通信过程中一旦NAT设备异常,所有的TCP连接都会断开
🌈🌈🌈好啦,今天的分享就到这里。
🌈🌈🌈希望各位看官读完文章后,能够有所提升!
🎉🎉🎉创作不易,还希望各位大佬支持一下!
✈️✈️✈️点赞,你的认可是我创作的动力!
⭐⭐⭐收藏,你的青睐是我努力的方向!
✏️✏️✏️评论:你的意见是我进步的财富