Linux网络——网络层

本文深入解析网络层的核心概念,包括IP地址的分类与子网掩码的应用,探讨了动态IP分配、NAT技术和IPv6的演进,以及私有IP和公网IP的区别。同时,介绍了路由的基本原理和路由表的生成算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

终于来到了网络层,这一层就好好熟悉我们经常见到的IP地址。

目录

一、功能

二、IP协议格式

三、IP地址

IP地址

五类IP地址

⼦网掩码

IP地址的进阶技术

私有IP地址和公网IP地址

四、路由


一、功能

网络层的功能主要在于路由功能,路由就是路径选择,也就是为数据包在复杂的网络环境中找一条合适的路径。

例如,某市的A大学的G同学和B大学的M同学在异地恋,每个周末G同学都会去找M同学,从A大学到B大学有很多条路:

①公交->地铁->出租

②地铁->蹦蹦->公交

③出租-->公交

所以这三条路径可以选择其中一条合适,时间短的,便宜的路径到达B学校。

在本节我也弄一写协议:

把具有ip地址但是不自己进行路由选择的设备称为主机;

把具有多个ip地址的且进行路由选择的设备称为路由器

把路由器和主机统称为结点

二、IP协议格式

  1. 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4,对于IPv6来说就是6,4位最大为15。
  2. 4位头部⻓度(header length):单位是 4 字节,和前面的TCP头部长度是一样的,计算方式一样,结果也是一样,因为都有一个不确定长度的选项,所以头部长度最大是60字节。4bit表⽰最大的数字是15,因此IP头部最⼤⻓度是15 * 4字节。
  3. 8位服务类型(Type Of Service): 3位优先权字段(已经弃⽤),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示: 最⼩延时、最⼤吞吐量、最⾼可靠性、最⼩成本。这四是互斥的,只能选择一个,就行迪迦奥特曼的三个形态,虽然能切换,但是只能每次保持一个形态战斗,不能同时是力量型也是迅捷型。这四个里面,对于ssh/telnet这样的应⽤程序,最⼩延时⽐较重要;对于ftp这样的程序,最⼤吞吐量⽐较重要。
  4. 16位总⻓度(total length):IP数据报整体占多少个字节。最多65535字节。
  5. 16位标识(id): 唯⼀的标识主机发送的报⽂,如果IP报⽂在数据链路层被分⽚了,那么每⼀个片里面的这个id都是相同的。至于为什么会分片,这就和链路层的MSS有关了。
  6. 3位标志字段:第⼀位保留(保留的意思是现在不⽤,但是还没想好说不定以后要⽤到),第⼆位置为1表⽰禁⽌分⽚,这时候如果报⽂⻓度超过MTU(链路层的概念,数据帧的一个大小限制),IP模块就会丢弃报⽂。第三位表⽰"更多分片", 如果分片了的话, 最后⼀个分⽚置为1, 其他是0,为0的就说明这是最后一个片,类似于⼀个结束标记。
  7. 13位分⽚偏移(framegament offset):是分⽚相对于原始IP报⽂开始处的偏移,其实就是在表示当前分片在原报⽂中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的,因此, 除了最后⼀个报⽂之外,其他报⽂的⻓度必须是8的整数倍(否则报⽂就不连续了)。
  8. 8位⽣存时间(Time To Live,TTL):数据报到达目的地的最⼤报⽂跳数,⼀般是64. 每次经过⼀个路由, TTL -= 1, ⼀直减到0还没到达, 那么就丢弃了,这个字段主要是⽤来防⽌出现路由循环 。这个就类似与六度空间理论:你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个中间人你就能够认识任何一个陌生人,例如你和你的偶像,你就可以在你朋友的朋友的朋友的朋友的朋友之内就有的偶像。
  9. 8位协议:表示上层协议的类型。
  10. 16位头部校验和:使⽤CRC进⾏校验,来鉴别头部是否损坏。
  11. 32位源地址和32位目的标地址:表示发送端的IP地址和接收端的IP地址。
  12. 选项字段(不定⻓, 最多40字节):因为头部最长60字节,前面是固定的20字节,所以最多40字节。选项内容就太多了。

三、IP地址

  • IP地址

我们看到的IP地址是一个点分十进制的四个字节的整数,其实它就是一个4字节的二进制数。

IP地址由两部分组成,第一部分是网络号,标识一个网段;第二部分是主机号,标识一个主机。同以网段内的主机具有相同的网络号,但是主机号不同,这样在同一网段内就能有不同的地址,不同网段内也是不同的地址。

由于⼿动管理IP不方便,因此有⼀种技术叫做DHCP,能够⾃动的给⼦网内新增主机节点分配IP地址,避免了。

⼀般的路由器都带有DHCP功能,因此路由器也可以看做⼀个DHCP服务器。

特殊的IP地址:0.0.0.0这个IP地址是一个保留地址,就是本网络,这个在链路层的arp协议中会涉及到。

网络号127为的作为本地软件的换回测试,就是用于主机上进程与进程之间通信用。

  • 五类IP地址

在曾经网络还不是很发达的时候,网络中的主机数量层次不齐,有的网络的主机很多,而有的网络的主机则很少。于是更好的满足用户的需求,于是诞生了五类IP地址。

