【JavaEE初阶】网络原理(4)

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

网络层 => IP协议

IP协议报头结构

4位版本

4位首部长度

8位服务类型(TOS)

16位总长度(字节数), 16位标识

3位标志位

13位片偏移

8位生存时间(TTL)

8位协议

16位首部检验和

32位源IP地址/32位目的IP地址

关于IP地址

特殊的IP地址

主机号 全为0(二进制)

主机号全为1(二进制)

127.*  环回IP

解决IP地址不够用的问题

方案一:动态分配IP地址

方案二:NAT网络地址转换

NAT网络地址转换

NAT机制的缺点

方案三:IPv6


网络层 => IP协议

在复杂的⽹络环境中确定⼀个合适的路径.

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

IP协议和普通的程序员联系比较浅,除了专门开发网络设备的程序员(开发路由器,交换机,防火墙....)

IP协议主要涉及地址管理

地址管理=>IP地址

路由选择=>数据报传输的路径进行规划

IP协议报头结构

4位版本

实际上只有两个取值

  • 4 ->IPv4(主流)
  • 6 ->IPv6

4位首部长度

IP协议报头也是变长的,取值范围:0~15

实际上报头长度要*4

如4位首部长度取值15时,报头长度就是15*4

8位服务类型(TOS)

8位服务类型(TypeOfService)包括 3位优先权字段(已经弃⽤),4位TOS字段,和1位保留字段(必须置为 0).

4位TOS分别表⽰:最⼩延时,最⼤吞吐量,最⾼可靠性,最⼩成本.这四者相互冲突,只能选择⼀个.(对于ssh/telnet这样的应⽤程序,最⼩延时⽐较重要;对于ftp这样的程序,最⼤吞吐量⽐较重要.)

  • 最小延时:数据从A到B的时间消耗最短
  • 最大吞吐量:数据从A到B单位时间内,传输的数据量最多
  • 最高可靠性->IP协议不像TCP那样有严格的可靠性,IP一些机制也会影响到丢包的概率,利用这些机制减少丢包率,增加可靠性
  • 最小成本:设备上消耗的资源较小

16位总长度(字节数), 16位标识

  • 16位总长度(字节数)  是IP数据报的长度
  • 16位标识  用于区分是否是同一个数据包

IP协议内置了拆包和组包机制,单个IP数据报确实没法超过64KB,但是IP可以自动把大的数据包拆成多个IP数据报携带传输,在接收方再进行拼装.

此时,多个IP数据报的16位标识是相同数值

3位标志位

3位标志位只有两个有效,剩下一个是保留位

  • 其中一个 表示这个包是否需要组包(是否是拆包的一部分)
  • 另一个表示当前包是否是组包中的最后一个单位

13位片偏移

13位片偏移决定组包时数据包的位置(解决后发先至问题)

8位生存时间(TTL)

TTL决定了一个数据包在网络中最多存活多长时间,单位是 "次数"(指经过路由器转发的次数)

假设构造一个数据报,目的IP写错了,如果让这个数据报无线传输,就会消耗很多的网络资源,TTL约定了传输时间的上限,达到上限之后,数据报就会自动被丢弃掉

发送一个IP数据报时,会有一个初始的TTL的值(32,64,128...),数据报每经过一个路由器转发(经过交换机不减),TTL就会-1,一旦TTL减到0,此时这个数据包就会被当前路由器直接丢弃掉

在正常情况下,TTL=64是非常富裕的.

8位协议

通过8位协议中不同的数值 感知到接下来要把数据交给TCP解析还是UDP解析,还是其他协议解析(类似于TCP/UDP报头中的端口)

16位首部检验和

验证数据在传输过程中是否出错(只是针对首部,IP报头),载荷部分TCP/UDP都有自己的校验和了

32位源IP地址/32位目的IP地址

IP数据包中最关键的信息,描述了数据报从哪里来,到哪里去

