【网络协议栈】TCP/IP协议栈中重要协议和技术(DNS、ICMP、NAT、代理服务器、以及内网穿透)

news2024/12/12 18:29:50

请添加图片描述
每日激励:“请给自己一个鼓励说:Jack我很棒!—Jack”

绪论​:
本章是TCP/IP网络协议层的完结篇,本章将主要去补充一些重要的协议和了解一些网络中常见的名词,具体如:DNS、ICMP、NAT、代理服务器、以及内网穿透。下面我将还会出一篇总结篇,所以本章其实也并不能完全算的完结篇 hh~,敬请期待吧!
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。


1. DNS

  • 现在浏览器中我们使用的是域名(www.baidu.com)
  • 但浏览器并不是直接通过域名就能找到对应的网站的,而是通过这个域名去域名服务器转化成 ip 后才去访问的
  • DNS是应用层协议

域名使用: 通过 . 连接
以百度的域名www.baidu.com为例:

  1. com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等.
  2. baidu: 二级域名, 公司名.
  3. www: 只是一种习惯用法。之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议(www万维网)

域名代替使用ip在url中使用
这样更加的见名之意且容易记住
具体转换如下图:
在这里插入图片描述

浏览器中输入url后,发生的事情分俩阶段来聊

  1. 粗力度的回答http请求和应答,必要的时候谈谈https
  2. 和面试官沟通是否需要谈更多的细节

2. ICMP

ICMP协议是一个网络层的协议
它的功能主要下面几点:

  1. 确认IP包是否成功到达目标地址
  2. 通知在发送过程中IP包被丢弃的原因
  3. 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通(也就是通过ICMP协议类似于ping)。
  4. ICMP也是基于IP协议工作的。但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议;
  5. ICMP只能搭配IPv4使用。如果是IPv6的情况下, 需要是用ICMPv6;

大概工作流程如下:
在这里插入图片描述
在这里插入图片描述

ICMP的报文格式

在这里插入图片描述
其中就是通过类型来返回错误信息

类型:
在这里插入图片描述

ping命令底层就是通过原始套接字调用ICMP实现的
在这里插入图片描述
注意:

  1. 此处 ping 的是域名,而不是url。 一个域名可以通过DNS解析成IP地址。
  2. ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期)。
  3. ping命令会先发送一个 ICMP Echo Request给对端,对端接收到之后, 会返回一个ICMP Echo Reply

在这里插入图片描述
一个值得注意的坑:
有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口
ping是没有端口号的,它是基于ICMP的在网络层。而端口号,是用于传输层的。在ICMP中根本就不关注端口号这样的信息,也不会交给一般的上层应用,仅在双方网络层相互交互。

3. NAT技术

之前已经进行过一定的阐述:

  1. 子网中的ip是不会出现在外网(公网)中的,因为为了解决ipv4不够用的情况所以在不同的子网中是允许出现相同的ip的。
  2. 所以源ip在出自己的子网后,会被替换成当前子网的路由器的WAN口IP
    出去在公网中使用

    在这里插入图片描述
    通过路由器把源地址替换再继续经过网络达到目的地址
    回来:
    在这里插入图片描述
    在出去的时候会记录一张转换表,最终回来的时候通过出去是记录的映射关系,就能找到对应的源地址转换回来。

注意:

  1. NAT路由器右侧不一定是公网,可能是运营商的子网(不影响继续转发即可,因为每次转发都有记录转换表就能找到回来的路径)
  2. NAT替换的过程,不仅仅是替换WLAN IP,必要时会替换端口(port冲突时生成一个随机端口然后建立映射)
  3. NAT路由器中可能会映射条目太多这样就会分为:家用路由器、企业级路由器

