计算机网络——网络层重要协议(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)的定义是在管理数据资产过程中行使权力和管控,包括计划、监控和实施。在所有组织中,无论是否有正式的数据治理职能,都需要对数据进行决策。建立了正式的数据治理规程及…

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

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

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、项目基本信…

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

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

基于若依的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;将声明性用户界面设计和命令性编程逻辑分开。 …

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

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

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

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

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

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

python全栈开发《10.数据类型之初识列表类型》

1.什么是列表 其实在生活中&#xff0c;有很多种排队的现象。比如看电影要排队买票&#xff0c;上地铁的时候要排队安检。在生活中&#xff0c;排队的是人&#xff0c;为了统一做一件事&#xff0c;而排成队伍&#xff0c;逐个的去等待执行这个任务&#xff0c;每个人都是执行这…

平衡查找树(数据结构篇)

数据结构之平衡查找树 平衡查找树(AVL树) 概念&#xff1a; 为了防止因为插入删除而导致的树结构不平衡(通常我们删除节点总是对右子树的最小值节点替代操作&#xff0c;而不是交替的利用左子树的最大值节点替代&#xff0c;这就将导致左子树的平均深度大于右子树平均深度&a…

基于Java的高校校园点餐系统

开头语&#xff1a; 你好&#xff0c;我是计算机专业的学长&#xff0c;如果你对高校校园点餐系统感兴趣或有相关开发需求&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Eclipse、Tomcat 系统展示…

分布式用例执行

前言 这两天趁着有时间&#xff0c;我疯狂的码字了~~ 背景 我们公司是做人工智能平台的&#xff0c;什么是人工智能呢&#xff1f; 大数据 机器学习。大数据运行的基本就不快。机器学习算法运行起来也是慢的让人泪流满面。在我们的集群配置下&#xff0c;我使用一个 5M 的数…

基于IDEA的Maven(properties属性配置)

&#xff08;property &#xff1a;财产&#xff09;properties&#xff1a;它的复数。 同样也是基于上篇博客进行学习。&#xff08;具体的全部项目代码和结构可以去查看上篇...&#xff09; <properties><!--当前jdk版本 , 这一步可以完全省略--><maven.com…

2024青海三支一扶招1910人7月6日笔试

&#x1f4e2;2024年青海省三支一扶计划招募1910人公告已发布&#xff01; 小&#x1f004;️帮大家整理好了考试关键时间点&#xff1a; ★ 报名时间&#xff1a;6月20日至6月25日 ★ 报名网站&#xff1a;青海省人事考试信息网&#xff08;www.qhpta.com&#xff09; ★ 网上…

android studio构建项目报错Could not create an instance of type com.android.build.api.variant.impl.Applicat

Could not create an instance of type com.android.build.api.variant.impl.ApplicationVariantImpl 这个错误通常是由于Gradle插件版本不兼容导致的。你可能正在使用的Gradle插件版本与你的Android Studio版本不兼容。 要解决这个问题&#xff0c;你可以尝试以下解决方法&a…

音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…