计算机网络——网络层重要协议(IP)

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

IP 协议(Internet Protocol)

IP 数据报格式

  • 4 位版本号:指定 IP 协议的版本,对于 IPV4 来说就是 4
  • 4 位首部长度:用于表示 IP 首部的长度,单位是 32 位(4字节),IP 首部最小长度是 20 字节,最大长度是 60 字节(包含选项 )
  • 8 位服务类型:3 位优先权字段(已经弃用),4 位 TOS 字段,和 1 位保留字段(必须置为 0),4位 TOS 分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择⼀个,对于 ssh / telnet 这样的应用程序,最小延时比较重要,对于 ftp 这样的程序,最大吞吐量比较重要;
  • 16 位总长度:表示 IP 数据报整体所占字节,最大为 64 KB,但支持拆包,组包功能;
  • 16 为标识:该字段用于唯一标识每一个数据报,一个大的数据包拆成多个小包时,他们的 16 位标识是相同的;在数据报被分片时,帮助接收端将所有分片重新组装成原始的完整数据报;
  • 3 位标志:用于控制和指示数据报分片的状态:第1位(最高位)是保留位,必须设置为0,目前没有使用,将来可能用于扩展;第二位是 DF 位,表示当前数据包是否允许拆包(0 表示允许);第三位是 MF 位,表示这是否是数据报的最后一个分片(0 表示是最后一个分片);
  • 13 位片偏移:描述当前每个小的数据包(分片的)的相对位置,更方便组包;
  • 8 位生存时间 TTL(Time to Live):描述当前数据包在网络上能存活多久,单位是次数,会有一个初始值(32,64,128),没经过一个路由器转发,TTL 减 1,TTL 为 0 时,就会丢弃该数据包(防止目标 IP 不存在,从而浪费网络资源);
  • 8 位协议:指的是封装在 IP 数据报中载荷(数据)部分的上层协议,通常是指传输层协议(如 TCP,UDP),但也可以是其他需要 IP 封装的协议(如 ICMP,IGMP);
  • 16 位首部检验和:用于检查 IP 首部的(不包括载荷)完整性,验证 IP 数据报在传输过程中是否发生了错误或数据损坏;
  • 32 位源 IP 地址和 32 位目的 IP 地址,分别代表IP数据报文中的源地址(发送者)和目的地址(接收者),使用点分十进制表示;

地址管理

网段划分

IP 地址分为两个部分,网络号和主机号:

网络号:保证相互连接的两个网段具有不同的标识;

主机号:用于区分同一个网段中的不同主机;

同一网段内,主机之间具有相同的网络号,但是必须具有不同的主机号;

子网就是把网络号相同的主机放到一起,如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复;通过合理设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的 IP 地址都不相同;

DHCP

DHCP 协议——动态主机配置协议(Dynamic Host Configuration Protocol),用于自动为网络上的设备分配 IP 地址和其他相关配置参数,如网关,子网掩码和 DNS 服务器,一般的路由器都带有 DHCP 功能,因此路由器也可以看做一个 DHCP 服务器;

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

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

针对这种情况提出了新的划分方案,称为 CIDR(Classless Interdomain Routing):引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;子网掩码也是一个 32 位的正整数,通常用一串 "0" 来结尾;将 IP 地址和子网掩码进行 "按位与" 操作,得到的结果就是网络号;网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关;

IP 地址和子网掩码还有一种更简洁的表示方法,例如 140.252.20.68/24,表示 IP 地址为140.252.20.68,子网掩码的高 24 位是 1,也就是 255.255.255.0;

特殊的 IP 地址

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

IP 地址数量的限制 

