当前位置:首页>Linux>Linux网络---网络层

Linux网络---网络层

  • 2026-08-27 04:42:40
Linux网络---网络层

一、预备知识

1.理解传输层和网络层

网络层所处的位置
在之前的学习中为了方便我们画的传输图是下边这样的
实际上是下边这样的

2.IP协议的核心作用和构成

核心能力:具有将数据从A主机跨网络传输到B主机的能力,但是有能力不一定百分之百能传输成功.
所以要保证百分百能够传输成功,这时候就要用到我们之前学过的TCP协议了,TCP协议设计了大量的保证能够重传的机制,所以在TCP/IP协议中TCP保证了数据百分百能够送达目标主机,而IP保证了能够找到目标主机,TCP提供的是策略,IP提供的是能力,两者结合保证了报文能够百分百传输到目标主机。
既然要从一台主机将数据送到另一台主机,所以必须要有方式标识通信两端的主机的唯一性!!!IP协议解决的就是主机到主机的问题。
而TCP解决的是进程到进程的问题,有端口号。

二、IP协议的报头

1.IP报头

IP报头的本质是一个结构体
struct iphdr {
#ifdefined(__LITTLE_ENDIAN_BITFIELD)
__u8 ihl:4,
version:4;
#elifdefined (__BIG_ENDIAN_BITFIELD)
__u8 version:4,
ihl:4;
#else
#error"Please fix "
#endif
__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__u16 check;
__be32 saddr;
__be32 daddr;
/*The options start here. */
};
AI写代码
cpp
运行

2.4位首部长度

4位,0000->1111:[0,15],但是标准报头就有20个字节,显然是不对的;
有一个规定,4位首部长度中的单位是4字节;
所以范围是[0,60]字节,因为报头最低长度是20字节,所以真正的范围是[20,60];
对应的4位首部长度:[5,15]:0101->1111

2.16位首部长度

16位首部长度=报头+数据

3.8位协议

表明上层协议是什么(TCP或UDP)

4.4位版本

IPV4或者IPV6
绝大部分是IPV4,因为IPV4和IPV6是不兼容的,所以要转换成IPV6很麻烦,所以现在的主流是IPV4

5.8位服务类型

8位服务类型(Type Of Service): 3位优先权字段(已经弃⽤), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表⽰: 最⼩延时, 最⼤吞吐量, 最⾼可靠性, 最⼩成本. 这四者相互冲突, 只能选择⼀个. 对于ssh/telnet这样的应⽤程序, 最⼩延时⽐较重要; 对于ftp这样的程序, 最⼤吞吐量⽐较重要.

6.8位生存时间

由于网络的飞速发展,现在的网络拓扑结构已经非常复杂了,在传输的过程中很容易传错地方,从而引发环路转发问题。
那么什么是环路转发问题呢?
简单来说就是传输形成了一个圈,A->B->C->A... 这样就没完了
图解
从A主机到B主机正常情况
从A主机到B主机异常情况
环路转发的后果?
在网络传输过程中信号会经过硬件设备放大,如果发生环路转发那么这个信号就是不死不灭的,时间长了,会造成网络拥堵。
如何解决?
TTL:数据报到达⽬的地的最⼤报⽂跳数. ⼀般是64. 每次经过⼀个路由, TTL -= 1, ⼀直减到0还没到达, 那么就丢弃了. 这个字段主要是⽤来防⽌出现路由循环

7.16位首部校验和

在转发的过程中会出现比特位翻转等问题,所以需要进行校验

8.32位源/目的IP地址

表⽰发送端和接收端.

三、子网划分

1.什么是子网?

把一个完整的 IP 网络,逻辑切分成的多个更小、独立的网络段,每个段就是一个子网,各子网可独立管理、通信。

2.什么是子网划分?

通过子网掩码,将一个大的 IP 网络逻辑拆分出多个子网的操作,核心是借用 IP 地址的主机位当作子网位,实现网络的精细化划分。

3.为什么要子网划分?

就是快,划分之后,查找一次淘汰一大批不对的网络号。

4.如何进行子网划分?

IP=网络号+主机号
以这张图为例:
src:192.168.128.10
dst:192.168.144.11
发送方识别本地网络号和目的网络号不同直接去找路由器了,路由器一般有两个或更多网络号,它一看这个目的网络号跟它的另一个网络号相同,于是就转发过去了,再根据主机号找到目标主机就行了。

四、划分方法

1.分类划分法

