Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网络层协议:IP协议详解

网络层协议:IP协议详解

作者头像
用户7557625
发布于 2020-07-15 02:47:09
发布于 2020-07-15 02:47:09
2.6K0
举报

简介:

IP协议属于网络层协议,所有的TCP, UDP, ICMP, IGMP数据都通过IP数据报传输。IP提供了一种不可靠,无连接的数据包交付服务。依赖其他层的协议进行差错控制。 不可靠: IP数据报不保证能成功的到达目的地,如果出现错误则选择丢弃该数据,然后发送ICMP消息报给信源端 无连接: IP不提供任何后续数据报的状态信息,每个数据报处理都是独立的。如果一个信源发送了连续的两个数据报,每个数据报选择独立的路由,两个数据可能不同时到达。IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。

ipv4数据报

1.版本号:占四位,就是IP协议的版本,通信双方的IP协议必须要达到一致,IPv4的版本就是4.

2.首部长度:占四位,因为长度为四比特,所以首部长度的最大值为1111,15,又因为首部长度代表的单位长度为32个字(也就是4个字节),所以首部长度的最小值就是0101,当然,也确实如此,大部分的ip头部中首部字节都是0101.也就是5*4=20个字节,如果是最大值15的话,ip首部的最大值就是60个字节,所以记好了,ipv4首部长度的最大值就是60,当然当中我们又能发现,IPv4的首段长度一定是4字节的整数倍,要是不是怎么办呢?别急,后面的填充字段会自动填充补齐到4字节的整数倍的。

3.区分服务:这个没有什么用处,也没有什么好讲的了,只要自动这玩意占八位,一个字节就可以了。

4.总长度:占16位,这个的意思就是ip数据报中首部和数据的总和的长度,因为占16位,所以很好理解,总长度的最大值就是2的16次方减一,65535,这玩意也对应着还有一个很简单的概念,最大传输单元mtu,意味着一个IP数据报的最大长度就只能装下65535个字节,要是传输的长度超过这个怎么办,很简单,分片。

5.标识:占16位,标识这玩意很好理解,IP在存储器中维持一个计数器,每产生一个 数据报,计数器就加1,并将此值赋给标识字段。但这个标识并不是平常的序号,因为IP是 无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分 片时,这个标识字段的值就被复制到所有的数据报片的标识字段中,等到重组的时候,相同标识符的值的数据报就会被重新组装成一个数据报。

6.标志:占三位,一般有用的是前两位, 最低位叫做MF,MF=1表示后面还有若干个数据报,MF=0表示这已经是最后一个数据报了。 中间位叫做DF,DF表示不能进行分片,DF=0才可以进行分片操作。

7.片偏移:占13位,片偏移就是,在原来的数据报分片以后,该片在原分组中的相对位置,片偏移中的基本单位是8字节,所以,也就是说,只要是分片,每个分片的长度都是8字节的整数倍,最后一个分片不够八字节的一样是填充。

8.生存时间ttl:占8位,(time to live),表明数据报在网络中的寿命,这个值被设定成跳数,顾名思义,就是这个数据报可以经过多少个路由器的数量,每经过一个路由器,该值就减一,减到为零的时候就被抛弃,显而易见,这个跳数的最大值就是2的8次方减一,255.

9.协议:就是用来指明数据报携带了哪种协议,占8位。

10.首部效验和:占16位,这个字段用来效验数据报首段,下面给出简单的计算方法:

首先在发送端的时候,将效验和全部置为0,然后把数据报首段数据全部进行反码相加,得到的值为效验和,放入首段效验和里面,然后接收端将数据报首段数据和效验和一起全部反码相加,最后若是得到零,则保留,若是不为零,则说明数据报在传输的过程中发生了改变,则丢弃该数据报。

11.IP源地址:占32位,将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。

12.目的地址:也占32位,转换方法和来源IP地址一样。

13.选项:可变长的可选信息,最多包含40字节。选项字段很少被使用。可用的IP可选项有:   a. 记录路由: 记录数据包途径的所有路由的IP,这样可以追踪数据包的传递路径   b. 时间戳: 记录每个路由器数据报被转发的时间或者时间与IP地址对,这样就可以测量途径路由之间数据报的传输的时间   c. 松散路由选择: 指定路由器的IP地址列表数据发送过程中必须经过所有的路由器   d. 严格路由选择: 数据包只能经过被指定的IP地址列表的路由器   e. 上层协议(如TCP/UDP)的头部信息

13.到了可变部分IPv4的头部基本上就已经讲完了,增加头部的可变选项实际上就是增加了数据报的功能,可变选项在实际上是很少用到的。

分片

当IP数据报的长度超过帧的MTU时,它将被分片传输。分片可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。 IP头部中的如下三个字段给IP的分片和重组提供了足够的信息:数据报标识、标志和片偏移。一个IP数据报的每个分片都具有自己的IP头部,它们具有相同的标识值,但具有不同的片偏移。并且除了最后一个分片外,其他分片都将设置MF标志。此外,每个分片的IP头部的总长度字段将被设置位该分片的长度。

IP路由

