【Java网络原理】 六

本文主要介绍了网络层的IP协议/NAT机制/IPv6的由来以及在数据链路层涉及到的以太网协议和DNS域名解析系统

一.网络层

1.IP协议

各个字段所表示的含义

>4位版本号

用来表示IP协议的版本,现在只有两个版本IPv4 ,IPv6

>4位首部长度

IP报头可变,带有选项

单位是4字节

>8位服务类型

(只有四种有效)

最小时延

最大吞吐量

最高可靠性

最小成本

四种形态互斥,只能切换到一种形态

>16位总长度

 IP报头+载荷的长度

最大长度虽然只有64kb,但是IP协议自身支持拆包组包机制,如果需要携带一个比较长的数据,IP协议会自动把数据报拆成多个,接收方分用的时候,也会把多个数据报合并成一个数据报。

以下三个字段字段描述的是IP数据报拆包的过程

>16位标识

拆除的多个包,16位标识是相同的

>3位标志位

有一位表示是否允许拆包,有一位表示是否是最后一个包

>13位片偏移

拆包后,通过片偏移,区分包的先后顺序(前一个包片偏移更小,后一个更大)

描述了整个IP数据报拆包组包的过程,当IP数据报携带比较长的数据的时候,IP协议就会触发拆包

拆包:

把一个打包拆成多个小包,多个小的IP数据报都会带有IP报头,载荷是TCP数据报的几个部分

>8位生存时间TTL

单位是次。初始情况下会有个数值,每次经过一个路由器转发,TTL-1,减到0就会被丢弃

正常来说,TTL足以支持数据报到达网络的任意一个位置的,TTL位0,基本不可达

>8位协议

描述上层传输层使用哪种协议,分用的时候就知道把数据交给哪种传输层协议处理

>16位首部校验和

校验首部是否正确就行,载荷数据传输层校验过了

>32位源地址

>32位目的地址

IP地址

一般用点分十进制表示:把32位分为四个部分,每个部分8个字节,每个部分的范围是0-255。

比如,192.168.1.2

事实上,32位表示的数据量非常有限42亿9千万

既然是地址,原则上是不能重复的,然而现在全世界上的设备,早就超过这个数字了,这就涉及到了一个非常严重的问题:IP不够用了怎么办?

一般来说有三种方法:

1.动态分配DHCP

某个设备不会一直上网,需要上网,就分配,不需要就不分配。但是这种方法只能缓解!不能完全解决问题!

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

3.IPv6(增加IP的数量)

2.NAT机制

把ip地址分成两类

1.内网IP

不同的局域网内的设备,内网ip可以重复;同一个局域网内的设备,内网ip不能重复

比如我的电脑上的IP地址(他其实就是一个内网IP)

2.外网IP

外网ip不饿能重复

现在设备之间的通信有以下情况:

1.局域网内部的设备之间进行通信,是完全可以的,因为IP地址是互不相同的。

2.两个局域网通信:A局域网中的设备,希望和B局域网设备通信,这个时候怎么办,毕竟这两个ip可能相同

当前的规则是禁止这个情况的,要想通信就需要有一个带有外网ip的设备进行中转,局域网内的设备访问带有外网ip的设备

比如我们平常使用的电脑手机,都是在局域网内使用的,它们会有一个内网ip;还有一类设备,是服务器,服务器可以有外网ip,这个时候就涉及到NAT工作了

举个例子:

当这个数据报到达cctalk服务器之后,cctalk服务器并不知道这个数据是源自于我的电脑ip,而是只知道源自于路由器的ip

NAT机制下,意义在于,一个外网IP代表的不一定是一个设备了,而是很多设备。

对于NAT设备,会在触发NAT的时候,维护一个映射表,表示了替换前ip和替换后ip的映射

当然,上述只是简化版本。

NAT缺点

1.效率不高

2.非常繁琐

3.不方便直接访问局域网内的设备

但是NAT是一个纯软件实现的方案,成本很低,优势明显。


