网络中其他协议

目录

DNS协议

域名简介

ICMP协议

ICMP功能

ICMP协议格式

ping命令

NAT技术

NATP

NAT技术的限制

代理服务器


DNS协议

        DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。

        为什么有这个协议,我觉得也是很好理解的,使用IP地址对于哪些不熟悉网络原理的人并不是很友好,而且使用IP地址这种一长串的数字也不方便记忆。

        在我们的电脑中会有一个hosts文件来描述主机名和IP地址之间的对应关系,但是这样做比较麻烦,如果网络中有主机的IP更改了,还需要定期更新。

        但这样太麻烦了,于是产生了DNS系统。

  • 由一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系。
  • 如果新计算机要接入网络,或者某个计算机IP变更,就需要将对应信息注册到数据库中。
  • 当用户通过域名访问互联网服务时,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。

        现在我们的计算机中仍然保留了hosts文件,这个hosts文件当中一般存储的是主机名与IP地址之间的映射,用户也可以在hosts文件中自主添加域名和IP映射关系,在域名解析的过程中会优先查找hosts文件的内容。

域名简介

        域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称,比如www.baidu.com,从右向左看。

  • com:一级域名,表示这是一个企业域名(以盈利为目的)。同级的还有.net(网络提供商)和.org(开源组织或非盈利组织)等。
  • baidu:二级域名,一般对应的就是公司名。
  • www:只是一种习惯用法,来表示主机支持的协议。

ICMP协议

        ICMP(Internet Control Message Protoco)Internet控制报文协议,用于在IP主机、路由器之间传递控制信息,是一个TCP/IP协议。

        ICMP和IP协议虽然都属于网络层的协议,但ICMP协议属于IP的上层协议,就像ARP协议属于以太网的上层协议。

ICMP功能

ICMP的主要功能包括:

  • 确认IP包是否成功到达目标地址。
  • 通知在发送过程中IP包丢弃的原因。
  • ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要使用ICMPv6。

        当主机A向主机B发送数据时,主机B因某些原因而关闭,这时路由器要获得主机B的MAC地址,向它发送ARP请求,但是主机B已经离线,路由器多次请求得不到响应,就会返回一个ICMP Destination Unreachable的包给主机A,此时主机A就知道自己发送的数据无法到达主机B。

ICMP协议格式

ICMP大概分为两类报文:一类是通知出错原因的,一类是用于诊断查询的。

类型内容
0回送应答(Echo Reply)
3目标不可达(Destination Unreachable)
4原点抑制(Source Quench)
5重定向或改变路由(Redirect)
8回送请求(Echo Request)
9路由器公告(Router Advertisement)
10路由器请求(Router Solicitation)
11超时(Time Exceeded)
17地址子网请求(Address Mask Request)
18地址子网应答(Address Mask Reply)

ping命令

        ping命令是基于ICMP协议实现的,通常用于测试本地主机与另一台主机之间的通信信道是否正常。

  • ping命令不仅能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存时间)。
  • ping命令会先发送一个ICMP Echo Request给对端。
  • 对端接收到之后,会返回一个ICMP Echo Reply。

【注意】:ping命令是基于网络层的ICMP协议,而端口号是属于传输层的内容,因此ICMP协议根本就不关心端口号这样的信息,所以ping命令绕过了传输层。


NAT技术

        NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机,也是路由器的一个重要功能。

  • 在访问外部服务器时,装有NAT软件的路由器叫做NAT路由器,NAT技术能够将私有IP经过一系列替换操作最终转为全局IP。
  • 很多学校、家庭、公司内部每个终端设置的IP都是私有IP,而只在路由器或必要的服务器上设置全局IP。
  • 全局IP要求具有唯一性,但是私有IP不需要,在不同的局域网中出现相同的私有IP是没问题的。

        在网络层协议的篇章也简单说过NAT技术是如何实现的,简单来说就是通过LAN口IP和WAN口IP之间的转换进行的。

 

        下面就是数据包从局域网到公网的转变过程:

  • 刚开始,该数据包当中的源IP地址就是主机A的私有IP地址,目的IP地址就是服务器的公网IP地址。
  • 数据包经过路由器时,路由器会一步一步将该数据包的源IP地址替换成自己的WAN口IP地址,最终该数据包的源IP地址和目的IP地址就都是公网IP了。
  • 之后数据包就会在公网中经过各种路由转发,最终到达服务器主机。

        服务器处理完后,要对客户端的报文进行响应,报文中的目的IP地址就是最后一次转换的公网IP,此时就需要把外网数据返回源主机的方法。