路由是什么: 我们知道,IP地址是网络世界里的门牌号。你可以通过IP地址访问远在天边的网站,那么数据是如何到达网站的呢?靠的就是路径上每个节点的路由。 路由,简单的说就是指导IP报文该去哪的指示牌。

一般说来,主机会在以下两个时机进行路由查询

  • 1.收到报文时,查询路由决定是上送本机(LOCAL IN),或者从哪个出接口转发(FORWARD)
  • 2.本机发送报文时,查询报文出接口 注意,转发需要开启 net/ipv4/ip_forward

路由表长什么样 以一个典型的主机为例,tristan有一个外部网卡enp1s0和一个内部还回网卡lo

通过route -n我们可以看到主机上简要的路由表信息(当然通过ip route也可以),那么上面的路由信息中的每一表项代表什么意思呢?

  • 如果报文的目的IP地址在164.69.136.0/24这个网段,那么它应该从enp1s0进行转发。
  • 如果报文的目的IP地址在169.254.0.0/8这个网段,那么它应该从enp1s0进行转发。
  • 其他情况下(0.0.0.0/0),报文从enp1s0转发,下一跳IP地址是192.168.99.254

IP转发

当主机收到一个数据报时,首先检查目的地址:

  • 如果是自己(自己某一个接口所配置的IP地址或IP广播或者组播地址),则交给协议字段或者IPv6头部的下一个头部字段指定的协议模块处理。
  • 如果不是:
    • 如果IP层被配置为路由器,则转发该数据报。
    • 否则默默丢弃,必要时生成ICMP报文给发送者。

转发不会改变数据报的IP地址,只是通过设置链路层地址来完成交付的过程:

  • 发送者定义好源IP和目的IP,如果目的IP不在本地,则将链路层的目的MAC地址设置为路由器,由路由器代为转发。
  • 每一跳路由器在转发时,都会将源MAC地址设置为自己,目的MAC地址设置为下一跳路由器。

IP地址介绍

ip地址组成 : IP地址由4部分数字组成,每部分数字对应于8位二进制数字,各部分之间用小数点分开 这是点分2进制 如果换算为10进制我们称为点分10进制.每个ip地址由两部分组成网络地址(NetID)和主机地址(HostID).网络地址表示其属于互联网中的哪一个网络,而主机地址则表示其属于该网络中的哪一台主机.

A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。因此 A类地址的范围其实是从1-126之间。   如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。转换为2进制来说,一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.1 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1千多万个主机(2的24次方的-2主机数目)。 以子网掩码来进行区别::255.0.0.0 127.0.0.0到127.255.255.255是保留地址,用做循环测试用的

B类地址:范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码。转换为2进制来说,一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。(2的16次方-2) 以子网掩码来进行区别:255.255.0.0 169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。

C类地址:范围从192-223,如192.168.1.1,第一,第二,第三段号码为网络号码,剩下的最后一段号码为本地计算机的号码。转换为2进制来说,一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。(2的8次方-2) 以子网掩码来进行区别: 255.255.255.0

D类地址:范围从224-239,D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 224.0.0.0-239.255.255.255 组播地址

E类地址:范围从240-254,以“11110”开始,为将来使用保留。 全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。 240.0.0.0-255.255.255.254 保留地址

子网掩码就是为了区分ip地址的中的网络号和主机号的。