IP地址是 32位的整数,不方便人进行阅读理解,通过将IP地址写成"点分十进制"的形式方便人们阅读,把32位(4字节)通过3个圆点分割开,每一个部分是一个字节,范围0-255

关于IP地址

IP地址32位,左半部分是网络号,右半部分是 主机号,需要通过"子网掩码"区分出哪里是网络号,哪里是主机号

网络中规定:

  • 同一个局域网中的设备,网络号必须相同,主机号必须不同;
  • 两个相邻的局域网,网络号必须不同 

特殊的IP地址

主机号 全为0(二进制)

这个IP表示当前网段(相当于网络号),因此,给局域网中的某个设备分配IP地址时,不能把主机号设为全0

主机号全为1(二进制)

这个表示 广播IP,往这个IP地址发送数据包,相当于给整个局域网中所有设备都发了一次数据包

很多看到的"业务上的广播"都是通过应用层编写代码来实现的,而不是借助广播IP

广播IP应用场景 举例:手机投屏 ,手机触发投屏按钮时,往对应的广播IP发送一个数据包(UDP)(TCP不支持广播,只能一对一),如果收到这个数据包的设备不具有投屏功能,就不吱声;反之,就会返回一个响应 (设备是什么,IP是多少)

127.*  环回IP

自发自收,给这个IP发一个数据包,设备就会从这个IP上再收到同一个数据

环回IP一般用于测试,写的网络程序大多情况都是为了跨主机通信,往往需要先自行测试,一台主机测试客户端和服务器之间能否正常交互,一般使用的环回IP时127.0.0.1,其他的比较少见

解决IP地址不够用的问题

32位表示的数据范围是0~42亿9千万,但是放到现如今移动互联网时代,人手一部手机,甚至好几部,可能就不够用了

方案一:动态分配IP地址

一个设备上网就分配IP地址,不上网就先不分配

方案二:NAT网络地址转换

使用一个IP代表一大波设备

把IP地址分为两大类,要求公网IP必须是唯一的,但是私网IP允许重复(在不同的局域网中允许重复)

  1. 内网IP/私网IP
  2. 外网IP/公网IP

NAT网络地址转换

  • 同一个局域网内,主机A访问主机B,不会涉及到NAT机制
  • 公网上的设备A,访问公网上的设备B,不会涉及到NAT机制
  • 一个局域网中的主机A,访问另一个局域网中的主机B,NAT机制中是不允许
  • 局域网内部的设备A,访问公网中的设备B,NAT机制主要就是针对这个情况进行生效

一个公网IP服务于一个片区,上万个设备

发送数据时,"我的电脑" 的源IP会在运营商路由器进行 网络地址转换. 

日常上网的设备,其实大部分都是在不同的局域网中,相当于一个公网IP就可以代表一大批设备

返回数据响应时,cctalk会在运营商路由器中将目的IP转换位局域网中"我的电脑"的源IP

在网络通信中,不仅仅只有IP信息,还有一个关键的是 端口号,端口号本来是区分同一个主机上的不同应用程序的, 在NAT中,端口号就可以用来区分不同主机上的不同的应用程序(端口号是随机分配的空闲端口,出现相同的概率非常小)

运营商路由器在进行IP替换时,会记录这层映射关系

NAT机制的缺点

网络环境太复杂了,替换过程中,每一层路由器都需要维护映射关系,每次转发数据,都需要查询映射关系,都是开销

方案三:IPv6

IPv6从根本上解决了IP地址不够用的问题

IPv6使用128位(16字节)表示IP地址,空间非常大(可以给地球上每一粒沙子都分配一个唯一的IPv6地址)

 IPv6提出的时间是上个世纪90年代,时间和NAT其实差不多,IPv6与IPv4不兼容,想使用IPv6,就需要更换新的设备(能支持IPv6的设备),所以推广IPv6 举步维艰, NAT机制只要给路由器设备升级软件即可,硬件不需要改变(成本非常低). IPv6在国内普及程度非常高了,超过了70%

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

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

