reference:
https://www.jianshu.com/p/1183208dd5e3(简书IP)
https://www.bilibili.com/read/cv8702424(bilibili)
IP
介绍
IP协议负责将数据包发送给最终目标计算机,能够让世界上任何两台计算机进行通信。
文章介绍IP的主要功能及其协议具体内容的知识点。
OSI:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
定义
IP(Internet Protocol)即网络之间互连的协议。
IP相当于OSI参考模型的第三层——网络层。网络层的功能是基于IP地址进行不同网络系统间的路径选择。
IP作用:对不同数据链路的相异特性进行抽象化,在复杂的网络环境中将数据包发给最终的目标地址。
数据链路层提供直连同一网络下的两个设备之间的通信功能。网络层的IP则负责在两个不同网络网络之间进行通信传输。
IP基础知识
IP的两大功能
- 路由控制
含义:指分组数据发送到最终目标地址的功能。
作用:即使网络非常复杂,通过路由控制就可以确定到达目标地址的通路。
路由控制表:所有主机都维护着一张路由控制表(Routing Table),记录了IP数据在下一步应该发给 哪个路由器。IP包根据这个路由表在各个数据链路上传输。
各跳之间无计划传输。(个人理解)数据链路是载具,IP数据包是载体,路由器是分配端;
- 数据链路的抽象化
IP对不同数据链路进行了抽象。那么不同数据链路之间最大的区别是:他们各自的最大传输单位(MTU, Maximum Transmission Unit)不同。
IP会进行分片处理(IP Fragmentation),将较大的IP包分成多个较小的IP包。
从网络层上看,可以忽略数据包在各个数据链路上的MTU,只需要按照原地址发送的长度接收数据包。
IP属于面向无连接型
无连接型含义:发包之前,不需要建立与对端目标地址之间的连接。?保证顺序的方法
缺点:产生冗余的通信。
优点,简化,提速
IP地址的基础知识
IP地址(IPV4)
定义:用32位二进制数来表示。以每8位为一组,分成4组,每组用“.”隔开,再将每组数转成十进制数。
规则:
- 最多允许43亿台(2^32)计算机连接到网络。
- 每一块网卡(NIC)都得设置IP地址。
- IP地址由网络和主机两部分标识而成。
- 网络标识在数据链路的每个段配置不同的值,同段内的主机的网络地址是相同的。
- 主机标识不允许在同一网段内重复出现。
- 通过设置网络地址和主机地址,保证了整个互联网中主机的IP地址都是唯一的。
IP地址分类
- A类地址
定义:首位0开头,后24位是主机标识
网络地址范围:0.0.0.0~127.0.0.0
一个网段内可以容纳的主机上限是2^24-2个 - B类地址
定义:前两位是10的地址,后16位是主机标识
网络地址范围:128.0.0.1~191.255.0.0
一个网段可以容纳的主机上限是2^16-2个 - C类地址
定义:前三位是110的地址,前24位是网络标识,后8位是主机标识。
网络地址范围:192.0.0.0~239.255.255.0
一个网段内可容纳的主机地址上限是2^8-2个(254个) - D类地址
定义:前四位是1110的地址,前32位是网络标识
网络地址范围:224.0.0.0~239.255.255.255
D类地址没有主机标识,常被用于多播 - 关于分配IP主机地址的注意事项:
主机地址不可以全部为0或全部为1。
全部为0标识对应的网络地址或IP地址不可获知。
全部为1的主机地址通常作为广播地址。
所以以上每个网段的主机数量上限是2^n-2个。
- A类地址
广播地址
广播地址定义:IP地址的主机标识全部设置为1.
广播定义:向某个网段的广播地址发送IP包,这个网段的所有主机都能收到这个包,由主机IP之上的一层去判断是否接收数据。
缺点:给毫无关系的网络或主机带来影响,造成不必要的流量。
子网掩码
子网掩码用二进制方式表示,也是32位二进制数字。
直接使用A\B\C类地址,有点浪费资源,人们开始采用一种新的组合方式减少地址空间的浪费。
子网掩码可以通过子网网络地址细分出比A\B\C类更小粒度的网络。
规则:1表示IP地址的网络地址对应位。0表示IP地址的主机地址对应位。
使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。划分子网,就应遵循子网划分结构的规则。
全局地址与私有地址
学校、家庭、公司内部的终端设置私有IP,而在路由器(宽带路由器)或必要的服务器上设置全局IP。全局IP在整个互联网范围内保持为宜,但私有地址不需要,只要在同一个域内保证唯一即可。
全局地址由谁决定
ICANN(Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)。负责管理全世界的IP地址和域名。
路由控制
作用:仅仅有IP地址不足以将数据发向目标地址,在数据发送过程中需要“指明路由器或主机”的信息,以便真正发往目标地址。保存这种信息的就是路由控制表(Routing Table)。该表是由一个“路由协议”(有别于IP协议)制作而成的。
路由控制与IP地址
- 默认路由
- 主机路由
- 环回地址
同一台计算机的程序之间进行网络通信,使用一个特殊IP地址 127.0.0.1作为环回地址,与该地址等价的是localhost主机名。使用这个IP或主机名,数据包不会发向网络。路由控制表的聚合
又称路由汇总(Aggregation)。
作用:路由表越大,管理它需要的内存和CPU也就越大,而且查找路由表的时间就越长,导致转发IP数据包的性能下降。如果要构建大规模、高性能网络,需要尽可能削减路由表的大小。
利用网络地址的比特分步进行分层配置。对内即使有多个子网掩码,对外呈现出的也是同一个网络地址。
IP对数据的处理
规则
按照路径中存在的所有数据链路中 最小的MTU发送,可以避免中途的路由器进行分片处理。
IPV6
8个16位,共128比特,是IPv4长度的4倍。
每16位比特为一组,用”:”隔开。出现连续的0时可以省略,用”::”表示。一个IP地址只允许出现一次“::”。
从根本上解决IPv4地址耗尽的问题。
特点
- 依旧适应互联网分层构造,路由控制上也尽可能避免路由表膨大
- 性能提升,简化首部,路由器不再分片,通过路径MTU只由发送端主机进行分片处理
- 即插即用
- 采用认证与加密功能
- 多播、Moblie IP比IPv4更顺利使用
IP包的内容
IPV4的首部
IP首部包含着 用IP协议进行发包控制时 所有的必要信息。
首部以每32比特(8字节)为一个单位:
- 版本号:4比特,IPv4即值为4
- 首部长度(IHL:Internet Header Length):IP首部大小。4比特,单位是4字节。值为5时,IP首部长度为4*5=20字节。
- 区分服务(TOS:Type Of Service):表明服务质量。8比特,现已划分为DSCP和ECN两个字段。
- 总长度(Total Length):表示IP首部与数据部分的总字节数。该字段长16比特。因此IP包最大长度是65535字节。
- 标识(ID:Identification):用于分片重组,该字段长16比特。同一分片的标识值相同,不同分片的标识值不同。
- 标志(Flags):表示包被分片的相关信息,该字段长3比特。可以表示 是否使用分片、是否分片的最后一个包。
- 片偏移(FO:Fragment Offset):标识被分片的每一个分段相对于原始数据的位置。该字段长13比特。单位是8字节,因此最大可以表示8* 2^13 =65536字节的位置。
- 生存时间(TTL:Time To Live):指可以中转多少个路由器,没经过一个路由器,TTL会减1,该字段长度为8比特。因此一个包的中转路由次数不会超过2^8=256次。由此可以避免IP包在网络内无限传递的问题。
- 协议(Protocol):表示IP首部的下一个首部属于哪个协议(其实就是上层协议)。该字段长度8比特。
- 首部校验和(Header Checksum):按照一定算法校验数据报的首部,不校验数据部分,主要来确保IP数据报不被破坏。该字段长度16比特。
- 源地址(Source Address):32比特,表示发送端IP地址。
- 目标地址(Destination Address):32比特,表示接收端IP地址。
- 可选项(Options):
长度可变,通常只用于实验或诊断时使用。包含如下几点信息:- 安全级别
- 源路径
- 路径记录
- 时间戳
- 填充(Padding):再有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向该字段填充0,调整为32比特的整数倍。