IP地址指派范围
网络类别最大可以分配的网络地址数量第一个可以分配的网络号最后一个可以分配的网络号网络中最大可以有多少个主机
A126(2的7次方-2)(0和127不能用)112416777214
B16383(2的14次方-1)(0不能用)128.1191.25565534
C2097151(2的21次方-1)(0不能用)192.0.1223.255.255254

随着Internet的高速发展,B类的IP地址很快被分配完了,因为大部分单位的主机都是大于254台的,所以B类的主机非常合适。虽然提供了这五类的IP地址满足了用户的需求,但是却又极大的浪费,例如哪个单位会有1677万个主机,所以A类IP地址非常浪费。于是针对这种浪费提出了子网掩码这一概念。

  • ⼦网掩码

⼦网掩码(subnet mask)用来区分网络号和主机号,也是⼀个32位的正整数,通常⽤⼀串 0 来结尾,0 前面的位则全是1 。将IP地址和子网掩码进⾏ "按位与" 操作,得到的结果就是网络号。于是就没有了上面的五类IP地址了。

下面说一个例子来理解这个操作。

IP地址192.168.121.12111000000.‭10101000‬.‭01111001‬.‭01111001‬
子网掩码255.255.255.0‭11111111‬.‭11111111‬.‭11111111‬.0
网络号192.168.121.011000000.‭10101000‬.‭01111001‬.‭0
主机号2 ~ 254‭00000010 ~ 11111110‬(如果是0就成了网络号,1是网关用的,255则变成了全1成为子网掩码)

后面写IP地址就会在后面把子网掩码带上,方便求出网路号。如上面的IP地址就是:192.168.121.121/24(一共是24个1)

网关:标识着这个网段,它是一个子网到上层网络的通道

网络不仅在发展,电子产品也在发展,IPv4是一个32位的无符号数,最左也就42亿九千万,现在国家在发展,经济在发展,现在每个人最少也是一个手机,一个电脑,还不说一个单位的服务器什么的。这需求量根本不是42亿九千万就能解决的。

正所谓“兵来将挡,水来土掩”,于是就有了下面三种方法。

  1. 动态IP分配
  2. NAT技术
  3. IPv6
  • IP地址的进阶技术

1、动态IP分配

有人干活就有人休息,于是动态IP地址分配就是只给上网的人分配地址。

于是同一个主机设备,在不同时间连入互联网,IP地址是不一样的。

2、NAT技术

NAT,即:Network Address Translation。网络地址转换技术。这个就是说,路由器中的每个网段的所有主机,都共享该网段的一个IP地址,于是网关的作用,就出现了。网关标识着这个网段,网段里面的主机的IP地址都在这个网段内。路由器还有一个接口是连接公网的。所以这些主机通过这个路由器来进入公网。

 

但是我们这样的话会带来一个问题。

 

但是这样还是存在一个问题,如果相同网段下的主机都发送消息,那路由器收到的消息怎么确定是哪个主机呢?

 

其实在路由器转换地址的时候会给每个IP加上一个端口,这样在收到的时候,就可以根据端口,再返回给主机

 

这就是NAT转换的流程,上面记录转换的端口,地址的叫做地址转换表。

3、IPv6

IPv6⽤16字节128位来表⽰⼀个IP地址,这样就有无数个IP地址,传言IPv6可以为地球上的每一粒沙子都分配一个IP地址。

IPv6并不是IPv4的简单升级版,这是互不相干的两个协议,彼此并不兼容。

由于IPv4有了良好的解决IP地址不够用的方案,所以一开始的程序都是用的IPv4。如果现在要升级成IPv4的话,要花费很多的财力和人力,所以目前前IPv6还没有普及。

  • 私有IP地址和公网IP地址

在前面的简单模型上,就可以看到着两个概念的影子。

私有的IP地址,就是局域网内的;共有IP地址就是互联网上的。

也就是或私有的IP地址是可以自己分配的,公网IP地址则是运营商给的。

官方规定组建局域网的IP地址格式如下:

10.*,前8位是网络号,共16777216个地址

172.16.到172.31.,前12位是网络号,共1048576个地址

192.168.*,前16位是网络号,共65536个地址包含在这个范围中的,都成为私有IP,其余的则称为全局IP(或公网IP)

四、路由

将前面的技术结合起来便为路由搭建好了基础。

说一个简单的例子就可以认识到路由了——《西游记》

在前面说是路由选择的过程,路由器中有一个路由表,里面记录着可以到达的地方的IP地址,所以每当数据报到达路由器,都会将数据中的目的IP与路由便里面的数据进行比较,如果符合就直接发给目的主机,如果不符合,在最后一行有一个有一个缺省网络,然后发给这个缺省的网络地址处,这个缺省网络其实就是路由器的网关,也就是它的上层网络,上层网络肯定知道这个IP地址是去哪的,如果它也不知道,它还有上层呢,直到交付的公网。

其实路由器中还有很多路由表生成算法,会自己没事的时候,就会去认识朋友、朋友的朋友,这样路由便表上就更加详细,就会大大增加路由选择的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值