3.IPv6

从根据上解决IP地址不够用问题

IPv4是4个字节,32位表示IP地址

IPv6是16个字节,128位表示IP地址

IPv6的数量是:2^128=(2^32)^4  这是一个天文数字,足够为地球上的每粒沙子都分配一个地址

缺点是:

IPv6和IPv4不兼容,要想升级IPv6,就需要更换路由器设备,成本很高

相比之下,NAT方案,只需要路由器开发商开出新版本的软件,升级软件就可以支持,成本较低

因此IPv6的发展比NAT要慢很多。

4.IP地址

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

1.同一个局域网中设备网络号必须相同,主机号必须不同

2.两个相邻的局域网,网络号必须不同

那么一个Ip地址,哪个部分是网络号,哪个部分是主机号

通过子网掩码来识别:

子网掩码和IP地址一样,也是四个字节,32位的整数

左侧必须是连续的1,右侧必须是连续的0

1的范围描述了IP地址的对应哪些位是网络号

家用路由器子网掩码一般是255.255.255.0

子网掩码是现代的划分网络号的方案

以前还有一种方法

广播地址

如果IP地址中的主机号全部设为1,就成为了广播地址,用于给同一个链路上的相互连接的所有主机发送数据报;

比如:

子网掩码是255.255.255.0(最后八位是主机号)

如果ip地址是192.168.0.255(255代表全1)

往这个IP上发送数据报,这个数据就会被转发给局域网中的所有设备

(此处的广播,在传输层只能使用UDP,不是使用TCP,TCP无法针对广播地址进行三次握手建立连接)

举个常见的例子:

将手机上的内容投屏到电视上,前提是手机和电视在同一个局域网下(同一个wifi下),手机点击搜索设备,就能把所有同一个局域网下的设备都找出来,这个搜索的过程就可以基于广播IP实现

5.路由选择

路由选择的IP协议的另一个功能。

由于路由器,无法做到理解全貌,只能认识部分网络环境,在这个前提下,进行路由转发,走一步算一步,给出的路径不一定是最优解,只能说是较优解。

每一个路由器内部,有一个路由表

数据报到达路由器的时候,就需要查询路由表

1)如果查到了就按照这个方向转发

2)如果没查到,路由器就会给一个默认的方向,沿着默认的方向走

二.数据链路层

数据链路层的代表协议是以太网协议

以太其实是人们人们设想出来的一种物质,事实上并不存在。

另外以太网协议既涉及到数据链路层的内容,也涉及到物理层的内容

1.以太网协议

以太网协议报头有三个字段:

>目的地址

>源地址

这个地址叫做mac地址,长度是6字节

为什么有了IP地址,还要mac地址

这其实是因为这两个地址,都被各自独立设计出来了,因此都保留下来了

(一般使用十六进制数字,表示mac地址)

两个十六进制数字,就是一个字节

(字节之间一般是-或者:来分割)

mac地址比IPv4的地址大很多

mac地址都是网卡出厂的出后就固定了,可以保证每个设备的网卡都有独立的mac地址的

>类型

以太网数据帧的载荷有多种形式,通过这个字段来标识

载荷部分最大长度是1500(1kb多一点)

一个稍微大一点的传输层/应用层数据报都会在数据链路层被切分成多个

其实IP数据报分包和组包这个过程就是为了MTU(最大值)而做的

2.域名

上网就要访问服务器,知道服务器的ip地址,但是ip地址不方便人们记忆和传播,于是就出现了域名。

比如:www.baidu.com

三级域名.二级域名.一级域名

这个域名机器不认识,就需要一套系统,把域名解析成ip地址----这就促成了域名解析系统的诞生。

3.DNS域名解析系统

DNS的工作原理简单的来说就是:主机A想访问www.baidu.com,主机会先访问DNS服务器,让DNS服务器返回www.baidu.com的IP地址给主机,于是主机就可以访问这个IP地址

DNS服务器如何能够承受高并发的状况的呢?

