欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 网络层IP协议知识大梳理

网络层IP协议知识大梳理

2025/4/19 10:09:45 来源:https://blog.csdn.net/2301_82213854/article/details/147312587  浏览:    关键词:网络层IP协议知识大梳理

全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的IP协议笔记吧~

        自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多)

 

网路基础3


   网路层
   

        TCP并没有把数据发到网路里面,只是提供了可靠性策略。而IP协议的本质工作才是,提供一种能力,将数据跨网路从A主机送到B主机!用户需要的是:提供一种能力,将数据可靠地跨网路从A主机送到B主机。所以TCP提供策略,IP提供能力!

1.前置知识

        我们要传输数据,前提要对所有的主机进行标识,源IP和目的IP来标识源主机和目的
主机。IP地址=目标网路+目标主机。从A主机到B主机要经过许多路由器转发,根据IP地址先到达目标网路,然后再交给目标主机。构建网路的时候,为我们将来高速定位一台主机提供基础保证!!

2.IP协议的报头

      宽度为0~31,4个字节,标准长度为20个字节。与TCP类似。
        如何理解IP报头呢?本质就是结构体,填字段

问题1:报头和载荷如何分离?
   

        报头标准长度有20字节,数据包括有http的报头,TCP的报头和用户数据,通过固定报头+自描述字段(4位首部长度(如果超过20字节就是选项的了),总长度(总长度-4位首部长度=数据))。 
TCP协议段格式:


  TCP协议也有4位首部长度
        都代表着:如果该位置的值是x,那么x*4就是真实报头。4位首部长度范围在【0000,1111】即0到15,因为至少有20字节,所以在【5,15】,所以真实报头大小为【20,60】
 
        IP地址有2^32个,对于IP地址不足,有NAT,IPv6。

        IP有自己总长度,而TCP没有。说明UDP,TCP最后都要把数据交给IP层,字节流服务也好,面向数据报也罢,将来在IP层发的都是数据报。所以TCP的字节流的概念,是TCP提供给应用层,应用层所关注到的概念。
        8位生存时间:当把IP报文转发出去(路由器之间的转发)的时候,因为有一些原因(网络有bug之类),导致IP报文被一直转发 


问题2:如何将有效载荷交付给上层?

答:8位协议:我们要把IP的有效载荷交给上层的哪个协议(TCP/UDP)

16位首部校验和:IP要对首部做校验,校验失败的首部直接丢弃,由发送方TCP直接传送。校验成功才可以向上交付

        结论:socket: IP + port。端口号是给TCP去用的,IP 是给IP层去用的。 有目的IP地址和目的端口号,就可以向目标位置发送报文了。用源端口和目的端口填充TCP报头,用源IP地址和目的IP地址填充IP报头。

        为什么要把点分十进制IP转为4字节IP?
        因为IP报头的源IP地址和目的IP地址是4个字节,在真正路由的时候,根据目的IP地址来进行路径选择。在通信的时候,只工作在网络层,没有传输层 
 

网段划分(重要)

     


         网络号和主机号很好理解

1.    路由器本质上也是特定一个子网的主机,也要配置IP地址
2.    路由器可以实现跨网段传发,至少要连接2个子网,相当于同时在2个子网。所以路由器一定要配置多个IP.(认为路由器有多张网卡就行了)
3.    路由器一般是一个子网中的第一个设备,一般它的IP地址都是:网络号. 1
4.    路由器的功能,IP报文的转发,但不仅仅如此~,还可以构建子网(局域网) 

一开始因为ip地址只有32位,大概42亿多,是不够用的。 

 ,分类划分法这种方法会存在IP地址严重浪费的问题。
针对这种情况提出了新的划分方案,称为CIDR(Classless Interdomain Routing):
 
 

子网掩码的特点:


   子网掩码左侧为1,右侧为0.将IP地址与网络掩码 & 就可以得到网络号。因此我们可以提供调整子网掩码1的个数来调整网络IP中主机号的多少~
        子网掩码在路由器里面配置的。

 140.252.20.0 为网络号,140.252.20.255 为广播。这两个主机不用

        子网掩码可以对IP 32位任意划分。 
  
子网掩码的书写:  

特殊的IP地址

IP地址的数量限制
 
 


动态内存分配IP地址,用的时候给你,不用的时候释放给别人用。相当于共享机制。
真正变革的技术IPv6:128位,即:2^128个IP地址


私有IP地址和公网IP地址
 

IP地址被划分为:公网IP 和 私有IP。

理解运营商和全球网络理解

 

         我们是怎么上网的?

        运营商的工作人员先让光纤入户,然后要有2个设备,一个是调制解调器(猫),第二个是家用路由器。路由器有俩套账号和密码,一套是交钱提供上网服务的(给运营商);一套是给路由器加密的(给自己),防止别人蹭网。国家 大力 发展互联网,加大了网络基础设施建设。之前流量费非常贵,现在流量费非常便宜了。目的是让更多的人入网,