私有地址 所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址 在A类地址中,10.0.0.0到10.255.255.255是私有地址 在B类地址中,172.16.0.0到172.31.255.255是私有地址。 在C类地址中,192.168.0.0到192.168.255.255是私有地址。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux网络IP协议
网络层是在复杂的网络环境中确定一个合适的路径. IP协议本质是提供一种能力,将数据跨网络从A主机传输到B主机。 前置认识
有礼貌的灰绅士
2025/04/23
1130
Linux网络IP协议
tcp/ip系列--IP协议
上一篇(tcp/ip系列--数据链路):https://blog.csdn.net/qq_19968255/article/details/83832035
Dlimeng
2023/06/29
2250
tcp/ip系列--IP协议
【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
那么网络层是如何进行数据传输的呢?通过网络层协议,这里介绍IP协议: IP协议下,主要包含两部分:
叫我龙翔
2024/10/24
3030
【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
TCP-IP详解卷1:协议 学习笔记(3) IP:网际协议
服务类型TOS字段包括一个3bit的优先权子字段(现在已经被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit都为0,就意味着是一般服务。
2019/02/25
1.1K0
Ip协议详解
Ip协议是Tcp/Ip协议中的核心协议,位于网络层,上层的tcp、udp、icmp等协议都要依靠它。 Ip协议提供了一种尽力交付、无连接的服务。不保证Ip数据包一定能到达目的地。
yifei_
2022/11/14
1.1K0
Ip协议详解
计算机网络基础知识整理「建议收藏」
公共电话网(PSTN网)和移动网(包括GSM和CDMA网)采用的都是电路交换技术,它的基本特点是采用面向连接的方式,在双方进行通信之前,需要为通信双方分配一条具有固定宽带的通信电路,通信双方在通信过程中一直占用所分配的资源,直到通信结束,并且在电路的建立和释放过程中都需要利用相关的信令协议。这种方式的优点是在通信过程中可以保证为用户提供足够的带宽,并且实时性强,时延小,交换设备成本低,但同时带来的缺点是信道利用率低,一旦电路被建立不管通信双方是否处于通话状态分配的电路一直被占用。
全栈程序员站长
2022/08/01
3.4K0
计算机网络基础知识整理「建议收藏」
【Linux】网络层协议:IP
1. 我们之前已经学习了TCP,当时我们在进行讲解时,是站在上帝视角直接说A主机将数据段发送到B主机,可是A主机真的是直接将数据段发送到对方吗?其实并不是,传输层的数据段是要向下交付到网络层的,那TCP究竟在数据网络传输的过程中扮演了什么样的角色呢?网络层的核心工作又是什么呢?我该怎样理解这两层协议栈呢?
举杯邀明月
2023/10/17
4350
【Linux】网络层协议:IP
【Linux网络编程】网络层 | IP协议 | 网段划分 | 私有IP和公有IP | NAT技术
在Linux系统中,可通过ifconfig来查看当前IP地址:(云服务器中查出来的是内网IP)
南桥
2025/01/14
3170
【Linux网络编程】网络层 | IP协议 | 网段划分 | 私有IP和公有IP | NAT技术
Linux网络-IP协议
网络层就是为了解决不同网络有不同的规范要求的差异问题,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求。也就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集
用户9645905
2022/11/15
4.2K0
Linux网络-IP协议
IP协议(网络)
主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称;
ljw695
2025/01/03
1270
IP协议(网络)
网络原理(四)——网络层协议
主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称;
海盗船长
2020/08/27
6900
详解 IP 地址
IP 地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的 32 位的标识符。IP 地址的结构使我们可以在互联网上很方便地进行寻址。IP 地址现在由互联网名字和数字分配机构 ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
wsuo
2020/07/31
2.4K0
详解 IP 地址
20张图说清楚 IP 协议
轻解网络系列又来了,今天咱们说说 IP 协议,这可是网络协议中最最核心的一个协议了,还记得我们刚刚知道什么是IP地址、怎么给电脑修改 IP 的时候吗?今天我们就来探究一下 IP 协议。
古时的风筝
2023/03/24
9800
20张图说清楚 IP 协议
【在Linux世界中追寻伟大的One Piece】网络层
网络层是计算机网络中的一个重要层次,它负责在多个网络之间传输数据包,并通过路由选择算法为分组通过通信子网选择最适当的路径。网络层的核心协议是IP(Internet Protocol),它提供了一种不可靠的端到端数据包传输服务,依赖于IP地址来实现数据的寻址和转发。网络层还包括其他协议,如ICMP(Internet Control Message Protocol)用于传递控制信息,以及IGMP(Internet Group Management Protocol)用于管理多播组成员。网络层使用的中间设备是路由器,它连接不同的网络并根据路由表转发数据包。
枫叶丹
2024/09/07
1160
【在Linux世界中追寻伟大的One Piece】网络层
linux网络编程之TCP/IP基础(三):IP数据报格式和IP地址路由
s1mba
2018/01/03
2.1K0
linux网络编程之TCP/IP基础(三):IP数据报格式和IP地址路由
IP协议和网络传输中的封装与分用。
关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析。 1、四层模型中的最下层是链
xcywt
2018/01/11
1.3K0
IP协议和网络传输中的封装与分用。
网络层:IP协议
不同于讨论TCP/UDP时只讨论通信主机之间的关系,在讨论IP协议中,会加上主机之间的网络来一起进行讨论分析。
二肥是只大懒蓝猫
2023/10/13
4800
网络层:IP协议
4.网络层-IP
网络层 1.作用 网络层控制子网的通信,通过路由选择算法为分组通过通信子网选择最适当的传输路径,实现流量控制、拥塞控制与网络互联的功能。 2.数据传输单元(PDU) 数据包(packet)或者是分组。 3.服务访问点(SAP) IP地址。 一、IP协议 1.简介 IP协议是无连接不可靠的网络层协议。 无连接:是指IP并不维护任何关于后续数据包的状态信息。每个数据包的处理是相互独立的。 不可靠:是指不能保证IP数据包能成功到达目的地,是一种尽力而为的传输服务,路由器对IP包错误处理方式
见贤思齊
2020/08/05
1K0
4.网络层-IP
计算机网络之网络层1 IP地址与MAC地址的关系2 ARP协议的作用,地址解析的过程3 IP地址的分类,每类地址的范围,给定IP地址能够判断属于哪一类4 IP数据报分片IP编址有类IP地址5 IP子网
1 IP地址与MAC地址的关系 MAC是身份证号码,用来识别网络设备本身 IP地址是居住地 2 ARP协议的作用,地址解析的过程 ARP协议作用 将主机的IP地址解析为相应的链路层的MAC地址 不管
JavaEdge
2018/05/16
3.4K0
【计算机网络】网络层学习笔记:总结IP,NAT和DHCP
啦啦啦321
2018/01/03
1.8K0
【计算机网络】网络层学习笔记:总结IP,NAT和DHCP
推荐阅读
相关推荐
Linux网络IP协议
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档