网络层

网络层主要负责两方面的事情

1.地址管理:制定一系列的规则,通过地址,描述出网络中的设备的位置

2.路由选择:网络环境是非常复杂的。从一个节点到另外一个节点之间,存在很多条不同的路径,通过路由选择来筛选或规划出更合适的路径进行数据传输

IP协议

TCP/IP协议栈

现在大规模使用的有4,和6这两个版本分别是IPV4和IPV6,

IP协议的报头也是变长的(有选项可以扩充)0-60字节

能够让IP协议进行切换形态(3位优先权字段已经弃用,4位TOS字段,和1位保留字段(必须置为0)。四位TOS彼此之间冲突,分别代表是最小延时,最大吞吐量,最高可靠性,最小成本。设置形态时一位是1,其余位为0,代表是1的这种形态,不能同时设置为1.可以设置同时为0代表一般服务。

描述了IP数据包的最长的长度

这三个属性支持IP协议的拆包和组包。

16位标识符:如果一个大的IP数据包需要拆分成多个小的,拆除来的多个小包的数值由其表示。

3位标志:一位表示是否允许拆包,一位表示是否是最后一个包(只有这两位有意义目前)

13位片偏移:描述当前每个小的数据包的相对位置

描述了这个IP数据包在网络上还能继续存活多长时间

TTL的单位是次数。

数据包构造出来的时候,TTL会被设置成一个初始值(32,64,128)

数据包在转发过程中,每次经过一个路由器转发,TTL就会-1
如果这个数据包,已经把TTL耗尽了,还没有顺利到达对方,就会被丢弃掉.

这个机制,还是非常有用的.给网络能够进行兜底~~
假设构造一个数据包,目的IP写作不存在的IP.这个数据包不可能到达目标.显然这样的包,也不可能允许在网络上一直存在.就能解决这样的问题

如果把TTL设置成32,会不会不够用?
会不会明明数据包是合法的目的ip,还没到达 ttl就耗尽了??这个情况也是可能会存在的,概率不大.(???)
-般来说,TTL还是会比较充裕的

描述的是IP数据包的载荷部分,是一个UDP包还是TCP包(传输层协议是哪个)

这个校验和只是检验IP 首部,不管IP数据的载荷(UDP和TCP都有自己的检验和)

IP地址本质上就是一个32位整数,为了方便理解写成点分十进制。

IP地址,是一个32位的整数. 2^ 32 也就是42亿9千万.
地址,理论上来说,是不应该重复的
互联网发展到今天,能上网的设备,非常非常多的.早就超过了42亿9千万这个数字

解决IP地址不够用的问题?

1.动态分配IP

提高了IP地址的利用率,并没有增加IP地址的数目.(???)

2.NAT机制(网络地址转换)

本质就是让一个IP地址代表一批设备的IP地址

将IP地址分为两大类

1内网IP(局域网IP)

如果一个IP地址,是以10.*或者172.16.*- 172.31.*或者192.168.*

在同一个局域网内部,内网IP之间,不能重复.
在不同的局域网中,内网IP之间,可以重复.

2.外网IP(广域网)

剩余的IP就是外网IP

外网IP不能重复,必须唯一

现今,通常都是一个小区/一个学校/一个公司,都是构成一个大的局域网(这一个局域网中可能就有几千,上万个设备)
这样的一个局域网,就使用一个外网IP即可.
(一个外网IP就代表了,几千个上万个这样的设备)

NAT机制的工作原理

一般网络通信分为四个大部分

1.我的电脑

2.运营商服务器

3.广域网

4.目标服务器

我的电脑先构建一个数据包请求,然后发送到运营商服务器中,运营商服务器是一个NA设备,对我的电脑的IP进行转化称为外网IP(内网IP无法在外网中使用),然后发送通过广域网到达目标服务器。从目标服务器来看这个此时经过转化的IP就是我的IP。

然后目标服务器回应响应,因为运营商路由器,内部会记录一个映射关系.就会将刚才替换的IP给替换回去IP。

如果当前局域网内,有多个主机都访问同一个网站服务器,此时服务器诱回的响应经过当前的路由器之后,要交还给哪个主机呢??

当服务器返回数据之后,路由器如何决定这个数据要交给哪个设备?是要结合端口号来进行区分
“端口号,可以用来区分同一个主机的不同进程也可以区分不同主机的不同进程"
如果端口号相同

到达路由器之后,路由器这回发现,
这俩数据包的目的ip和目的端口都一样(访问同-个服务器)
端口也一样.
路由器直接把端口也一起给替换掉

当前的网络环境,就是以NAT+动态分配的方式来解决IP地址不够用的问题的.


 


 


 

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

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

相关文章

【nc工具信息传输】

nc,全名叫 netcat,它可以用来完成很多的网络功能,譬如端口扫描、建立TCP/UDP连接,数据传输、网络调试等等,因此,它也常被称为网络工具的 瑞士军刀 。 nc [-46DdhklnrStUuvzC] [-i interval] [-p source_po…

3.恒定乘积自动做市商算法及代码

中心化交易所的安全风险 在中心化交易所中注册账户时,是由交易所生成一个地址,用户可以向地址充币,充到地址之后交易所就会根据用户充币的数量显示在管理界面中。但是充币的地址是掌管在交易所之中的,资产的控制权还是在交易所。…

【Java多线程(4)】案例:设计模式

目录 一、什么是设计模式? 二、单例模式 1. 饿汉模式 2. 懒汉模式 懒汉模式-第一次改进 懒汉模式-第二次改进 懒汉模式-第三次改进 一、什么是设计模式? 设计模式是针对软件设计中常见问题的通用解决方案。它们提供了一种被广泛接受的方法来解决…

【2024系统架构设计】案例分析- 5 Web应用

目录 一 基础知识 二 真题 一 基础知识 1 Web应用技术分类 大型网站系统架构的演化:高性能、高可用、可维护、应变、安全。 从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务。

从头开发一个RISC-V的操作系统(一)计算机系统漫游

文章目录 前提计算机的硬件组成程序的存储与执行操作系统 目标:通过这一个系列课程的学习,开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于:[完结] 循序渐进,学习开发一个RISC-V上…

element-ui divider 组件源码分享

今日简单分享 divider 组件,主要有以下两个方面: 1、divider 组件页面结构 2、divider 组件属性 一、组件页面结构 二、组件属性 2.1 direction 属性,设置分割线方向,类型 string,horizontal / vertical&#xff0…

AtCoder Beginner Contest 347 A~F

AtCoder Beginner Contest 347 A~F - 知乎 (zhihu.com) Tasks - AtCoder Beginner Contest 347 A.Divisible(循环) 代码 #include<bits/stdc.h> using namespace std;void solve() {int n, k;cin >> n >> k;for (int i 0; i < n; i) {int a;cin >…

如何申请Telegram机器人 | 推送通知

一、前言 利用Telegram机器人推送通知&#xff0c;需要在环境变量填入正确的TG_BOT_TOKEN以及TG_USER_ID&#xff0c;以下教程简明阐述如何获取Token以及UserID 二、获取步骤 1、首先在Telegram上搜索BotFather机器人。需要注意的是&#xff0c;搜索结果中选择ID为BotFather…

基于向量数据库搭建自己的搜索引擎

前言【基于chatbot】 厌倦了商业搜索引擎搜索引擎没完没了的广告&#xff0c;很多时候&#xff0c;只是需要精准高效地检索信息&#xff0c;而不是和商业广告“斗智斗勇”。以前主要是借助爬虫工具&#xff0c;而随着技术的进步&#xff0c;现在有了更多更方便的解决方案&…

Maven--lib分离的打包方式

就是把lib包和source源码分开打包。优势就是&#xff0c;面对频繁更新的应用场景时&#xff0c;可以只更新源码包&#xff08;当然&#xff0c;前提是你的依赖没有增减&#xff09;。尤其是使用jenkins更新项目时&#xff0c;会省去很多时间吧&#xff1f; 不同项目的 lib之间不…

【C++练级之路】【Lv.18】哈希表(哈希映射,光速查找的魔法)

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、哈希1.1 哈希概念1.2 哈希函数1.3 哈希冲突 二、闭散列2.1 数据类型2.2 成员变量2.3 默认成员函数2.…

保研线性代数复习3

一.基底&#xff08;Basis&#xff09; 1.什么是生成集&#xff08;Generating Set&#xff09;&#xff1f;什么是张成空间&#xff08;Span&#xff09;&#xff1f; 存在向量空间V(V&#xff0c;&#xff0c;*)&#xff0c;和向量集&#xff08;xi是所说的列向量&#xff…

【软件工程】概要设计

1. 导言 1.1 目的 该文档的目的是描述学生成绩管理系统的概要设计&#xff0c;其主要内容包括&#xff1a; 系统功能简介 系统结构简介 系统接口设计 数据设计 模块设计 界面设计 本文的预期读者是&#xff1a; 项目开发人员 项目管理人员 项目评测人员&#xff08;…

算法设计与分析实验报告python实现(串匹配问题、采用分治法求解最大连续子序列和问题、用分治策略求众数问题、最近点对问题)

一、 实验目的 1&#xff0e;加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、串匹配问…

Docker安装mysql并且设置主从

Docker安装部署mysql 下载镜像 docker pull mysql:5.7.35查看镜像 docker images启动 直接启动不挂载文件 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7.35挂载文件 docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/m…

正则表达式与JSON序列化:去除JavaScript对象中的下划线键名

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

【Java EE】关于Maven

文章目录 &#x1f38d;什么是Maven&#x1f334;为什么要学Maven&#x1f332;创建⼀个Maven项目&#x1f333;Maven核心功能&#x1f338;项目构建&#x1f338;依赖管理 &#x1f340;Maven Help插件&#x1f384;Maven 仓库&#x1f338;本地仓库&#x1f338;私服 ⭕总结 …

STM32G系 编程连接不上目标板,也有可能是软件不兼容。

由于一直用的老版本STM32 ST-LINK Utility 4.20 &#xff0c;找遍了所有问题&#xff0c;SWD就是连不上目标板。 电源脚 VDDA 地线&#xff0c;SWD的四条线&#xff0c;还是不行&#xff0c;浪费了一天&#xff0c;第二天才想起&#xff0c;是不是G系升级了 SWD协议。结果下载…

从汇编看函数调用

文章目录 函数调用流程栈相关寄存器及的作用简介寄存器功能指令功能 栈函数的括号{}正括号反括号 参数传递传值&#xff0c;变量不可改传指针&#xff0c;变量可改C 传引用 函数调用实例 函数调用流程 目标&#xff1a;函数调用前后栈保持不变 保存main函数的寄存器上下文移…

【HTML】简单制作一个3D动画效果重叠圆环

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建两个文本文档&#xff0c;其中HTML的文件名改为[index.html]&#xff0c;CSS的…