全球互联网:
        IP地址是一份很大的资源,从大区域进入小区域,最后到达目的主机。我们的网络被精心设计过的。

公网和私网有什么关系的?
   

        当目的IP不在当前网时要通过路由器进行寻找,直到找到目的主机。然后该主机会将源IP地址和目的IP地址转换,导致原来的私有IP变成了目的IP地址。因为私有IP不能出现在公网上的,所以该数据就回不来了!!! 
 

 我们应该怎么解决这样的问题呢?

        所以当IP地址要经历路由器的时候,将源IP地址替换成每一个路由器的WAN口IP,即报文的替换。所以私有IP地址不断被替换的过程,我们叫做NAT技术(主要解决IP地址不足的问题)

我们为什么要使用私有IP而不直接使用公用IP呢?
 

          原因是到达底层的区域的时候,IP地址已经严重不足了,不能够满足如此多的数量。
所以公网IP用在庞大的路由器里面,例如:国家,省份,城市。而私网IP地址用在小区域里面,例如:西安内部的网络 全都用私网。

所以:互联网=公网+私网~
 


路由器可以构建子网,路由器有Lan口IP和WAN口IP。家用路由器理解上和运营商的路由器性质是类似的。

为什么私网有那么多的类型呢? 

        如果子网覆盖得比较大,我们可以用第一种:10.*的可以有更多地址,其次是第二种,第三种。根据不同的情况选择不同的类型。

我们可以通过IP地址前几位,区分是在哪个区域,通过前面的数字就可以找到该IP的具体区域了。

大公司的IP是这样的(私有IP+公网IP)吗?
   也是类似的

为什么要这样呢?原因是IP地址不足


路由

 本地的主机也可以工作在网络层,也有掩码。查路由表的方式:拿着目标主机的IP & 掩码,如果结果等于目标网络,就通过该接口发出去。如果不等于就找下一个 

查路由表的结果:

1.    给你具体的下一跳
2.    路由器不清楚是去哪一跳,但是传入默认路由(告诉你别的可能知道的)一般是同网段的另一台路由器,所以目标IP不在目前内网中。默认路由是出口路由器,即通向另一个更大的网段。
3.    到达入口路由器

结论:因为IP=目标网络+目标主机,我们在进行转发的时候,我们先到达目标网络。
 

 
        我们转发的目的地址为192.168.56.3,先拿其与掩码&,得到192.168.56.0,与第一行地址作对比,不同下一个。发现与第二个相同,就会跳向0 eth1.所以IP路由的过程,就是逐个查路由表的过程。


我们再来看看IP协议的报文

        实际上,在一台主机中,报文并没有通过网络层直接发出去,而是继续交给了下一层协议(数据链路层)
 ,数据链路层(属于网卡的驱动层),不能一次发送过大的报文!所以要求上层不能给我交付过大的报文!这就是为什么TCP要发一个一个的报文,而不是全部都发过去。假如IP报文就是很大,就要求IP成进行分片转发。

IP不光要考虑分片,未来也要组装。 这行报头维护 IP的分片和组装字段。

16位标识:
     不同的IP报文有不同的标识
 

3位标识(更多分片): 
 
13位片偏移:目的要把之前发的片组装在一起

如何组装呢?
 
1.    确保将分片全部都聚在一起(相同的标识)
2.    通过片偏移进行排序(完成排序)

前置问题:你怎么知道一个IP是被分片了呢?
        如果没有分片,片偏移=0,更多分片=0。当我们发现 片偏移!=0 或 更多分片==1 (就分片一个)就说明分片了!

如果分片丢失了呢?

1.    丢第一个  收到的众多被分片的报文中,没有一个片偏移为0,就说明是丢第一个
2.    丢中间  让报文的长度与报文的片偏移做比较,如果差了超过一个报文的长度就说明丢中间了
3.    丢最后一个  所有的报文中,在3位标记的第三个都标记为1,就说明是最后一个


我们不建议分片!可能增加丢包概率,在IP中如果任何分片丢失,都要进行重发。


分片过程用数据举例:
   假如报文有3000字节,报头有20字节。我们要对它进行分片,前提:每个分片必须要带报头,因为报头有标识,更多分片,片偏移的字段,少了这些无法组装。我们先分1500,然后把20字节的报头和后面的1480数据组成新的1500字节的分片,最后还剩20字节,再和20字节结合,形成40字节的分片。
 ,然后再进行组装

请你帮我解释一下:
  一个http请求,从服务器发出到你拿到响应的整个过程

   从应用层request和response 谈,request和response都是数据要交给TCP,交给TCP就会面临可靠性,拥塞控制,流量控制,面向连接,丢包重传的问题,如果再想谈,TCP报文向下传到IP,又会涉及路由问题,分片问题。细节谈的越多越说明你越厉害~

下篇文章我将更新——数据链路层~期待你的关注👉【A charmer】

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词