56 网络层

news2024/11/24 17:21:20

本节重点

理解网络层的作用,深入理解IP协议的基本原理
对整个TCP/IP协议有系统的理解
对TCP/IP协议体系下的其他重要协议和技术有一定的了解

目录

  1. 前置认识
  2. ip协议
  3. 基本概念
  4. 协议头格式
  5. 网段划分
  6. 特殊的ip地址
  7. ip地址的数量限制
  8. 私有ip和公有ip
  9. 路由
  10. 路由表生成算法

在复杂的网络环境中确定一个合适的路径

1. 前置认识

传输层提供了很多策略,保证数据传输的各种策略,数据丢包等如何处理,那么将数据传输的跑腿活,这个具体工作是由谁来做。这就是接下来要说的网络层,用户需要的是将数据可靠的从A主机到B主机,ip协议本质工作,提供将数据从A主机到B主机的能力

2. IP协议

在这里插入图片描述
网络要对所有的主机进行表示。源ip,目的ip来标识源主机和目的主机。每一个局部网络通过路由器和其他局部网络相连,想要到达目的主机,需要先到达目标网络,再找到目标主机,然后是目标进程

3. 基本概念

主机:配有IP地址,但是不进行路由控制的设备
路由器:即配有ip地址,又能进行路由控制
节点:主机和路由器的统称

ip地址就像身份证号一样,每一部分都是设计好,有代表的意义,身份证号由地区码+出生年月和签发机构等构成

4. 协议头格式

在这里插入图片描述

  • 4位版本号(version):指定IP协议的版本,对于ipv4来说,就是4
  • 4位头部长度(header length):IP头部的长度是多少个32bit,也就是length*4的字节数,4bit表示最大的数字是15,单位是4,因此ip头部最大长度是60字节
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0),4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择一个,对于ssh/telent这样的应用程序,最小延时比较重要,对于ftp这样的程序,最大吞吐量比较重要
  • 16位总长度(total length):IP数据报整体占多少个字节
  • 8位生存时间(Time To Live,TTL):是数据报到达目的地的最大报文跳数,一般是64,每次经过一个路由,TTL-1,一直减到0还没到达,那么就丢弃了,这个字段主要是用来防止游离报文出现路由循环
  • 8位协议:表示上层协议的类型
  • 16位头部校验和:使用CRC校验,鉴别头部是否损坏,坏了就丢弃
  • 32位源地址和32位目标地址:表示发送端和接收端
  • 选项字段(不定长,最多40字节):略

分片与组装
MTU对报文的大小做了限制,规定最大1500字节,如果发出的过大,网络层就需要分片交付,到达目标网络层完成拼接

  • 16位标识(id):唯一的标识主机发送的报文,如果ip报文在数据链路层被分片了,那么每一个片里的id是相同的
  • 3位标志字段:第一位保留(保留的意思是现在不用,没想好以后用不用),第二位置为1表示禁止分片,这时候如果报文长度超过MTU,ip模块会丢弃报文,第三位标识“更多分片”,如果分片了的话,最后一个分片位置为1,其他为0是一个结束标记
  • 13位分片偏移(framegament offset):是分片相对于原始ip报文开始处的偏移,其实就是在表示当前分片在报文中哪个位置,实际便宜的字节数是这个值*8得到的,因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)

如何知道分片了
如果分片了,那么片偏移不等于0,或者更多分片等于1

如何分片
比如一个3000字节的报文,超过了1500,需要分片,先将头部1500字节取出来,设置片偏移为1,然后第二个分片取1480字节,设置报头更多分片1,偏移1500,拼接上去,最后部分添加报头,设置偏移2980,更多分片为0表示结束。这三个标识id是统一的

如何组装
根据偏移排序,去掉除第一个报文的报头,拼接数据。丢弃哪一个都可以通过偏移和标志查出来。如果丢了一个就要全部重发。所以不建议分片,会增加丢包概率

5. 网段划分(重要)

网络号:保证相互连接的两个网段具有不同的标识
主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号

在这里插入图片描述
不同的子网其实就是把网络号相同的主机放在一起
如果在子网中新增一台主机,这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网的其他主机重复

路由器本质也是特定一个子网的主机,也要配置ip地址。一定要至少连接2个子网,也就相当于同时在两个子网,暂时认为路由器有多张网卡就行,路由器可以配置多个ip的。一般是一个子网中第一台设备,一般它的ip地址都是:网络号.1,路由器不仅可以进行ip报文的转发,还可以构建子网(局域网)