IP地址(IPv4)是一个 4 字节 32 位的正整数,则一共只有 2 的 32 次方个 IP 地址,大概是 43 亿左 右;TCP / IP协议规定,每个主机都需要有一个 IP 地址,因此这就存在 IP 地址不够用的问题,这时候有三种方法来解决:

  • 动态分配 IP 地址:只给接入网络的设备分配 IP 地址,因此同一个 MAC 地址的设备,每次接入互联网中,得到的 IP 地址不一定是相同的,这种做法只是提高了 IP 地址的利用率,并没有增加 IP 地址的数量;
  • NAT 技术:是一种用于改变 IP 地址信息的技术,通常用于将内部私有网络的IP地址转换为公共IP地址,从而实现内网设备与外网(如互联网)之间的通信;
    • 内网:也称局域网,指在一个组织、家庭或单位内部使用的网络,不直接连接到互联网;这种网络通常使用私有 IP 地址,局域网中的设备可直接通信;局域网是一个独立的网络,不直接暴露在互联网上,从而提供了一定程度的安全性;
      • 以 10.*,172.16.* - 172.31.*,192.168.* 开头的 IP 地址
      • 在同一个局域网内,内网 IP 不能重复
      • 在不同的局域网中,内网 IP 可以重复
    • 外网:也称为广域网,通常指互联网或任何能够覆盖较大地理范围的公共网络,在广域网中,设备使用公共IP地址,这些地址在全球范围内是唯一的,可以在互联网上访问
      • 除过内网 IP,其余都是外网 IP
      • 外网 IP 不能重复
    • 公网设备与局域网设备之间的访问关系:
      • 公网设备访问公网设备,由于公网的 IP 可作为唯一标识,因此可以直接访问;
      • 局域网设备访问同一个局域网设备,由于同一个局域网中的 IP 地址不能重复,因此也可以直接访问;
      • 局域网设备访问局域网设备,不允许;
      • 公网设备访问局域网设备,不允许主动访问;
      • 局域网设备访问公网设备,由于多个局域网中的 IP 可能相同,为了使公网设备可以区分,在访问公网时,需要对局域网 IP 进行地址转换;
    • 局域网内主机访问公网服务器的过程

路由选择 

在复杂的网络结构中,找出一条通往终点的路线;

IP 数据包的传输过程和问路一样;

  • 当 IP 数据包到达路由器时,路由器会先查看目的 IP;
  • 路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器
  • 依次反复,一直到达目标 IP 地址

那么如何判定当前这个数据包该发送到哪里呢?

这个就依靠每个节点内部维护⼀个路由表,路由表可以使用 route 命令查看,如果目的 IP 命中了路由表,就直接转发即可;路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址;

路由表通过路由表生成算法(例如,距离向量算法,LS 算法等)自动生成,也可以由网络管理员手动配置(静态路由);

 

 

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

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

相关文章

DAMA学习笔记(二)-数据治理

1.引言 数据治理(Data Governance,DG)的定义是在管理数据资产过程中行使权力和管控,包括计划、监控和实施。在所有组织中,无论是否有正式的数据治理职能,都需要对数据进行决策。建立了正式的数据治理规程及…

(二)Kafka 安全之使用 SSL 的加密和身份验证

目录 一. 前言 二. 使用 SSL 的加密和身份验证 2.2. 创建你自己的 CA(Creating your own CA) 2.3. 签署证书(Signing the certificate) 2.3.1. PEM 格式的 SSL 密钥和证书 一. 前言 接上一篇《(一)Kaf…

数据仓库之Lambda架构

