计算机网络————网络层

文章目录

  • 网络层设计思路
  • IP地址
    • IP地址分类
    • IP地址与硬件地址
  • 协议
    • ARP和RARP
    • IP
    • 划分子网和构造超网
      • 划分子网
      • 构造超网(无分类编址CIDR)
    • ICMP
  • 虚拟专用网VPN和网络地址转换NAT
    • VPN
    • NAT

网络层设计思路

  • 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
  • 网络在发送分组时不需要先建立连接,每一个分组(也就是IP数据报)独立发送,与其前后的分组无关。
  • 网络层不提供服务质量的承诺,可靠通信由网络的主机中的运输层负责(包括差错处理、流量控制等)
  • 好处:网络造价大大降低,运行方式灵活,能适应多种应用。

IP地址

  IP地址:就是因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位标识符。IP地址的结构使得可以在因特网上很方便地进行寻址。


  IP地址由因特网名字与号码指派公司ICANN进行分配


  IP地址的编址方法:

  • 分类的IP地址。最近本的编址方法
  • 子网的划分。对最基本的编址方法的改进
  • 构成超网。误分类编址方法

“分类的IP地址”:就是把IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,

  • 第一个字段是网络号net-id,标志主机(或路由器)所连接到的网络,在整个因特网范围内必须唯一
  • 第二个字段是主机号host-id,标志该主机(或路由器),在它前面的网络号所指明的网络范围内必须唯一

一个IP地址在整个因特网上是唯一的

IP地址::={<网络号>, <主机号>}

"::="表示定义为

IP地址分类

在这里插入图片描述

  • A类、B类和C类地址都是单播地址(一对一通信),是最常用的
  • A、B、C类地址的网络号字段分别为1,2,3字节,网络号字段的最前面有1~3位的类别位,数值分别规定为0,10,110
  • A、B、C类地址的主机号字段分别为3个、2个和1个字节长
  • D类地址(前四位是1110)用于多播(一对多通信)
  • E类地址(前四位是1111)保留为以后用
  • 注:近年来已广泛使用无分类IP地址进行路由选择

IP地址的指派范围:
在这里插入图片描述
一般不使用的特殊IP地址:
在这里插入图片描述

IP地址的一些特点:

  • 分等级的地址结构
  • 方便管理,只分配网络号,主机号由得到该网络号的单位自行分配
  • 路由器仅根据目的主机所连接的网络号来转发分株,减少路由表所占的存储空间和查找路由表时间
  • 一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络

IP地址与硬件地址

  • 局域网里,硬件地址固化在网卡上的ROM中,因此常将硬件地址称为物理地址。局域网的MAC帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为MAC地址。
  • 但有时,如X.25网,计算机的硬件地址并不是固化在ROM中的。

区别:

  • 物理地址是数据链路层和物理层使用的地址
  • IP地址是网络层和以上各层使用的地址,是一种逻辑地址在这里插入图片描述

协议

IP协议


与IP协议配套使用的还有四个协议

  • 地址解析协议ARP(Address Resolution Protocol)
  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

  • IP经常要使用ARP和RARP
  • ICMP和IGMP要使用IP协议

在这里插入图片描述

ARP和RARP

在这里插入图片描述

RARP的主要功能是:只知道自己硬件地址的主机能够通过RARP协议找出其IP地址。现在DHCP协议已经包含RARP协议的功能,因此不再单独使用RARP协议。


ARP

  • 每一个主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表
  • 在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表经常动态更新。

获取硬件地址流程:

  • 主机A要向本局域网上的某个主机B发送IP数据报时,先在ARP高速缓存中查看有无主机B的IP地址。
  • 如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址
  • 如没有,主机A就自动运行ARP寻找B的硬件地址
  • ARP进程在本局域网上广播发送一个ARP请求分组
  • 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组
  • 主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余所有主机不理睬这个ARP请求分组
  • 主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射
  • 注:这个过程,主机B收到A的ARP请求分组时,就把A的这一地址映射写入主机B自己的ARP高速缓存中。