通过合理设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的ip地址都不相同
那么问题来了,手动管理子网内的ip,是一个相当麻烦的事情

  • 有一种技术叫DHCP,能够自动的给子网内新增主机节点分配ip地址,避免了手动管理ip的不便
  • 一般的路由器都带有DHCP功能,因此路由器也可以看做一个DHCP服务器

ipv4是4字节的,最多只有42亿个,属于有限的资源,所以需要对ip资源合理的分配

五类划分

过去曾经提出一种划分网络号和主机号的方案,把所有ip地址分为五类,如下图所示(该图出自[TCPIP])
在这里插入图片描述
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

随着internet的发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址

  • 例如,申请了一个B类地址,理论上一个子网内能允许6万五千多个主机,A类地址的子网内的主机数更多
  • 然而实际网络架设中,不会存在一个子网内有这么多的情况,因此大量的ip地址都被浪费掉了

CIDR

针对这种情况提出了新的划分方案,称为CIDR(classless interdomain routing)

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号
  • 子网掩码也是一个32位的正整数,通常用一串“0”来结尾
  • 将ip地址和子网掩码进行“按位与”操作,得到的结果就是网络号
  • 子网掩码为1,表示对应网络位,0表示主机位
  • 网络号和主机号的划分与这个ip地址是A类、B类还是C类无关

下面举两个例子:
划分子网的例子1
在这里插入图片描述

划分子网的例子2
在这里插入图片描述

可见,子网掩码和ip运算可以得到网络号,主机号从全0到全1就是子网的地址范围
ip地址和子网掩码还有一种更简洁的方法,例如140.252.20.68/24,表示ip地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0

子网掩码可以对ip32位,进行任意划分,内网建设,比如B类主机号16位太多了,可以划出12位给网络,剩下4位作为主机号

6. 特殊的ip地址

将ip地址中的主机地址全部设为0,就成为了网络号,代表这个局域网
ip地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
127.*的ip地址用于本机环回(loop back)测试,通常是127.0.0.1

在这里插入图片描述

7. ip地址的数量限制

我们知道,ip地址(ipv4)是一个4字节32位的正整数,那么一共只有2的32次方个ip地址,大概是43亿左右,而tcp/ip协议规定,每个主机都需要一个ip地址。这意味着,一共有43亿台主机接入网络吗?实际上,由于一些特殊的ip地址存在,数量远远不足43亿,另外ip地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个ip地址

CIDR在一定程度上缓解了ip地址不够用的问题(提高了利用率,减少了浪费,但是ip地址的绝对上限并没有增加),仍然不是很够用,这时候有三种方式来解决:

  • 动态分配ip地址:只给接入网络的设备分配ip地址,因此同一个mac地址的设备,每次接入互联网中,得到的ip地址不一定是相同的
  • NAT技术(后面重点介绍)
  • ipv6:ipv6并不是ipv4的简单升级版,这时互不相干的两个协议,彼此病不兼容,ipv6用16字节128位来表示一个ip地址,但是目前ipv6还没有普及

8. 私有ip地址和公网ip地址

理解运营商和全球网络

我们是怎么上网,通过调试解调器将模拟光电信号转为数字信号,再交给路由器,路由器构建了局域网,网络在运营商上网需要账号密码,交钱。路由器的管理也有一个账号密码。每个国家的基站等网络都是由运营商和国家完成的

全球网络中,将ip按国家进行了划分。每个国家和地区都有自己的ip地址段。在国内,再次划分,每个ip地址还包含了省和市网段的匹配的信息,市的定位不一定准确。如果别国想访问国内的一台主机,先拿目标ip在全球范围的路由器对比,发现是中国的,然后再交由国内的路由器,判断子网掩码后的所属,到省,到市,一直往下
在这里插入图片描述

数据发送过程

如果一个组织内部组建局域网,ip地址只用于局域网内的通信,而不直接连到internet上,理论上,使用任意的ip地址都可以,但是RFC1918规定了用于组建局域网的私有ip地址

  • 10.*,前8位是网络号,共16,777,216个地址
  • 172.16.到172.31,前12位是网络号,共1,048,576个地址
  • 192.168.*,前16位是网络号,共65536个地址
  • 包含在这个范围内,都称为私有ip,其余的则称为全局ip(或公网ip)