Lambda架构是一种设计大规模数据处理系统的架构模式,它结合了批处理和实时处理的优点,以应对大数据的多样性、速度和规模问题。该架构主要由三个层次组成:批处理层(Batch Layer)、速度层(Speed Layer&#…

springboot集成积木报表,怎么将平台用户信息传递到积木报表

springboot集成积木报表后怎么将平台用户信息传递到积木报表 起因是因为需要研究在积木报表做数据筛选的时候需要拿到系统当前登录用户信息做筛选新的模块 起因是因为需要研究在积木报表做数据筛选的时候需要拿到系统当前登录用户信息做筛选 官网有详细介绍怎么集成进去的&…

Eureka 学习笔记(2)加载eureka-server.properties中的配置

一 两种配置文件的方式 我们点开 EurekaServerConfig 可以看到 public interface EurekaServerConfig {/*** Gets the <em>AWS Access Id</em>. This is primarily used for* <em>Elastic IP Biding</em>. The access id should be provided with* a…

Golang | Leetcode Golang题解之第168题Excel表列名称

题目&#xff1a; 题解&#xff1a; func convertToTitle(columnNumber int) string {ans : []byte{}for columnNumber > 0 {columnNumber--ans append(ans, Abyte(columnNumber%26))columnNumber / 26}for i, n : 0, len(ans); i < n/2; i {ans[i], ans[n-1-i] ans[n…

【项目管理】项目经理总体计划文档(word原件)

项目管理总体计划模板 1、项目基本信息 2、项目里程碑 3、项目干系人 4、项目团队组织架构管理 5、项目预算管理 6、项目项目任务计划管理 7、问题及风险管理 8、项目周报 9、项目相关要求 获取方式&#xff1a;本文末个人名片直接获取&#xff0c;或者进主页。 1、项目基本信…

Java 面试题:Java 的 Vector、ArrayList、LinkedList 有何区别?

在 Java 集合框架中&#xff0c;List 接口是一个非常重要的接口&#xff0c;它定义了有序集合的行为。Vector、ArrayList 和 LinkedList 是三种常见的 List 实现&#xff0c;每种实现都有其独特的特点和适用场景。了解它们之间的区别不仅有助于我们在开发中选择最合适的数据结构…

java第二十六课 —— java动态绑定机制 | 多态的应用(一)

java 的动态绑定机制 看一个例子&#xff1a; DynamicBinding.java&#xff1a; package com.hspedu.poly_.dynamic_;public class DynamicBinding {public static void main(String[] args) {// a 的编译类型是 A, 运行类型是 BA a new B();//向上转型System.out.println(…

深入理解Qt状态机的应用(二)

前文《深入理解Qt状态机的应用&#xff08;一&#xff09;》介绍了状态机的理论知识以及简单的状态机示例。在实际应用场景中&#xff0c;状态机往往会比较复杂&#xff1b;本文将详细介绍分组状态、历史状态、并行状态以及其他技术。 通过分组状态共享转换 还是以交通信号灯…

如何合理使用位运算

目录 标志位 寄存器位段操作 位运算的其他应用 标志位 我们经常都会使用到标志位的操作&#xff0c;来标记是否去实现某个功能。比如冒泡排序中当排序没有完成&#xff0c;始终将一个标志位置位&#xff08;flag 1&#xff09;&#xff0c;每次循环开始又会重新清除标志位&a…

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

如何理解光学中的群速度和相速度。

我不太明白为什么书上要区分相速度和群速度&#xff0c;不管这个&#xff0c;我想看看这两个速度在真实周期函数上的影响是如何的。 首先计算&#xff0c;直接计算三角函数我不会&#xff0c;利用复数做&#xff0c;可以取的实部。其中&#xff0c;。。 这个公式说明了什么呢…

React@16.x(34)动画(中)

目录 3&#xff0c;SwitchTransition3.1&#xff0c;原理3.1.2&#xff0c;key3.1.2&#xff0c;mode 3.2&#xff0c;举例3.3&#xff0c;结合 animate.css 4&#xff0c;TransitionGroup4.1&#xff0c;其他属性4.1.2&#xff0c;appear4.1.2&#xff0c;component4.1.3&…

Qt Quick 教程(一)

文章目录 1.Qt Quick2.QML3.Day01 案例main.qml退出按钮&#xff0c;基于上面代码添加 4.使用Qt Design StudioQt Design Studio简介Qt Design Studio工具使用版本信息 1.Qt Quick Qt Quick 是一种现代的用户界面技术&#xff0c;将声明性用户界面设计和命令性编程逻辑分开。 …

mybatis中yml配置log-impl是什么?有什么用?

在 MyBatis 中&#xff0c;log-impl 配置用于定义 MyBatis 在执行 SQL 时使用的日志实现。配置 org.apache.ibatis.logging.stdout.StdOutImpl 表示 MyBatis 会将所有的 SQL 日志直接打印到标准输出&#xff08;即控制台&#xff09;。这在开发过程中非常有用&#xff0c;因为它…

前后端完整案例-简单模仿点点开黑抽奖

数据库 后台 源码&#xff1a;https://gitee.com/qfp17393120407/game 前台 源码&#xff1a; https://gitee.com/qfp17393120407/game-weeb vue项目打包 注意&#xff1a;打包时将IP改为自己公网IP npm run build公网页面 地址&#xff1a;点点模拟抽奖 进入页面抽奖…

K8S-使用SVC域名解决ip不固定导致consul服务注册脏数据异常问题

1 概述 各个模块注册nacos时&#xff0c;采用svc域名的方式&#xff0c;各模块间feign调用时使用的svc 域名来访问&#xff0c;这样就可以和ip解耦。 否则如果使用不固定IP&#xff0c;则可能在重启的时候&#xff0c;导致consul里面有一堆脏节点数据&#xff0c;影响服务调用…

不同表格式下的小文件治理方式(开源RC file/ORC/Text非事务表、事务表、Holodesk表格式..)

友情链接&#xff1a; 小文件治理系列之为什么会出现小文件问题&#xff0c;小文件过多问题的危害以及不同阶段下的小文件治理最佳解决手段 小文件过多的解决方法&#xff08;不同阶段下的治理手段&#xff0c;SQL端、存储端以及计算端&#xff09; 概览 在前两篇博文中&am…

自学鸿蒙HarmonyOS的ArkTS语言<一>基本语法

一、一个ArkTs的目录结构 二、一个页面的结构 A、装饰器 Entry 装饰器 : 标记组件为入口组件&#xff0c;一个页面由多个自定义组件组成&#xff0c;但是只能有一个组件被标记 Component : 自定义组件, 仅能装饰struct关键字声明的数据结构 State&#xff1a;组件中的状态变量…