A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255
IP地址是有限的,大家都要抢,比如B类IP能够分成2^14个,各方运营商抢这写网络号。
为什么要抢呢?
因为抢到了就可以搭建自己的子网,抢不到就搭建不了。
这种分类方法还在用吗?
很少用了!随着网络的发展,IP地址很快就不够用了,这种分类方法比较粗糙,导致了资源的浪费。
这种分类方法是如何浪费资源的?
你获得了一个网络号,这种分类方法的网络号和主机号的长度是固定的,如果你根本用不了这么多主机号,那么就有很多的主机号就浪费了。
比如说你申请到了一个B类地址,但是你只需要2^6台主机,那么你就有2^8-2^6个主机号浪费了。

2.引入子网掩码

子网掩码是做什么的?
由于分类划分法会导致大量的IP地址浪费,所以引入了子网掩码来增加IP地址。
子网掩码是如何提高IP地址利用率的?
比如你申请了一个B类网络号,如下图
但是我只需要下图所示的主机
所以将IP&子网掩码得到下图
这样就是实现了对IP资源的利用率
子网掩码是如何进行划分的呢?
答案就在这张图里边,A类中前八位是不能动的,B类中前十六位是不能动的,C类中前二十四位是不能动的。所以需要根据类来分别设置子网掩码来控制网络号。
看两个例子:
这个很简单,就是IP和子网掩码相与得到网络号的长度,而子网掩码还有255个还没有用,所以子网范围就是图上的那个。
子网掩码只是提高了IP的利用率,而并没有增加IP的数量,那么我们怎样解决IP数量不足的问题呢?
实际上, 由于⼀些特殊的IP地址的存在, 数量远不⾜43亿; 另外IP地址并⾮是按照主机台数来配置的, ⽽是每⼀个⽹卡都需要配置⼀个或多个IP地址.
CIDR在⼀定程度上缓解了IP地址不够⽤的问题(提⾼了利⽤率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够⽤. 这时候有三种⽅式来解决:
  • 动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;
  • NAT技术(后面会重点介绍)起主要效果;
  • IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及;
私有IP地址
10.*,前8位是⽹络号,共16,777,216个地址
172.16.*到172.31.*,前12位是⽹络号,共1,048,576个地址
192.168.*,前16位是⽹络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公⽹IP);
我们平常接触的是什么IP?
我们接触的不是公网!,我们接触的是内网、局域网、子网。

五、网络传输

网络传输过程

如图,本地主机先判断目的IP是不是和本地IP网络号一样,一样直接通过子网传输,不一样就传输到运营商路由器进行转发。
为什么内网IP不能出现在公网上?
因为内网IP可能重复,发出去目标主机找不到源主机。
既然内网IP不能出现在公网上,那发送报文源端口怎么填?
没经过一个内网路由器,进行源IP替换,替换成当前路由器的wan口IP。
以上图为例,src:192.168.1.201 dst:122.77.241.3
src判断dst不在本子网内,通过家用路由器进行转发并将源端口IP替换成wan口IP:10.1.1.2,传输到运营商路由器,将源IP替换成wan口IP:122.77.241.4,然后在公网中找到目的IP所对应的主机进行发送。
那怎么回来啊😂?
这份工作是通过NAT来进行的,所以我们先不讲,后边我会专门写一篇文章进行超级详细的讲解,点个关注包你学会。
目前你只需要知道他一定能回来就行啦。

六、公网

对公网的理解?
公网IP是全球共用的,各个国家的运营商需要主动申请,运营商不仅要组件内网,还要组件自己国家的公网环境,一个区域究竟能有多大的网络,取决于自己有多少个公网IP。
注意:分配公网IP的事情,不是简单的按照国家为单位的,而是按照网民数量进行划分。
地区或国家IP的分布:https://zh-hans.ipshu.com/country-list
在传输的过程中都会查表,直接传输到目的地址。

七、路由

在复杂的⽹络结构中, 找出⼀条通往终点的路线
路由的过程, 就是这样⼀跳⼀跳(Hop by Hop) "问路" 的过程.
所谓 "⼀跳" 就是数据链路层中的⼀个区间. 具体在以太⽹中指从源MAC地址到⽬的MAC地址之间的帧传输区间.
IP数据包的传输过程也和问路⼀样.
  • 当IP数据包, 到达路由器时, 路由器会先查看目的IP;
  • 路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
  • 依次反复, 直到到达目标IP地址;
  • 路由表可以使用route命令查看
  • 如果目的IP命中了路由表, 就直接转发即可;
  • 路由表中的最后⼀⾏,主要由下⼀跳地址和发送接⼝两部分组成,当目的地址与路由表中其它⾏都不匹配时,就按缺省路由条⽬规定的接⼝发送到下⼀跳地址。
