ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络层协议之IPv4

2021-11-17 11:00:04  阅读:135  来源: 互联网

标签:协议 首部 IP 分片 网络层 IPv4 IP地址 数据


网络协议分层之网络层

IPv4协议:Internet网络层最核心的协议。定义了如何封装上层协议( 如UDP、 TCP) 的报文段;定义了Internet网络层寻址( IP地址) 以及如何转发IP数据报等内容。

在这里插入图片描述

协议头格式简单介绍

版本(4位):4位能表示 0到15
4位首部长度:0-15 单位是4个字节
IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。对于IPv4,4位版本字段是4。4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节,也就是不带任何选项的IP首部,4位能表示的最大值是15,也就是说首部长度最大是60字节。

区分服务(8位):
8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。

16位总长度(字节数):
总长度是整个数据报(包括IP首部和IP层payload)的字节数。每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。

16位标识,3位标志,13位片偏移:这三个字段辅助进行实现 拆包组包
16位标识,相当于IP数据报的身份标识
把一个数据拆成多个IP数据报的时候,这三个IP数据报的标识是相同的。
3位标志和13位片偏移用于分片。
13位片偏移,描述了当前这个包的顺序。
3位标志,第二位表示“禁止分片”,第三位表示“更多分片”,如果这一位为1表示当前这个分片就是最后一个分片,如果这一位为0表示当前这个分片不是最后一个分片。

8位生存时间(TTL):
这个字段表示一个IP数据报最多在网络上存活多久,这个TTL不是一个“时间”概念,而是一个“次数”

源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。协议字段指示上层协议是TCP、UDP、ICMP还是IGMP。然后是校验和,只校验IP首部,数据的校验由更高层协议负责。IPv4的IP地址长度为32位。

TTL的目的是为了防止这个IP数据报出现环路转发的情况
在这里插入图片描述

8位协议:
通过8位协议来指定传输层使用哪个协议来解析数据。
类似,传输层(例如TCP,UDP)的报头中的 目的端口就是在指定应用层使用哪个协议。

16位首部校验和:
类似于crc循环检验,只需要校验首部即可,载荷部分(就是一个完整的TCP/UDP数据报)其实已经由TCP或者UDP进行校验了。

32位源IP地址:发送人地址
32位目的IP地址:接收人地址

IP协议核心功能
1.地址管理:能够通过一系列的规则,把网络上的设备的地址给描述出来。
2.路由选择:根据当下的源地址和目的地址,规划处一条合适的路径。

在IPV4协议,ip地址是通过32位的整数表示,通过“点分十进制”,把一个32位的数字分成4份,每一份就是8bit(一个字节),八个比特位能表示的范围是【0,255】

如何解决IP地址不能分配的问题?
1.动态分配IP
接入网络的设备分配IP地址,没接入网络的设备就不分配,但是这种方法并不能从根本上解决问题。

2.NAT机制,网络地址替换
在这里插入图片描述
不同局域网中的ip地址可以重复,但是经过路由器到达公网的ip地址不能重复。(如图所示)
同一个局域网里的足迹,网络号要相同,主机号不能相同。

IP地址子网掩码都是32位的2进制,为了方便记忆转成10进制,通过子网掩码来区分网络位和主机位,子网掩码跟IP地址一一对应,子网掩码为1的是网络位,为0的是主机位。
如:192.168.1.2 掩码255.255.255.0 。网络位192.168.1 主机位是2

路由选择
这里的路由指的是IP协议中的“路径规划功能”

IP协议中,数据到达某个路由器之后,当前路由器并不知道网络整体的环境,当前路由器只是知道它附近的情况,IP协议寻路的过程,是一个“探索式”的过程。

标签:协议,首部,IP,分片,网络层,IPv4,IP地址,数据
来源: https://blog.csdn.net/qq_39537400/article/details/121323254

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有