在这里插入图片描述

  • 一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)
  • 路由器LAN口连接的主机,都从属于当前这个路由器的子网中
  • 不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1),子网内的主机IP地址不能重复,但是子网之间的ip地址就可以重复了
  • 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商可能会有很多级,最外层的运营商路由器WAN口IP就是一个公网IP
  • 子网内的主机需要和外网进行通信时,路由器将Ip首部中的ip地址进行替换(替换成WAN口ip),这样逐级替换,最终数据包中的ip地址成为一个公网ip,这种技术称为NAT(Network Address Translation),网络地址转换
  • 如果希望我们自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有外网ip的服务器上,这样的服务器可以在阿里云/腾讯云上购买

比如上面192.168.1.201主机想访问一个ip是201,100,1,1的公网,它自己是私有ip,所以到达自己所在的路由器后要替换,将源ip替换为路由器的WANip,就是10.1.1.2,由家用路由器再发送给运营商路由器,源ip是它的子网,继续替换为122.77.241.4,这个过程可能会重复,直到有一个路由器发送到广域网中,以省为例,判断这个ip是不是国内的,是就转给这个省,不断向下,根据目的ip就可以确定发送的主机

nat路由器在这个替换过程中会保存映射关系,当数据要发送回来的时候,不断还原ip

大企业的网络也由内网构成,但会提供一个公网路由器

9. 路由