ARP高速缓存中的每一个映射地址项目都设置生存时间

IP

在这里插入图片描述

一个IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。固定部分的后面是一些可选字段,长度是可变的。


数据报首部的固定部分中的各字段:

  • 版本:4位。IPv4,IPv6

  • 首部长度:4位。单位是32位字,即4字节。最大可表示十进制数值是15,即1111,最大就是15×4=60字节。IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

  • 区分服务:8位。旧标准中叫服务类型。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,才起作用。

  • 总长度:16位。指首部和数据之和的长度,单位是字节。因此数据报的最大长度为 2 16 − 1 = 65535 2^{16}-1=65535 2161=65535字节

    • IP层下面的每一种数据链路层都有其自己的帧格式,其中包括的帧格式中的数据字段的最大长度,称为最大传送单元MTU(Maximum Transfer Unit) ,此数据报总长度(首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
    • 实际上使用的数据报长度很少有超过1500字节的。
    • 为了保证传输效率,规定,所有的主机和路由器必须能够处理的IP数据报长度不得小于576字节,即最小的IP数据报的总长度。
    • 当数据报长度超过网络所容许的最大传送单元MTU时,就必须把过长的数据报进行分片后才能在网络上传送。这时,数据报首部中的“总长度”字段指的是分片后的每一个分片的首部长度与数据长度的总和。
  • 标识(identification):16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。当数据报的长度超过MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片后的各数据报片最后能正确地重装成为原来的数据报。

  • 标志(flag):3位,但目前只有两位有意义。

    • 标志字段中最低位记为MF(More Fragment)。MF=1表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
    • 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”,只有当DF=0时才允许分片。
  • 片偏移:13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。也就是说,每个分片的长度一定是8字节(64位)的整数倍。

  • 生存时间TTL:8位。表明数据报在网络中的寿命。由发送数据报的源点设置这个字段,目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初以秒为单位,随着技术发展,改为“跳数限制”,单位为跳数。路由器在转发数据报之前就把TTL减一,若减小为0,就丢弃,不再转发。

  • 协议:8位。指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。在这里插入图片描述

  • 首部校验和:16位。只检验数据报的首部,但不包括数据部分。为0,首部未发生变化,保留数据报,否则认为出现差错,将此数据报丢弃。

  • 源地址:32位

  • 目的地址:32位


数据报首部的可变部分:
  就是一个选项字段。选项字段用来支持排错、测量以及安全等措施。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。

划分子网和构造超网

划分子网

两级IP地址到三级IP地址:

  • 两级IP地址不够灵活
  • 增加一个“子网号字段”
  • 这种做法叫做划分子网,或子网寻址或子网路由选择

基本思路:

  • 划分子网是一个单位内部的事情,本单位以外的网络看不见这个网络是由多少个子网构成的,对外仍然表现为一个网络
  • 从网络的主机号接用若干位作为子网号subnet-id,主机号就相应减少了同样的位数。
    • IP地址::={<网络号>, <子网号>, <主机号>}
  • 从其他网络发送给本单位的某个主机IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,再把IP数据报交付给目的主机

子网掩码:

  • 为了使路由器能很方便地从数据报中的目的IP地址中提取出索要找的子网的网络地址,路由器就要使用子网掩码。
  • 子网掩码也是32位,由一串1和跟随的一串0组成。1对应于IP地址中原来的net-id加上subnet-id,而子网掩码中的0对应于现在的host-id。
  • 例子:在这里插入图片描述
  • 如果一个网络不划分子网,就使用默认子网掩码。默认子网掩码中的1对应net-id,这样可以不用查找该地址的类别位就能知道是哪一类的IP地址。
    在这里插入图片描述
    在这里插入图片描述
    划分子网增加了灵活性,却减少了能够连接在网络上的主机总数。

使用子网划分后,路由表包括:目的网络地址、子网掩码和下一跳地址

构造超网(无分类编址CIDR)

无分类域间路由选择CIDR:

  • 消除了传统的A类、B类和C类地址以及划分子网的概念,可以更有效地分配IPv4地址空间。
  • CIDR把32位IP地址划分为两个部分:
    • 前面的部分是“网络前缀”,用来指明网络
    • 后面的部分用来知名主机
  • 无分类的两级编址:
    • IP地址::={<网络前缀>, <主机号>}
  • 使用“斜线记法”,或称为CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。
  • CIDR把网络前缀相同的连续的IP地址组成一个“CIDR地址块”。只要知道CIDR地址快中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
  • 例子:
    • 128.14.35.7/20,前20位是网络前缀,后面是主机号
    • 这个地址所在地址块中的最小地址和最大地址可以很方便的得出
    • 最小地址 128.14.32.0
    • 最大地址 128.14.47.255
    • 主机号全0和全1的地址一般不使用,只使用这两个地址之间的地址。
  • 为了更方便的进行路由选择,使用32的地址掩码,也是一串1和一串0组成,1的个数是网络前缀的长度。
  • 斜线记法中,斜线后面的数值就是地址掩码中1的个数

  • 由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示原来传统分类地址的很多个(例如上千个)路由。
  • 路由聚合也称为构成超网

在这里插入图片描述最长前缀匹配
使用CIDR时,采用了网络前缀这种记法,IP地址由网络前缀和主机号这两个部分组成,因此在路由表中的项目也要有相应的改变。每个项目由网络前缀和下一跳地址组成,在查找路由表时可能会得到不止一个匹配结果,如何选择呢?

  • 从匹配结果中选择具有最长网络前缀的路由。这叫最长前缀匹配。又称为最长匹配或最佳匹配。

ICMP

  • 为了更有效地转发IP数据报和提高交付成功的机会。
  • ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
  • ICMP报文作文IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

在这里插入图片描述ICMP报文分类
1、ICMP差错报告报文
2、ICMP询问报文


ICMP报文的前4个字节是统一格式,共有三个字段:即类型、代码和校验和。

代码字段是为了进一步区分某种类型中的几种不同情况。
校验和字段用来检验整个ICMP报文。

接着4个字节的内容与ICMP的类型有关。
最后面是数据字段,其长度取决于ICMP的类型。


常用ICMP报文类型:
在这里插入图片描述


ICMP差错报告报文:
1、终点不可达:路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
2、源点抑制:路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
3、时间超过:路由器收到生存时间为0的数据报时,除丢弃数据报外,还向源点发送时间超过报文。
当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
4、参数问题:路由器或目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
5、改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器

差错报文格式:
在这里插入图片描述在这里插入图片描述


常用的ICMP询问报文:
1、回送请求和回答:
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。

2、时间戳请求和回答:
时间戳请求报文是请某个主机或路由器回答当前的日期和时间。时间戳请求和回答可用来与回答可用来进行时钟同步和测量时间。回答报文有一个32位的字段,写入的整数代表从1900年1月1日其到当前时刻一共有多少秒。

ICMP应用举例

1、分组网间探测PING(Packet InterNet Groper),用来测试两个主机之间的可达性。用到了ICMP回送请求与回送回答报文。是应用层直接使用网络层ICMP的一个例子,没有通过运输层的TCP或UDP。

2、traceroute(unix),tracert(Windows)

Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。

虚拟专用网VPN和网络地址转换NAT

VPN

专用地址

  • 这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。
  • 专用地址只用作本地地址而不能用作全球地址。
  • 在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
  • RFC1918指明的专用地址是:
  • 在这里插入图片描述- 专用IP地址的互联网称为专用互联网或本地互联网,或叫做专用网。
  • 专用IP地址也叫做可重用地址

很大机构有许多部门分布在相距很远的一些地点,在每个地点都有自己的专用网。
如果要通信:
1、租用电信公司的通信线路为本机构专用。
简单方便,线路的租金高
2、利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用VPN(Virtual Private Network)

如果不同网点之间的通信必须经过公用的因特网,但又有保密的要求,那么所有通过因特网传送的数据都必须加密。

NAT

另外一种情况,专用网络内部的一些主机本来已经分配到本地IP地址,但又想和因特网上的主机通信(不需要加密),采取什么措施?

NAT(Network Address Translation)需要在专用网连接到因特网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机载荷外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于django的数据可视化展现

今天给大家简单分享一下一个基于python的django的框架写的一个数据可视化的项目。 主要涉及技术&#xff1a;django基础&#xff0c;python基础&#xff0c;前端&#xff08;html&#xff0c;echars&#xff09;基础。 这个项目自然而然是基于python逻辑语言处理的&#xff0…

CSDN创作常用操作说明

CSDN创作 目录标题文本样式列表图片连接代码表格UML图Mermaid流程图Flowchart流程图classDiagram类图快捷键 目录 创建目录的方式&#xff1a; [TOC](目录)标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题文本样式 **加粗文本** ~…

第一章 Android 基础--开发环境搭建

文章目录 1.Android 发展历程2.Android 开发机器配置要求3.Android Studio与SDK下载安装4.创建工程与创建模拟器5.观察App运行日志6.环境安装可能会遇到的问题7.练习题 本专栏主要在B站学习视频&#xff1a; B站Android视频链接 本视频范围&#xff1a;P1—P8 1.Android 发展历…

Springboot整合mybatisplus实战

Springboot整合mybatisplus&#xff0c;纯后端&#xff0c;验证结果是通过postman调用的&#xff0c;记录一下 1、建表语句以及初始化数据脚本 CREATE TABLE tbl_book (id int NOT NULL AUTO_INCREMENT,type varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT…

Nginx 安装 headers-more-nginx-module 扩展,隐藏www服务信息

通过Ubuntu APT安装的Nginx默认是没有扩展的&#xff0c;所以需要手动安装才可以。本文主要分享如何在 APT 安装 Nginx 的环境中安装 headers-more-nginx-module 扩展&#xff0c;隐藏www服务信息。 1、起因 今天收到一个高危漏洞的警告&#xff0c;该漏洞大意为&#xff1a;…

Kubernetes 服务发布方式(蓝绿发布、灰度发布和滚动发布)

目录 一、三种常用的项目发布方式1.1 蓝绿发布1.2 灰度发布&#xff08;金丝雀发布&#xff09;1.3 滚动发布 二、金丝雀的方式升级发布实验三、总结 一、三种常用的项目发布方式 应用程序升级面临最大挑战是新旧业务切换&#xff0c;将软件从测试的最后阶段带到生产环境&…

阿里云国际站:为什么当初很多人不看好的阿里云做起来了?

标题&#xff1a;为什么当初很多人不看好的阿里云做起来了&#xff1f;   为什么人们曾经对阿里云的前景充满疑虑&#xff0c;而它现如今却成就了一番事业&#xff1f;这是个我们应当深思的议题。让我们共同走进阿里云的成长之旅&#xff0c;寻求答案的启示。   在阿里云初…

hive关联键 NULL 关联 NULL

结论&#xff1a;关联键 NULL NULL时&#xff0c;不进行关联&#xff0c;即两表关联失败 案例如下&#xff1a; 表A 表B 表A 关联 表B selecta.id as a_id,a.name as a_name,b.id as b_id,b.name as b_name from表A a left join表B b on a.id b.id …

适用于Vue 3的最佳开源分页库

从头开始实现分页可能是一项耗时的任务&#xff0c;需要大量的精力和资源。幸运的是&#xff0c;有几个伟大的开源库可以简化这个过程&#xff0c;提高你的效率。使用分页库可以节省你的时间和精力&#xff0c;使你能够专注于建立你的应用程序的其他更重要的功能。 在这篇文章…

分布式负载均衡 Ribbon

一、Ribbon简介 是Netfix发布的负载均衡&#xff0c;Eureka一般配合Ribbon进行使用&#xff0c;基于HTTP和TCP的客户端负载均衡工具。 只有负载均衡的能力&#xff0c;不具有发送请求的能力&#xff0c;要配合服务通信组件。 RestTemplate 针对各种类型的 HTTP 请求都提供了相…

《Java核心卷1》怎么样?读1,2章草记 | 第12版

文章目录 《Java核心技术卷 一》第一章 概述第二章 Java编程环境 图书推荐 《Java核心技术卷 一》 第一章 概述 前言&#xff1a;本书与一些”0基础入门“的书定位感觉是不太一样的&#xff0c;可能就像书名所说&#xff0c;是”核心技术“叭。书中经常将Java语言与 c 进行对比…

什么是内存溢出,什么是内存泄漏?

文章目录 一、什么是内存溢出&#xff1f;二、什么是内存泄漏&#xff1f;三、如何避免&#xff1f; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、什么是内存溢出&#xff1f; 假设我们 JVM 中可用的内存空间只剩下 3M&#xff0c;但是我们要创…

[PyTorch][chapter 41][卷积网络实战-LeNet5]

前言 这里结合前面学过的LeNet5 模型&#xff0c;总结一下卷积网络搭建&#xff0c;训练的整个流程 目录&#xff1a; 1&#xff1a; LeNet-5 2: 卷积网络总体流程 3&#xff1a; 代码 一 LeNet-5 LeNet-5是一个经典的深度卷积神经网络&#xff0c;由Yann LeCun在1998年提…

虹科教程 | Linux网络命名空间与虹科PROFINET协议栈的GOAL中间件结合使用

前言 PROFINET是由PI推出的开放式工业以太网标准&#xff0c;它使用TCP/IP等IT标准&#xff0c;并由IEC 61158和IEC 61784 标准化&#xff0c;具有实时功能&#xff0c;并能够无缝集成到现场总线系统中。凭借其技术的开放性、灵活性和性能优势&#xff0c;PROFINET可应用于过程…

动态规划-杨辉三角

动态规划-杨辉三角 1 [杨辉三角]1.1 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。1.2 示例1.2.1 示例 1:1.2.2 示例 2:1.2.3 提示: 1.3 算法解决方法1.3.1 算法解题思路1.3.1.1 确定状态1.3.1.2 转移方程1.3.1.3 初始条件以及边界情况1.3.1.4 计算顺…

【CANoe示例分析】PythonCAPL_Call_Demo

该工程由Vector官方提供,目的是演示Python如何调用CAPL文件里的自定义函数。里面除了CANoe工程文件外,还有python文件和CAPL: 提供了两种CANoe版本的工程文件,选择其中一种打开即可。 首先我们要确定CAPL文件AnalyseFunctions.can在CANoe工程内的什么地方?首先想到的是Si…

sqlserver收缩数据库

1.收缩数据库 首先收缩的前提是需要有可用空间如下图&#xff0c;没有可用空间无法收缩数据库 2.减小数据库大小 通过链接: 查询数据库中各表的大小 如果查询的比较大而且无用的数据可以直接把表结构给拿出来&#xff0c;然后删除该表空间就直接释放出来了 3.收缩文件 我…

2023年 vue使用腾讯地图搜索、关键字输入提示、地点显示

先看结果 vue 在public文件下的index.html文件中引入&#xff1a; <script src"//map.qq.com/api/js?v2.exp&key你自己的key"></script><script src"https://map.qq.com/api/gljs?v1.exp&librariesservice&key你自己的key"&…

计算机网络编程 | 多路I/O转接服务器

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Django框架-6

向服务器传参 通过url - path传参 path(articles/<int:year>/<int:month>/<slug:slug>/, views.article_detail),查询字符串方式传参 http://localhost:8000?key1value1&key2value2 ;&#xff08;body&#xff09;请求体的方式传参&#xff0c;比如文…