Linux网络 - 网络层

我们产生的报文会从发送缓冲区通过对应的传输层协议封装,此时可以通过报头来知道是主机的哪个端口。此时会将封装好的报文继续往下传递,通过网络层解决发送到哪个主机的问题。

IP = 目标网段+目标主机

我们以IPv4的网络报头来进行讲解

IP报头

这是IPv4的

IPv6的IP地址是128位,由20字节固定字段变为40字节的固定字段

4位版本

区分是IPv4还是IPv6

4位首部长度

IP头部是多少字节。和TCP的报头一样,最短是5*4=20字节,最长是15*4=60字节

8位服务类型

3位优先权字段(已经弃用),4位TOs字段,和1位保留字段(必须置为0).4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本.这四者相互冲突,只能选择一个.对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要

16位总长度

IP数据报整个占多少字节

16位标识

IP报文如果过长会进行分片,分片后为了区分是否是同一个报文的,会有标识,同一个报文的分片标识相同。

3位标准字段

第一位现在不用。第二位1标识禁止分片,如果长度超过限制就会被丢弃,因为无法分片。第三位标识更多分片,如果分片了话,最后一个分片置为0,其他的置为1

13位分片偏移

是分片在原报文里面的片偏移。

因为下一层数据链路层只会发送小于等于MTU(1500)的报文长度,所以会在IP层对可以分片的进行分片,不能分片的丢弃。

8位生存时间

数据报到达目的地的最大报文跳数,一般经过一个路由器次数就减一,一般是64,如果减到零还没到达就会舍弃,这个是为了防止路由循环。

8位协议

标识上层协议的类型

16位头部校验和

校验头部是否损坏

32位源地址和32位目的地址

表是发送端和目的端

选项字段

最多40字节

网段划分

IP地址分为 网络号+主机号

网络号相当于不同地区,主机号是不同地区的具体实体

路由器有DHCP技术,自动给网段里面新加入的电脑分配IP

将IP地址分为五类

五类IP

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

这个分法也出现了问题,A、B类的网络号很少,导致会很快分完。且一个网络号很多的主机号,产生很多的浪费。

针对这个情况,出现了

子网掩码(CIDR)

使用一个32位的整数来表示子网掩码,通常是由连续n个1标识网络号,连续(32-n)个0标识主机号。通过按位与操作得到的就是网络号

可见让IP地址与上子网掩码得到的就是网络号,然后让0的部分从0增到全1就是主机号的范围

IP地址加子网掩码还有更简洁的标识范围,例如140.252.20.68/24,表示IP是140.252.20.68,子网掩码高位24个1,低位8个0

子网掩码相当于是对网络号进行更细致的划分

特殊的IP地址

将主机地址全部设置为0,就成了网络号,代表这个局域网

将主机地址全部置为1,就成了广播地址,用于给链路中的所有主机发送数据报

127.*的用于网络环回,通常是127.0.0.1

IP地址的数量限制

我们知道,ip地址就只有32位整数(IPv4),那么就一共只有2^32,差不多43亿个,这意味着最多只能接入43亿的设备?

主要用三种方式来解决或缓解

动态分配IP地址,只有接入到网络里面的设备才会为其分配IP,同一个MAC地址的设备,接入网络里面的IP是不同的。

NAT技术(后面说)

IPv6 将IP地址扩展到128位,这样就根本用不完了。

私有IP地址和公网IP地址

私有IP

私有IP是用于公网IP内部使用的IP,一下的网络字段是私有IP

10.*,前8位是网络号,共16,777,216个地址

172.16*到172.31,前12位是网络号,共1,048,576个地址

192.168.,前16位是网络号,共65,536个地址

一个路由器它会有两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)

路由器的LAN口ip属于自己子网内的IP

不同路由器,子网IP都是一样的,使用私有地址,通常是192.168.1.1,子网内主机IP地址能重复,但是子网间IP可以重复

NAT

这个路由器,又会作为上级网络的一个主机,此时使用WAN口IP作为主机的IP。但私有IP是无法进入公网的,私有IP在各个子网都有使用,因此在报文传到路由器的时候,会进行地址转换,将私有IP转成这个路由器的WAN口IP,通过这种逐级替换,最后走到公网的过程就叫做NAT

返回数据要怎么转换呢?路由器内部会有一个NAT映射表,存储了要发送的内网ip+port和公网ip+port(即要访问的主机),返回时就会去查找这个映射从而返回到私网

因为有大量私有IP的使用,这基本解决了目前IP地址不够用的情况。

公有IP

公有IP是各个人已知的IP,全球独一份,我们可以持有公网IP加端口号访问到这个服务器。公网IP之间是可以直接通信的,我们也必须借助公网IP才能进行通信,私有IP无法进行通信,NAT技术也是必不可少的。

内网穿透

如果两个主机之间要建立数据交互,不借助公网的服务器是无法实现的。那么内网穿透就是让两个私网的主机同时连接一个公网的服务器,服务器通过两个私有主机身份匹配(看是不是你们两个要通信),如果是就会做一个传话筒帮你传数据。

更有甚者,可以直接尝试让双方进行公网IP的连接,如果连接成功,完全就不需要服务器的传话筒了。

相关推荐
j_xxx404_2 小时前
Linux:命令行参数与环境变量
linux·运维·服务器
Teame_2 小时前
渗透课程学习总结
网络·安全·web安全
j_xxx404_2 小时前
Linux:进程虚拟地址空间|虚拟内存管理
linux·运维·服务器
江畔何人初2 小时前
pod的定义以及创建过程
linux·运维·云原生
德尔塔大雨淋2 小时前
VLLM 中的module PASS 和FUN PASS
linux·服务器·vllm
千寻技术帮2 小时前
10404_基于Web的校园网络安全防御系统
网络·mysql·安全·web安全·springboot
末日汐2 小时前
linux线程
linux·运维
玉梅小洋2 小时前
CentOS :yum源配置及验证指南
linux·运维·centos·yum
沐芊屿2 小时前
华为交换机配置M-LAG
服务器·网络·华为