开源节流

1.每个电脑上在进行域名解析的时候都会有缓存,这样不至于每一次访问域名都要真的访问DNS

2.全世界搭建了很多的DNS镜像服务器(和最初的DNS服务器同步数据)

此时访问镜像和访问那个DNS服务器效果一样

但是如果根域名服务器(在美国)还是可以控制镜像服务器,这也意味着美国掌握着世界上任何一个国家的网络使用权。

因此国内大力发展IPv6一部分原因也是为了摆脱DNS的限制(虽然IPv6也需要DNS,但是它是一套新的DNS,和之前的不相关)

从技术角度看,NDS服务器是否会挂?

会。

 尤其是所在地区的DNS镜像服务器

比如:遇到类似这样的情况:qq能用,浏览器不能用

这种时候就很有能是DNS镜像服务器挂了,好在如果挂了可以改镜像服务器

比如改成谷歌维护的DNS服务器8.8.8.8

在网络管理中修改:

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

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

相关文章

40.弗洛伊德(Floyd)算法

概述 我们此前拆解过迪杰斯特拉(Dijkstra)算法,与它一样,弗洛伊德(Floyd)算法也是用于寻找给定的加权图中顶点间最短路径的算法。该算法是1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德及…

【API篇】九、Flink的水位线

文章目录 1、Flink时间语义2、事件时间和窗口3、水位线4、水位线和窗口的工作原理 1、Flink时间语义 事件时间处理时间 举个例子就是,一条数据在23:59:59产生,在00:00:01被处理,前者为事件时间,后者为处理时间。 从Flink1.12版本…

【PyQt学习篇 · ④】:QWidget - 尺寸操作

文章目录 QWidget简介QWidget大小位置操作案例一案例二 QWidget尺寸限定操作案例 内容边距案例 QWidget简介 在PyQt中,QWidget是一个基本的用户界面类,用于创建可见的窗口组件。QWidget可以包含多种类型的子组件,如QPushButton、QLabel、QLi…

一文带你在GPU环境下配置YOLO8目标跟踪运行环境

本文介绍GPU下YOLO8目标跟踪任务环境配置、也即GPU下YOLO8目标检测任务环境配置。 YOLO8不仅仅可以实现目标检测,其还内置有Byte-Tracker、Bot-Tracker多目标跟踪算法。可以实现行人追踪统计、车流量跟踪统计等功能。值得注意的是Byte-Tracker、Bot-Tracker多目标跟…

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (四)