相关文章

vue3+vant实现视频播放(含首次禁止进度条拖拽,视频看完后恢复,保存播放视频进度,刷新及下次进入继续播放,判断视频有无全部看完等)

1、效果图 2、 <div><videocontrolsclass"video_player"ref"videoPlayer":src"videoSrc"timeupdate"handleTimeUpdate"play"onPlay"pause"onPause"ended"onVideoEnded"></video><…

LongVU :Meta AI 的解锁长视频理解模型,利用自适应时空压缩技术彻底改变视频理解方式

Meta AI在视频理解方面取得了令人瞩目的里程碑式成就&#xff0c;推出了LongVU&#xff0c;这是一种开创性的模型&#xff0c;能够理解以前对人工智能系统来说具有挑战性的长视频。 研究论文 "LongVU&#xff1a;用于长视频语言理解的时空自适应压缩 "提出了一种革命…

【Spring IOC】实现一个简单的 Spring 容器

1. 理解知识 Spring 容器的作用 Spring 容器是Spring的核心&#xff0c;用来管理Bean对象的。容器将创建对象&#xff0c;把它们连接在一起&#xff0c;配置它们&#xff0c;并管理他们的整个生命周期从创建到销毁。 Bean 对象的管理 当一个 Bean 对象交给 Spring 容器管理…

Pytorch lightning多机多卡训练通讯问题(NCCL error)排查

一、问题 单机多卡可以正常训练模型&#xff0c;多机多卡数据加载完成后卡住不动&#xff0c;排查两台机器可以ping通&#xff0c;表明网络没有问题&#xff0c;查看bug信息是NCCL通信问题。报错信息大致如下: torch.distributed.DistBackendError: NCCL error in: …/torch/c…

攻防靶场(26):hydra爆破web的小技巧 DC-4

目录 1. 侦查 1.1 收集目标网络信息&#xff1a;IP地址 1.2 主动扫描&#xff1a;扫描IP地址段 1.3 主动扫描&#xff1a;字典扫描 1.4 主动扫描&#xff1a;漏洞扫描 2. 初始访问 2.1 有效账户&#xff1a;默认账户 2.2 利用面向公众的应用 3. 凭据访问 3.1 不安全的凭据&…

UOS 安装usb wifi 网卡驱动

电脑上装安uos后发现usb网卡驱动不见了&#xff0c;网卡长下面这个样子&#xff0c;但是官方没有驱动 驱动网址选5300 https://www.ezcast.com/app/ezcast/wifi-adapter/windows 这时我们 lsusb找到相关设备&#xff0c;发现是Realtek 的设备 要在 Ubuntu 上安装 Realtek 0bda…

东方娱乐周刊

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网&#xff1a;https://ais.cn/u/3eEJNv 三、服务简述 学科领域&#xff1a; 人文社科-教育学、文学、艺术、体育、人文社科&#xff1a;其他 四、投稿须知 1.在…

第三方支付系统架构设计

第三方支付是指具备一定实力和信誉保障&#xff0c;并获得国家颁发运营拍照的独立机构&#xff0c;采用和各大银行签约的方式&#xff0c;通过与银行相关接口对接而促成交易的网络支付的模式。我们熟悉的微信支付和支付宝都属于第三方支付工具&#xff0c;第三方支付工具随着移…

计算机网络八股文个人总结

1.TCP/IP模型和OSI模型的区别 在计算机网络中&#xff0c;TCP/IP 模型和 OSI 模型是两个重要的网络协议模型。它们帮助我们理解计算机通信的工作原理。以下是它们的主要区别&#xff0c;以通俗易懂的方式进行解释&#xff1a; 1. 模型层数 OSI 模型&#xff1a;有 7 层&#…

Java日志脱敏(二)——fastjson Filter + 注解 + 工具类实现