NATP

        如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机呢?

  • 局域网当中的主机要访问外网时,路由器会将这些数据包的源IP地址替换成自己的WAN口IP地址。
  • 转换的过程中,不止替换了IP地址,源端口号也要替换,要不然会出现IP和端口号一样的问题。
  • 这时候NAPT来解决这个问题了,使用IP地址和端口号来建立这个关联关系,这个关系表就是地址转换表。
  • 源IP地址和源端口号就可以表示局域网中唯一一个进程。
  • 外网发来响应数据时,路由器又会将响应数据包的目的IP地址替换成局域网中对应主机的IP地址。
  • 所以无论从哪个方向上,都可以在网络中表示唯一性,这个映射是互为Key值的。
  • TCP建立连接时,会建立对应的映射关系,在TCP断开连接后,就会删除对应的映射关系。

        路由器虽然工作在网络层,但不能认为路由器只能工作在网络层。

  • 路由器在进行转发时,不仅可以替换数据包的源和目的IP地址,也可能会替换数据包的源和目的端口号,而端口号实际是传输层的概念。
  • 为了对IP地址进行动态管理,大部分路由器都带有DHCP功能,而DHCP实际是应用层的一个协议。

NAT技术的限制

        由于NAT技术依赖这张转换表,所以也有一定的限制:

  • 无法从NAT外部向内部服务器建立连接,因为外部无法知道内部的私有IP,也就无法主动与内部服务器建立连接。
  • 转换表的生成和销毁都需要额外开销。
  • 通信过程中一旦NAT设备也就是路由器异常,所有的TCP连接也都会断开。

代理服务器

        代理服务器(Proxy Server)的功能就是代理网络用户去取得网络信息,代理服务器又分为正向代理和反向代理。

  • 正向代理

        正向代理是一个位于客户端和目标服务器之间的服务器客户端不会直接访问目标服务器,而是先访问代理服务器,由代理服务器向对应的目标服务器发起请求,并将目标服务器的响应结果返回给客户端

        这就好比在学校中使用的校园网,要使用校园网首先得先认证,认证通过后,就可以自己的机器访问目标服务器,在这中间你的请求会经过学校的机房,再通过机房中的服务器向目标服务器发起请求,目标服务器响应时也会先返回到学校机房中的服务器,最后再推送给你。

        正向代理的好处:

  • 正向代理服务器可以将对应的资源缓存到本地,当其他人也要访问该资源时,直接在代理服务器中就可以获取,大大提高了资源访问速度。
  • 反向代理

        反向代理也是一个位于客户端和目标服务器之间的服务器,对于客户端而言,只需要访问反向代理服务器就可以获得目标服务器提供的服务。

        对于大公司来说,可不只有一台主机来当做服务器,在机房中会有很多主机,当请求到达代理服务器时,代理服务器会通过某种算法,不管是轮询也好,还是随机也好,尽量让机房中的主机均衡的收到请求,当主机收到请求后,向上交付,处理数据,处理好后再将数据处理的结果返回给客户端。

        反向代理的好处:

  • 反向代理可以起到负载均衡的作用,避免让某些服务器压力太大而其他服务器却处于闲置状态,让数据请求平均的落到每台主机上。
  • 反向代理还能起到安全防护的作用,不需要暴露提供服务的服务器。也可以在反向代理服务器当中部署一些防护措施,如果有非法请求时,这些非法请求在反向代理服务器这里就被过滤掉。
  • 代理服务器的主要工作只是对数据进行转发,处理数据的压力不会特别大,而且代理服务器也可以有多个,因此不必担心代理服务器过载的情况。
  • 正向代理是客户端的代理,帮助客户端访问服务器资源;反向代理则是服务器的代理,帮助服务器做负载均衡、安全防护等工作的。
  • 正向代理中,服务器不知道真正的客户端到底是谁,服务器认为正向代理服务器就是真实的客户端;反向代理中,客户端不知道真正的服务器是谁,客户端认为反向代理服务器就是真实的服务器。

        NAT和代理服务器都是代替我们向服务器发起数据请求的,但它们有如下区别:

  • NAT技术解决的是IP不足的问题,而代理服务器则是更贴近具体应用。
  • 从底层实现上讲,NAT工作在网络层,直接对IP地址进行替换,而代理服务器一般工作在应用层。
  • 从使用范围上讲,NAT一般在局域网的出口部署,而代理服务器不仅可以在局域网代理,而且可以在广域网代理,也可以跨网代理。
  • 从部署位置上看,NAT一般集成在防火墙、路由器等硬件设备上,而代理服务器则是一个软件程序,需要部署在服务器上。

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

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