NAT技术的缺陷
由于NAT依赖这个转换表,所以会有诸多限制:

  1. 无法从NAT外部向内部服务器建立连接(外网服务器在没有提前被内网服务器访问时无法直接访问内网服务器,因为转换表由内网构建,当没有提前访问时就没有映射外网就无法通过转换表找到主机/服务器
  2. 转换表的生成和销毁是需要额外开销的
  3. 通信过程中一旦NAT设备异常,所有TCP连接也都会断开。

4. 代理服务器

代理服务器基本操作是:进行网络的转发,客户端将请求发送给代理服务器,代理服务器再将请求转发给目标服务器,并将目标服务器的响应返回给客户端。

4.1 正向代理服务器:

在代理服务器的基础上,正向代理服务器他会将报文进行缓存,并可以进行安全检查。
在这里插入图片描述

类似于:学校的校园网是学校通过安装自己的正向代理服务器来进行的,他内置了操作系统对学生的操作以及外部的操作进行一定的管理。

作用:

  1. 对用户的行为进行监控(禁止不正常的行为,有些学校会禁止ssh操作这样你就无法登录你的云服务器)
  2. 对外部网络无法访问学校内部资源,保护内网安全
  3. 对访问过的资源缓存,当再次访问相同资源时就能直接使用不用再去加载

4.2 反向代理服务器

功能:

同样在代理服务器响应功能的基础上,客户端将请求发送给反向代理服务器,反向代理服务器根据请求将其转发给适当的目标服务器(后端服务器),并将目标服务器的响应返回给客户端(对于客户端来说,反向代理服务器就是目标服务器)

其中反向代理服务器能应用于负载均衡模式:
在这里插入图片描述
功能:

  1. 合理的使用内网资源(实现负载均衡(也就是所有机器都忙闲一致))
  2. 保护内网
  3. 能添加各种安全防护

5. NAT vs 代理服务器

  1. 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题

  2. 代理服务器则是更贴近具体应用(用于转发), 比如通过代理服务器进行翻墙,另外像迅游这样的加速器, 也是使用代理服务器。在这里插入图片描述

  3. 从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换。代理服务器往往工作在应用层

  4. 从使用范围上讲,NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网

  5. 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上

翻墙原理:

通过访问其他能访问外部资源的主机去访问外部资源,然后在通过这主机将资源返回给自己(中间先访问该主机是合理的,我们将数据进行加密,该主机收到后解密就知道自己要访问的是那了,然后访问后缓存起来加密的再发送回去,最终解密即可)
在这里插入图片描述

6. 内网穿透(打洞)

在这里插入图片描述
原理:

  1. 云服务器能从运营商中得到想要访问的对方主机的出口路由器的公网ip和端口
  2. 可以把运营商的出口路由器的公网IP和端口作为响应报文的正文,发回给请求方,这样主机就能知道对方公网的出口路由器的信息、同时就为出口路由器建立NAT转化表(为了能进行通信提前做,从而提高效率)。
  3. 所以假设两台主机执行上面操作
  4. 这样主机就能通过运营商得知另外一台主机的出口路由器的公网IP和port
  5. 直接让两台主机直接通信(就能一定的提高效率不再每次都经过广域网)

附:

  • 当多台主机时同样也是行的,当多台主机访问同一台主机的数据(如直播行业)
  • 可以通过frp工具实现(就不扩展了)

本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量计算机网络细致内容,早关注不迷路。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

离屏渲染概述

我们知道,图像的处理基本都是在GPU中进行,然后GPU将渲染的结果放入当前渲染屏幕的帧缓冲区中,视频控制器取出里面的内容,在屏幕上进行显示。那么有没有什么情况,会因为某些限制,GPU无法将全部的渲染结果直接…

探索 Python 应用的分层依赖:解决 Linux 环境中的 libvirt-python 安装问题

探索 Python 应用的分层依赖:解决 Linux 环境中的 libvirt-python 安装问题 背景Python 版本升级 问题描述原因分析与解决方案 Python 应用的分层依赖:安装与部署的视角libvirt-python的分层依赖尝试的解决方案 使用编译好的 .whl 文件"嫁接"整…

vmware vsphere5---部署vCSA(VMware vCenter Server)附带第二阶段安装报错解决方案

声明 因为这份文档我是边做边写的,遇到问题重新装了好几次所以IP会很乱 ESXI主机为192.168.20.10 VCSA为192.168.20.7,后台为192.168.20.7:5480 后期请自行对应,后面的192.168.20.57请对应192.168.20.7,或根据自己的来 第一阶段…

Unity3D下采集camera场景并推送RTMP服务实现毫秒级延迟直播

技术背景 好多开发者,希望我们能够分享下如何实现Unity下的camera场景采集并推送rtmp服务,然后低延迟播放出来。简单来说,在Unity 中实现采集 Camera 场景并推送RTMP的话,先是获取 Camera 场景数据,通过创建 RenderTex…

指令周期流程图

例题一 例题二 例题三

使用C#通过ColorMatrix对象为图像重新着色

此示例产生了一些令人印象深刻的结果,但实际上非常简单。 它使用其他几个示例演示的 ImageAttribute 技术来快速操作图像的颜色。 下面的AdjustColor方法启动图像着色的过程。 // Adjust the images colors. private Image AdjustColor(Image image) {// Make the …

SQL 在线格式化 - 加菲工具

SQL 在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql,点击上方的格式化按钮即可 输入框得到格式化后的sql结果

AI作图效率高,亲测ToDesk、顺网云、青椒云多款云电脑AIGC实践创作

一、引言 随着人工智能生成内容(AIGC)的兴起,越来越多的创作者开始探索高效的文字处理和AI绘图方式,而云电脑也正成为AIGC创作中的重要工具。相比于传统的本地硬件,云电脑在AIGC场景中展现出了显著的优势,…

【密码学】SM4算法

一、 SM4算法简介 SM4算法是中国国家密码管理局于2012发布的一种分组密码算法,其官方名称为SMS4(SMS4.0),相关标准为GM/T 0002-2012《SM4分组密码算法》。SM4算法的分组长度和密钥长度均为128比特,采用非平衡Feistel结构。采用32…

Proteus(8.15)仿真下载安装过程(附详细安装过程图)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、Proteus是什么? 二、下载链接 三、下安装步骤 1.解压,有键管理员运行 2.点击Next,进行下一步 3.勾选I accept…&#…

【工业机器视觉】基于深度学习的水表盘读数识别(4-训练与预测)

【工业机器视觉】基于深度学习的仪表盘识读(读数识别)(3)-CSDN博客 训练与预测 Ultralytics YOLO指的是由Ultralytics公司开发的一系列基于YOLO(You Only Look Once)架构的目标检测算法。YOLO是一种实时目标检测系统,它…

AlphaPose、yolov8Pose、RTMPose进行对比

一、Alphapose 参考: https://blog.csdn.net/m0_45850873/article/details/123939849

MongoDB-ObjectID 生成器

前言 MongoDB中一个非常关键的概念就是 ObjectID,它是 MongoDB 中每个文档的默认唯一标识符。了解 ObjectID 的生成机制不仅有助于开发人员优化数据库性能,还能帮助更好地理解 MongoDB 的设计理念。 什么是 MongoDB ObjectID? 在 MongoDB …

ARM学习(36)静态扫描规则学习以及工具使用

笔者来学习了解一下静态扫描以及其规则,并且亲身是实践一下对arm 架构的代码进行扫描。 1、静态扫描认识 静态扫描:对代码源文件按照一定的规则进行扫描,来发现一些潜在的问题或者风险,因为不涉及代码运行,所以其一般只是发现一些规范或则一些质量问题,当然这些可能存在潜…

从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级

从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步:查看源码第二步:启动类迁移第三步:引入 Gateway 依赖第四步 编写bootstrap.yaml第五步:替换路由配置第六步&#…

centos部署SkyWalking并在springcloud项目中用法举例

文章目录 场景SkyWalking介绍部署部署Storage [单机版Elasticsearch]部署SkyWalking OAP [下载地址](https://skywalking.apache.org/downloads/#SkyWalkingAPM)部署SkyWalking Java Agent springCloud 使用举例 场景 SkyWalking是应用性能监控平台,可用于分布式系统…

如何借助5G网关实现油罐车安全在线监测

油罐车是常见的特种运输车辆,用以运送各种汽油、柴油、原油等油品,运输危险系数大,而且由于油罐车需要经常行驶在城区道路,为城市各个加油站点、企业工厂运输补充所需油料,因此也是危化品运输车辆的重点监测和管控对象…

【总结·反思·汇报·思考02】裸辞后,我的一些感想和感悟。

Hello,大家好! 首先,我需要向大家道个歉,对不起!因为最近发生了一些事情,博客文章一直没有更新。(90度鞠躬道歉) 那么,最近到底发生了什么呢?相信大家已经从…

李宏毅机器学习-局部最小值与鞍点

一、Optimization Fails because …… 1. 问题 在optimization时,training的loss不会再下降,但是我们对loss并不满意。不管我们怎么更新参数,loss都不会掉下来。 2. 原因:critical point(gra…

day10性能测试(2)——Jmeter安装环境+线程组+Jmeter参数化

【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、LoadRunner vs Jmeter 1.1 LoadRunner 1.2 Jmeter 1.3 对比小结 2、Jmeter 环境安装 2.1 安装jdk 2.2 安装Jmeter 2.3 小结 3、Jmeter 文件目录结构 4、Jmeter默认配置修改 5、Jmeter元件、组…