这篇博客是之前文章: Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (一)Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (二&a…

挖掘业务场景的存储更优解

文章目录 第1章 如何用更优的数据存储方案,打造更稳定的架构?1.1 选用适合自己的数据存储方案1.1.1 关系型数据库1.1.2 非关系型数据库1.1.3 内存数据库 1.2 打造更稳定的架构1.2.1 分布式架构1.2.2 容灾备份1.2.3 监控报警1.2.4 自动化运维 1.3 案例分析…

pdf转jpg的方法【ps和工具方法】

pdf转jpg的方法: 1.photoshop办法: pdf直接拖入ps中,另存为*.Jpg文件即可 另外注意的时候,有时候别人给你pdf文件中包含你需要的jpg文件,千万不要截图进入ps中,直接把文件拖入ps中,这样的文件…

sql-50练习题6-10

sql练习题6-10题 前言数据库表结构介绍学生表课程表成绩表教师表 0-6 查询"李"姓老师的数量0-7 查询学过"李四"老师授课的同学的信息0-8 查询没学过"李四"老师授课的同学的信息0-9 查询学过编号为"01"并且也学过编号为"02"的…

【八】Linux成神之路

Linux成神之路 简介:最近梳理了一下自己linux系统的学习历程,感觉整个成长过程就很顺利,并没有走弯路,于是想着可以不可以把自己linux系统学习的路线记录下来,能够在大家成长的路上有一点帮助,就在这样的一…

前端重新部署如何通知用户更新

标题解决方案 常用的webSocket解决方案 webSocket; 大致逻辑思考应该是前端在部署好后向服务器发送一个状态变更通知;服务器接收后主动向前端push;前端通过心跳检测,接收到相关更新时弹出提示,让用户确认更新; 缺点&a…

国产CAN总线收发芯片DP1042 兼容替换TJA1042

说明 1 简述 DP1042是一款应用于 CAN 协议控制器和物理总线之间的接口芯片,可应用于卡车、公交、小汽车、工业控制等领域,支持 5Mbps CAN FD 灵活数据速率,具有在总线与 CAN 协议控制器之间进行差分信号传输的能力,完全兼容“ISO…

基于aop 代理 Sentinel Nacos配置控制包装类实现原理

基于aop & 代理 & Sentinel & Nacos配置控制包装类实现原理 Hi,我是阿昌,今天记录下看sentinel源码结合业务实现的思路基于aop & 代理 & Sentinel & Nacos配置控制包装类实现原理;下面并不会手把手的记录方案的实现…

拜耳阵列(Bayer Pattern)和解马赛克简介

拜尔阵列 典型的图像传感器(例如我们在数码相机中使用的图像传感器,主要有CCD, CMOS)由许多单独的光电传感器组成,所有这些传感器都会捕获光线。这些光电传感器本身能够捕获光的强度,但不能捕获其波长(颜色…

蓝桥杯每日一题2023.10.25

乘积尾零 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 由于需要相乘的数很多&#xff0c;所以我们不能直接进行暴力模拟&#xff0c;我们知道10 2 * 5&#xff0c; 所以我们只需要找出这个数2和5的个数&#xff0c;其中2和5个数小的那个则为末尾0出现的个数 #include<bi…

Postman如何做接口自动化测试?

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完…

在Win11上部署ChatGLM3详细步骤

023年10月27日&#xff0c;智谱AI于2023中国计算机大会&#xff08;CNCC&#xff09;上&#xff0c;推出了全自研的第三代基座大模型ChatGLM3及相关系列产品&#xff0c;这也是智谱AI继推出千亿基座的对话模型ChatGLM和ChatGLM2之后的又一次重大突破。此次推出的ChatGLM3采用了…

如何使用navicat图形化工具远程连接MariaDB数据库【cpolar内网穿透】

公网远程连接MariaDB数据库【cpolar内网穿透】 文章目录 公网远程连接MariaDB数据库【cpolar内网穿透】1. 配置MariaDB数据库1.1 安装MariaDB数据库1.2 测试局域网内远程连接 2. 内网穿透2.1 创建隧道映射2.2 测试随机地址公网远程访问3. 配置固定TCP端口地址3.1 保留一个固定的…

私有云:【10】VCenter安装win10

私有云&#xff1a;【10】VCenter安装win10 1、ESXI挂载win10镜像2、VCenter安装win102.1、创建虚拟机2.2、启动虚拟机 此WIN10用来作为以后的远程桌面 1、ESXI挂载win10镜像 2、VCenter安装win10 2.1、创建虚拟机 创建虚拟机 设置名称下一步 选择计算机资源 选择NFS存储 设置…

DXF文件写入多边形和名称属性,可在Global Mapper和ArcGIS打开

DXF文件写入多边形和名称属性&#xff0c;可在Global Mapper和ArcGIS打开 目标效果 为了实现下图的效果&#xff0c;学习了一下dxf格式的相关内容。 官方文档价值很高&#xff0c;但是结合实例.dxf文件看学习起来更快。 免费下载实例 下面将介绍dxf文件的格式规范&#xff0…

MODBUS-RTU从站通信(SMART PLC作为MODBUS-RTU从站)

SMART PLC作为MODBUS-RTU主站通信请参考下面文章链接: 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客文章浏览阅读2.5k次,点赞5次,收藏10次。MODBUS通讯非常简单、应用也非常广泛,有些老生常谈的问题,这里不再赘述,感兴趣的可以参看…