相关文章

W801学习笔记十二:掌机进阶V3版本之驱动(PSRAM/SD卡)

本次升级添加了两个模块,现在要把他们驱动起来。 一:PSRAM 使用SDK自带的驱动,我们只需要写一个初始化函数,并在其中添加一些自检代码。 void psram_heap_init(){wm_psram_config(0);//实际使用的psram管脚选择0或者1&#xff…

基于Linux系统命令行安装KingbaseES数据库

人大金仓通用性数据库(Kingbase)下载网址:人大金仓-成为世界卓越的数据库产品与服务提供商 选择“软件版本-数据库”,筛选条件Linux、完整版。找到需要的版本,点击下载。我下载的是KingbaseES_V008R006C008B0014_Lin6…

CyclicBarrier(循环屏障)源码解读与使用

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 什么是CyclicBarrier? 3. CyclicBarrier与CountDownL…

共享单车(一):项目配置

配置文件 对于很多程序中要用的参数如果是可变的,那么最好的处理方式就是通过main函数参数传递,或者从别的地方去获取,这其中之一就是配置文件,但是在一个成熟和架构完善的系统,一般都会做到自动配置,自动…

【刷题】前缀和入门

送给大家一句话: 既然已经做出了选择,最好还是先假定自己是对的。焦虑未来和后悔过去,只经历一个就够了。 – 张寒寺 《不正常人类症候群》 ☆ミヾ(∇≦((ヾ(≧∇≦)〃))≧∇)ノ彡☆ ☆ミヾ(∇≦((ヾ(≧∇≦)〃))≧∇)ノ彡☆ ☆ミヾ(∇≦((ヾ…

算法练习第17天|104.二叉树的最大深度 、559.N叉树的最大深度

104.二叉树的最大深度 104. 二叉树的最大深度 - 力扣(LeetCode)https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/ 什么是二叉树的深度和高度? 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最大深度…

C语言 三目运算符

C语言 逻辑分支语句中 还有一种 三目运算符 我们编写代码如下 #include <stdio.h>int main() {const char* a 1 1 ? "表达式1" : "表达式2";printf("%s", a);return 0; }这里 我们根据逻辑 先定义一个a 然后 它的值 等于一个 三目运算…

AIGC时代之 - 怎样更好的利用AI助手 - 指令工程

爆火的AIGC 2022年11月30日&#xff0c;OpenAI发布ChatGPT 3 2022年12月4 日&#xff0c;ChatGPT 3 已拥有超过一百万用户 2023年各种大语言模型开始火爆全球 GPT们&#xff0c;已经成为了我工作和学习的非常重要的工具。 ChatGPT也没那么神奇&#xff1f; 不知道大家有没有…

web--验证码识别,找回密码

验证码前端回显 当我不知道验证码 查看数据包就可以知道验证吗在数据包之中 burp爆破 &#xff08;前提是没有次数限制&#xff09; 更改返回数据 将成功的回显值更改 验证码更改脚本&#xff08;智能识别&#xff09; 错误的&#xff1a;只要输入一次对了&#xff0c;在bp…

OFDM-OCDM雷达通信一体化信号模糊函数对比研究【附MATLAB代码】

文章来源&#xff1a;微信公众号&#xff1a;EW Frontier 1.引言 为提高频谱利用率并实现系统小型化、集成化,近年来雷达通信一体化系统成为重要研究方向。正交线性调频波分复用(OCDM)信号是利用菲涅尔变换形成的一组正交线性啁啾(chirp)信号,基于OCDM 的雷达通信一体化信号不…

【重要】Heygen订阅指南和用法详解!让照片学说话?一张照片变演讲?Heygen订阅值得吗?

常见问题 Q&#xff1a;Heygen是什么&#xff1f;Heygen是什么玩意&#xff1f; A&#xff1a;Heygen是一款由AI视频工具,创作者只需要上传视频并选择要翻译的语言&#xff0c;该工具可实现自动翻译、调整音色、匹配嘴型。为了方便理解&#xff0c;笔者利用Heygen制作了一个AI视…

C语言中字符串函数以及内存函数的使用和注意事项

目录 0. 前言 1、求字符串长度函数 1.1、strlen 模拟实现 2.长度不受限制的字符串函数 2.1 strcpy 模拟实现 2.2strcat 模拟实现 2.3strcmp 模拟实现 3.长度受限制的字符串函数 3.1strncpy 3.2strncat 3.3strncmp 4、字符串查找函数 4.1strstr 模拟实现 3.2strt…

【C/C++笔试练习】线程作用、磁盘的固定块、多进程、进行调度、cache、内存抖动、非抢占CPU调度、inode描述、文件操作、进制、最难的问题、因子个数

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;线程作用&#xff08;2&#xff09;磁盘的固定块&#xff08;3&#xff09;多进程&#xff08;4&#xff09;进行调度&#xff08;5&#xff09;cache&#xff08;6&#xff09;内存抖动&#xff08;7&#xff09;非抢占…

一台服务器同时启动两个版本jdk

之前Java项目都是1.8的jdk&#xff0c;在服务器部署正常使用&#xff0c;服务器配置环境变量jdk1.8版本。最近一次我用了jdk17版本&#xff0c;部署服务器后&#xff0c;遇见了jdk版本不一致报错 报错内容&#xff1a; 52指向jdk1.8,61指向jdk17&#xff0c;大概就是jdk版本不…

第十六届“华中杯”B 题使用行车轨迹估计交通信号灯周期问题

某电子地图服务商希望获取城市路网中所有交通信号灯的红绿周期,以便为司机提供更好的导航服务。由于许多信号灯未接入网络,无法直接从交通管理部门获取所有信号灯的数据,也不可能在所有路口安排人工读取信号灯周期信息。所以,该公司计划使用大量客户的行车轨迹数据估计交通…

条件编译 #和##运算符

目录 1. #运算符2. ##运算符3. 条件编译4. 题目分享总结 正文开始 前言: 本章为C语言语法完结撒花, 下文将进行C语言中#和##操作符以及条件编译的讲解, 来进一步让我们了解C语言. 作者主页: 酷酷学!!! 1. #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带…

牛客社区所有的表和SQL语句

文章目录 1 帖子表 discuss_post1.1 字段描述1.2 相关功能描述1.2.1 分页查询帖子1.2.2 查询帖子总数量1.2.3 插入一条帖子记录1.2.4 根据帖子ID查询某条帖子1.2.5 更新帖子评论数量1.2.6 更新帖子类型1.2.6 更新帖子状态1.2.7 更新帖子分数 2 用户表 user2.1 字段描述2.2 相关…

cesium primitive 移动 缩放 旋转 矩阵

旋转参考&#xff1a;cesium 指定点旋转rectangle Primitive方式 矩阵篇-CSDN博客 平移参考&#xff1a;cesium 调整3dtiles的位置 世界坐标下 相对坐标下 平移矩阵-CSDN博客 一、primitive方式添加polygon let polygonInstance new Cesium.GeometryInstance({geometry: Ce…

陆金所控股一季报到底是利好还是利空?

3月底&#xff0c;陆金所控股&#xff08;LU.N;06623.HK&#xff09;因其特别分红方案受到市场高度关注。但在4月23日发布的2024年一季度财报中&#xff0c;陆金所控股营收同比下降30.9%&#xff0c;净亏损8.3亿元。 两者对比&#xff0c;外界不由得对公司的经营状况产生疑惑。…

ROS 话题订阅模型之自定义消息类型 C++实现

ROS 话题订阅模型之自定义消息类型 1.自定义消息类型好处 ROS提供了许多标准的消息类型&#xff0c;如 std_msgs/String、sensor_msgs/Image 等&#xff0c;涵盖了很多常见的数据类型和传感器数据。但是&#xff0c;在实际的开发中&#xff0c;我们经常会遇到需要传输的数据类…