背景简介 日志脱敏 是常见的安全需求&#xff0c;最近公司也需要将这一块内容进行推进。看了一圈网上的案例&#xff0c;很少有既轻量又好用的轮子可以让我直接使用。我一直是反对过度设计的&#xff0c;而同样我认为轮子就应该是可以让人拿去直接用的。所以我准备分享两篇博客…

高效实现SCRM用户管理的最佳实践与策略

内容概要 在当今竞争激烈的市场环境中&#xff0c;SCRM用户管理显得尤为重要。SCRM&#xff08;Social Customer Relationship Management&#xff09;不仅仅是简单的客户管理工具&#xff0c;它更是企业与客户之间建立良好关系的一座桥梁。通过深入了解用户的需求和行为&…

Git - 两种方式撤销已提交到远端仓库的记录并删除提交记录

文章目录 命令行方式附 命令行方式 确定要撤销的提交记录 首先&#xff0c;使用以下命令查看提交历史&#xff1a; git log找到想撤销的提交记录的哈希值&#xff08;SHA&#xff09; &#xff0c;比如9c9c98d6f7f28c41d971f8efd51ed31f9720792c 撤销提交记录 根据需求选择以下…

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数&#xff0c;字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数&#xff0c;分别是 toupper &#xff0c; tolower。 一.什么是字符转换函数&#xff1f; 顾名思义&#xff0c;即转换字符的函数&#xff0c;如大写字母转小写字母&am…

【排序】5.堆排序(详细图解)

文章目录 前言1.建堆方法的选择2.优先使用向下调整的原因3.堆排序图解&#xff08;大堆-升序为例子&#xff09;3.1 向下调整法-建大堆3.2 进行堆排序 4.堆排序代码4.1 向下调整法4.1. 1 小堆4.1. 2 大堆4.2 堆排序 5. 关于小堆——降序6.性能分析 前言 &#x1f431;个人主页&…

头歌——机器学习(线性回归)

文章目录 线性回归简述答案 线性回归算法答案 线性回归实践 - 波斯顿房价预测LinearRegression代码 利用sklearn构建线性回归模型示例代码如下&#xff1a; 代码 线性回归简述 简单线性回归 在生活中&#xff0c;我们常常能碰到这么一种情况&#xff0c;一个变量会跟着另一个变…

技术美术百人计划 | 《5.4 水体渲染》笔记

一、水体渲染的波形模拟技术-基于物理 基于物理的波形模拟方法&#xff1a; 欧拉方法&#xff08;Eulerian approaches&#xff09;[Kass 1990]拉格朗日方法&#xff08;Lagrangian approaches&#xff09; [Stam 1995]欧拉-拉格朗日混合方法&#xff08;Hybrid approaches&a…

使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序

文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中&#xff0c;我们经常需要处理表格数据&#xff0c;并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时&#xff0c;拖拽排序功能显得…

Chrome与火狐的安全功能全面评估

在当今数字化时代&#xff0c;网络安全已成为用户最为关注的问题之一。作为两款广受欢迎的浏览器&#xff0c;Chrome和火狐&#xff08;Firefox&#xff09;都提供了多种安全功能来保护用户的在线隐私和数据安全。本文将全面评估这两款浏览器的安全功能&#xff0c;帮助用户更好…

Java-02

笔试算法&#xff1a; 41. 回文串 我们称一个字符串为回文串&#xff0c;当且仅当这个串从左往右和从右往左读是一样的。例如&#xff0c;aabbaa、a、abcba 是回文串&#xff0c;而 ab、ba、abc 不是回文串。注意单个字符也算是回文串。 现在&#xff0c;给你一个长度为n的…

Windows实用工具推荐(uTools+截图工具Snipaste)

闲言少叙,直奔主题 uTools 官网下载地址 uTools官网 - 新一代效率工具平台 这是工具的输入命令的样式,主题颜色可以自己设置,点击右边的头像进入主页 左侧是已经安装的工具,可以根据自己喜好安装各种实用小工具 可以自定义设置呼出菜单的快捷键 这款工具拥有很多功能,我推荐…