假设某主机上的⽹络接⼝配置和路由表如下:
• 这台主机有两个⽹络接⼝,⼀个⽹络接⼝连到192.168.10.0/24⽹络,另⼀个⽹络接⼝连到
192.168.56.0/24⽹络;
• 路由表的Destination是⽬的⽹络地址,Genmask是⼦⽹掩码,Gateway是下⼀跳地址,Iface是发送接⼝,Flags中的U标志表⽰此条⽬有效(可以禁⽤某些 条⽬),G标志表⽰此条⽬的下⼀跳地址是某个路由器
转发过程例1: 如果要发送的数据包的⽬的地址是192.168.56.3
• 跟第⼀⾏的⼦⽹掩码做与运算得 到192.168.56.0,与第⼀⾏的⽬的⽹络地址不符
• 再跟第⼆⾏的⼦⽹掩码做与运算得 到192.168.56.0,正是第⼆⾏的⽬的⽹络地址,因此从eth1接⼝发送出去;
• 由于192.168.56.0/24正 是与eth1 接⼝直接相连的⽹络,因此可以直接发到⽬的主机,不需要经路由器转发;
转发过程例2: 如果要发送的数据包的⽬的地址是202.10.1.2
• 依次和路由表前⼏项进⾏对⽐, 发现都不匹配;
• 按缺省路由条⽬, 从eth0接⼝发出去, 发往192.168.10.1路由器;
• 由192.168.10.1路由器根据它的路由表决定下⼀跳地址;
完

>>想入行网络安全怎么学?

>>非本专业、不懂英语能不能学?

全网应该没有比我更全面的了!本人在安全圈待了十多年,现将自己积累的所有内容浓缩成了一个282G的完整资源包,包含了市面上主流的攻防技术!没耐心看完的可以直接去片尾拿,不管你是本专业出身还是完全0基础小白,都能给你提供网络攻防的学习方向,帮你轻松入门!  

 🔥学习资源 

完整学习路线,可在公众号后台领取

「视频教程 + 书籍文档 + 工具安装」

「网络安全工程师」就业速成计划

👇👇

最新黑客/网络攻防技术资料预览
01

视频教程

这里是我亲自录制的190节从零基础到精通的视频教程以及配套学习资料(包含红蓝对抗、CTF、HW等技术点)无偿分享给你!  

02

书籍Pdf

入门必看攻防技术书籍pdf(书面上的技术书籍确实太多了,这些是我精选出来的)

03

安装包/源码

主要攻防会涉及到的工具安装包和项目源码(防止你看到这连基础的工具都还没有)

04

面试试题/经验

网络安全岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

06

漏洞挖掘文档

100份SRC漏洞挖掘技术文档,TOP10漏洞复现,教你手把手挖到人生第一个漏洞!

网安资料

文末自取

只要你是真心想学黑客/网络安全技术,我这份资料就可以无偿共享给你学习,扫描下方图片直接领取!

但是想学技术去乱搞的人别来找我,目前全球网络环境日益紧张,我国在这方面的相关人才比较紧缺,网络安全行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术。

 🔥学习资源 

完整学习路线,可在公众号后台领取

「视频教程 + 书籍文档 + 工具安装」

「网络安全工程师」就业速成计划

👇👇

👆🏻点击上方卡片回复“111”即可领取

01
为什么分享这些资料?

只要你是真心想学黑客/网络安全技术,我这份资料就可以无偿共享给你学习,但是想学技术去乱搞的人别来找我,目前全球网络环境日益紧张,我国在这方面的相关人才比较紧缺,网络安全行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有啥学习上的问题,欢迎找我交流...

02
这些资料真的有用吗?

我从业网安行业多年,找出过很多大型网站和系统的漏洞,从大厂白帽子到后来带过很多学员打过众多网络攻防比赛,并取得第一第二的成绩,你很难想象曾经的我也是靠自学走过来的,这份资料是我多年来持续的网安经验的积累,从入门到进阶的各类视频教程和工具资源都比较全面,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你成为一名优秀的白帽子黑客。

所有自学黑客技术/网安需要的资料无偿分享

(视频教程/学习路线/书籍Pdf/工具安装包等)

希望大家能把技术用在正道上!

最新文章

随机文章