在复杂的网络结构中,找出一条通往终点的路线,路由的过程,就是这样一跳一跳(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表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不闭经路由器转发

转发过程例1,发送数据报目的192.168.56.3
跟第一行的子网掩码左与运算的到,192.168.56.0,与第一行目的网络不符
第二行同样计算,正式第二行的目的网络,经由eth1接口发送。是与eth1接口直连的网络,可以直接发到目的主机,不需要转发

转发过程例2,发送数据包目的202.10.1.2
和前几项对比都不是
按缺省条目,从eht0发乎,去往192.168.10.1路由器,由这个路由器根据它的路由表决定如何发

10. 路由表生成算法

路由表可以由网络管理员手动维护(静态路由),也可以通过一些算法自动生成(动态路由)。例如距离向量算法,LS算法啊,Dijkstra算法等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1942002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024全网最全面及最新且最为详细的网络安全技巧 七之 XSS漏洞典例分析EXP以及 如何防御和修复(2)———— 作者:LJS

目录 8.5 Exploiting XSS with 20 characters limitation(蓝色为翻译)​编辑 Unicode compatibility 20 length limitation problem Taking advantage Next steps 8.6 Intigriti XSS 系列挑战 Writeups 8.6.1 xss challenge 1220 题目概述 思路分析 POC a.有交互 b.无交互 …

Ubuntu22.04安装与卸载nginx

换源 如果是国内的就不用换 中科大的源,由于我这里是Ubuntu,所以我就直接选Ubuntu22.04就行 点击下载,或者你直接复制这个sources.list的内容到linux中的/etc/apt/sources.list也可以,把原来的sources.list备份一下,…

python+pyqt开发海康相机数据采集系统

pythonpyqt开发海康相机数据采集系统 pythonpyqt开发海康相机数据采集系统 1 开发软件功能: 支持搜索相机:Gige相机设备和USB相机设备支持两种触发模式:软件触发和编码器触发支持数据采集过程中图像实时保存支持参数调节和实时预览&#xff…

安装好anaconda,打开jupyter notebook,新建 报500错

解决办法: 打开anaconda prompt 输入 jupyter --version 重新进入jupyter notebook: 可以成功进入进行代码编辑

批量打断相交线——ArcGISpro 解决方法

在数据处理,特别是地理空间数据处理或是任何涉及图形和线条分析的场景中,有时候需要把相交的线全部从交点打断一个常见的需求。这个过程对于后续的分析、编辑、或是可视化展现都至关重要,因为它可以确保每条线都是独立的,避免了因…

VPN概述

什么是VPN? VPN --- 虚拟专用网 --- 是指依靠ISP或者其他NSP或者企业自身,构建的专用的安全的数据通 信网络,只不过,这个专线网络是逻辑上的,而不是物理上的,所以叫做虚拟专用网 VPN诞生的原因是什么? 1&…

Qt实战:专栏内容介绍及目录

1、专栏介绍 Qt相比Visual Studio (VS) 的优势主要体现在跨平台能力、‌丰富的功能、‌高性能、‌现代UI设计、‌社区支持和企业支持等方面。‌ 跨平台能力:‌Qt 允许应用程序在多个操作系统上编译和运行,‌无需为每个平台编写特定的代码,‌…

小程序内嵌uniapp页面跳转回小程序指定页面方式

使用微信小程序提供的Api:wx.miniProgram.navigateTo 在小程序中嵌套uniapp的H5页面,并使用wx.miniProgram.navigateTo进行页面跳转,需要确保满足以下条件: 你的小程序必须是通过uniapp构建的,并且支持小程序嵌套。 你…

SEO域名外链生成工具PHP源码

两款不同版本的SEO超级外链工具PHP源码,网址外链-seo外链推广工具源码,SEO网站推广外链工具源码SEO域名外链生成工具PHP源码 _ 博客趣两款不同版本的SEO超级外链工具PHP源码,网址外链-seo外链推广工具源码,SEO网站推广外链工具源码…

解决一下Plugin ‘maven-clean-plugin:3.1.0‘ not found的问题

1. 问题描述 当导入别人的Maven项目时,可能会出现Plugin maven-clean-plugin:3.1.0 not found的错误信息。 2. 解决方案 2.1 方案一 检查自己的Maven仓库地址是否正确,一般引入其他人的项目时,Maven仓库的目录以及配置都会是别人的&#xff…

.NET 情报 | 分析某云系统添加管理员漏洞

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

大语言模型-Bert-Bidirectional Encoder Representation from Transformers

一、背景信息: Bert是2018年10月由Google AI研究院提出的一种预训练模型。 主要用于自然语言处理(NLP)任务,特别是机器阅读理、文本分类、序列标注等任务。 BERT的网络架构使用的是多层Transformer结构,有效的解决了长…

【网络安全】CrowdStrike 的 Falcon Sensor 软件导致 Linux 内核崩溃

CrowdStrike的Falcon Sensor软件,上周导致大量Windows电脑出现蓝屏故障,现在还被发现Linux内核系统崩溃也与CrowdStrike有关。 六月份,Red Hat警告其客户在使用版本为5.14.0-427.13.1.el9_4.x86_64的内核启动后,由Falcon Sensor进…

基于神经网络的聚类分析

神经网络是一种非常有用的机器学习模型,具有无数的应用。今天,我们将分析一个数据集,看看我们是否可以通过应用无监督聚类技术来查找数据中的模式和隐藏分组,从而获得新的见解。 我们的目标是对复杂数据进行降维,以便…

基于R语言复杂数据回归与混合效应模型【多水平/分层/嵌套】技术与代码

回归分析是科学研究特别是生态学领域科学研究和数据分析十分重要的统计工具,可以回答众多科学问题,如环境因素对物种、种群、群落及生态系统或气候变化的影响;物种属性和系统发育对物种分布(多度)的影响等。纵观涉及数…

PyTorch计算机视觉之Vision Transformer 整体结构

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客 Vision Transformer(ViT)模型是最新提出将注意力机制应用在图像分类的模型。Vision Transformer算法会将整幅图像拆分成小图像块,然后把这些小图像块的线性映射序列作为注意力模块…

昇思25天学习打卡营第29天 | 基于MindSpore通过GPT实现情感分类

基于MindSpore框架通过GPT模型实现情感分类展示了从项目设置、数据预处理到模型训练和评估的详细步骤,提供了一个完整的案例来理解如何在自然语言处理任务中实现情感分析。 首先,环境配置是任何机器学习项目的起点。项目通过安装特定版本的MindSpore和相…

基于机器学习的旅游景区评论情感分析算法设计与实现

1 绪论 1.1 背景与意义 1.1.1 背景 旅游业是全球范围内一个快速发展的行业,旅游景区作为旅游业的核心组成部分,对于吸引游客和提升旅游体验起着重要作用。随着社交媒体和在线评论平台的普及,越来越多的游客在网上分享他们对旅游景区的评论…

[路由器]IP-MAC的绑定与取消

背景:当公司的网络不想与外部人员进行共享,可以在路由器页面配置IP-MAC的绑定,让公司内部人员的手机和电脑的mac,才能接入到公司。第一步:在ARP防护中,启动IP-MAC绑定选项,必须启动仅允许IP-MAC…

OpenAI发布“最具性价比”模型 GPT-4o mini,GPT-3.5 Turbo 已成过去式

GPT-4o mini 相较于 GPT 3.5 在多个方面实现了显著的性能提升: 得分率提升:GPT-4o mini 在 MMLU(一个涉及多种语言理解任务的基准测试)上的得分率为 82%,优于 GPT-4,并且明显高于 GPT-3.5 2。 成本效益&am…