【Hello Network】DNS协议 NAT技术 代理服务器

本篇博客简介:介绍DNS协议 NAT技术和代理服务器

网络各协议补充

  • DNS
    • DNS背景
    • DNS介绍
    • DNS总结
    • 域名简介
  • NAT技术
    • NAT技术背景
    • NAT IP转换过程
    • NAPT
    • NAT技术缺陷
    • NAT和代理服务器
  • 网络协议总结
    • 应用层
    • 传输层
    • 网络层
    • 数据链路层

DNS

DNS是一整套从域名映射到IP的系统

DNS背景

为什么要有域名

其实作为我们程序员来说 使用域名还是IP地址是无所谓的

但是站在商业公司和用户的角度就不这么认为了

商业公司希望用户能够快速的记住自己公司的网址 而用户也希望自己喜欢网站的网址好记一点 方便访问

这个时候域名的作用就显现出来了 它能够让ip地址变得更好记

DNS介绍

它是怎么工作的

在这里插入图片描述
我们在浏览器中输入网址之后 该网址就会首先发送给域名解析服务器

在解析完毕之后 域名解析服务器就会返回给我们一个ip地址

之后我们就可以用这个ip地址访问真正的服务器了

域名服务器的重要性

有的同学可能会认为域名服务器所做的工作十分简单 可有可无

但是实际上域名服务器是一种十分重要的网络技术

有人可能会说 我们不是可以直接用ip地址访问吗

对 是可以这样子做 这是因为我们是程序员 或多或少有一定的知识储备 事实上让全体国民都放弃使用域名而使用ip不现实

就比如在伊拉克战争期间 美国关停了域名服务器对于伊拉克的服务 导致伊拉克的互联网企业造成了毁灭性的打击

为什么有时候我们能够正常使用qq正常打游戏但是不能使用浏览器访问网页

此时极有可能是我们浏览器内置的DNS解析服务器挂掉了

DNS总结

  • DNS是应用层的协议
  • DNS底层使用的是UDP协议
  • 浏览器会缓存DNS结果

域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称

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

NAT技术

NAT技术背景

之前我们讨论了 IPv4协议中 IP地址数量不充足的问题NAT技术当前解决IP地址不够用的主要手段 是路由器的一个重要功能

  • NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法
  • 很多学校, 家庭 公司内部采用每个终端设置私有IP 而在路由器或必要的服务器上设置全局IP
  • 全局IP要求唯一 但是私有IP不需要 在不同的局域网中出现相同的私有IP是完全不影响的

NAT IP转换过程

IP转换过程如下图
在这里插入图片描述

  • 首先我们准备发送一个消息 目标地址是 163.221.120.9 源地址是 10.0.0.10 (私有ip)
  • 这个消息经过NAT路由器之后我们原本的源IP被转化为了路由器的wanIP 202.244.174.37
  • 当NAT路由器收到外部数据的时候又会把IP从202.244.174.37 转化为 10.0.0.10 (私有ip)
  • 在NAT路由器内部 有一张自动生成的 用于地址转换的表
  • 10.0.0.10 第一次向 163.221.120.9发送数据时就会生成表中的映射关系

NAPT

那么问题来了 如果局域网内 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中 目的IP都是相同的

那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机呢

这个时候我们回顾之前学过的知识 我们可以通过IP+PORT唯一的确定网络中的一个程序

但是经过我们的NAT技术转换之后 我们的IP都统一了 假如说局域网中两台主机使用的端口号再一致 那么在数据返回的时候我们就无法确定 这是局域网中哪台主机发送的数据了

在这里插入图片描述

而在NAPT技术中 我们会制作一张地址转换表 表的两边互为key值

加入在局域网中有两个端口号相同的程序 那么在这张表中 NAT路由器会自动更改其中一个程序的端口来保证一一对应

NAT技术缺陷

  • 无法从NAT外部向内部服务器建立连接 (其实是可以使用内网穿透技术实现的)
  • 装换表的生成和销毁都需要额外开销
  • 通信过程中一旦NAT设备异常 即使存在热备 所有的TCP连接也都会断开

NAT和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转 完成子网设备和其他子网设备的通信过程

代理服务器看起来和NAT设备有一点像

客户端向代理服务器发送请求 代理服务器将请求转发给真正要请求的服务器 服务器返回结果后 代理服务器又把结果回传给客户端

正向代理

我们客户端向服务器请求数据的时候并不直接将请求发送给服务器 而是发送给代理服务器

代理服务器帮助我们访问一些我们不能访问的网站

反向代理

我们客户端在请求数据的时候并不直接发送给服务器 而是发送给反向代理服务器

反向代理服务器接收到请求之后分配给服务器 之后服务器构建响应并且转给反向代理服务器

之后由反向代理服务器转给客户端

NAT和代理服务器的区别

  • 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器
  • 从底层实现上讲 NAT是工作在网络层 直接对IP地址进行替换 代理服务器往往工作在应用层
  • 从使用范围上讲 NAT一般在局域网的出口部署 代理服务器可以在局域网做 也可以在广域网做 也可以跨网

正向代理和反向代理的区别

  • 正向代理主要服务于客户端 反向代理主要服务于服务器
  • 在正向代理中 服务器不知道真正的客户端是谁 在反向代理中 客户端不知道真正的服务器是谁

网络协议总结

应用层

  • 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
  • 能够根据自己的需求, 设计应用层协议.
  • 理解HTTP协议
  • 了解DNS协议原理和工作流程

传输层

  • 传输层的作用: 负责数据能够从发送端传输接收端.
  • 理解端口号的概念.
  • 认识UDP协议, 了解UDP协议的特点
  • 认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.
  • 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
  • 能够基于UDP实现可靠传输.
  • 理解MTU对UDP/TCP的影响.

网络层

  • 网络层的作用:在复杂的网络环境中确定一条合适的路径。
  • 理解IP地址,理解IP地址和MAC地址的区别。
  • 理解IP协议格式
  • 理解如何解决IP数目不足的问题,掌握网段划分的两种方案,理解私有IP和公网IP
  • 理解网络层的IP地址路由过程,理解一个数据包如何跨网段到达最终目的地
  • 理解IP数据包分片的原因
  • 了解NAT设备的工作原理

数据链路层

  • 数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
  • 以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等
  • 以太网帧格式
  • 理解mac地址
  • 理解arp协议
  • 理解MTU

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

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

相关文章

情人节特别篇:用c++弹奏音乐“海阔天空”与“孤勇者”

W...Y的主页 💕 代码库分享 😊 目录 孤勇者 海阔天空 今天是2023年8月22日七夕情人节,但是对我来说就是再普通不过的日子。我相信有很多人期待这一天的到来,和自己的对象出去享受快乐时光。但是我只有一个人独孤的度过短暂的时…

Nginx的HTTPS部署与安全性能优化

Nginx作为一款高性能的Web服务器和反向代理服务器,被广泛用于应用部署和负载均衡。在安全环保意识的逐渐提高下,HTTPS也成为现代Web应用中必不可少的一环。本篇文章将重点介绍Nginx的HTTPS部署和安全性能优化。 一、Nginx的HTTPS部署 证书申请 首先需要去…

vscode c++编译时报错

文章目录 1. 报错内容:GDB Failed with message;2. 报错内容:Unable to start debugging. 1. 报错内容:GDB Failed with message; 例如上图报错,一般就是编译器选择错误,有两种方法解决: 打开 tasks.json …

前端面试:【移动端开发】PWA、Hybrid App和Native App的比较

在移动端开发中,开发者有多种选择,包括渐进式Web应用(PWA),混合应用(Hybrid App)和原生应用(Native App)。每种方法都有其独特的优势和适用场景。本文将对它们进行比较&a…

【随笔】如何使用阿里云的OSS保存基础的服务器环境

使用阿里云OSS创建一个存储仓库:bucket 在Linux上下载并安装阿里云的ossutil工具 // 命令行,是linux环境 3. 安装ossutil。sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash 说明:安装过程中,需要使用解压工具…

Django(2)-编写你的第一个 Django 应用

本教程的目的是创建一个网络投票应用程序。 它将由两部分组成: 一个让人们查看和投票的公共站点。 一个让你能添加、修改和删除投票的管理站点。 创建应用 $ python manage.py startapp polls每一个应用是一个python包,一个项目可以包含多个应用。 …

百度Apollo:引领自动驾驶技术的创新与突破

文章目录 前言一、技术创新二、开放合作三、生态建设四、安全可靠性总结 前言 随着科技的迅猛发展,自动驾驶技术正成为未来交通领域的重要发展方向。在这个领域中,百度Apollo作为中国领先的自动驾驶平台,以其卓越的创新能力和开放合作精神&a…

深入Golang之Mutex

深入Golang之Mutex 基本使用方法 可以限制临界区只能同时由一个线程持有。 直接在流程结构中使用 lock、unlock嵌入到结构中,然后通过结构体的 mutex 属性 调用 lock、unlock嵌入到结构体中,但是是直接在需要锁定的资源方法中使用,让外界无…

hive分区表 静态分区和动态分区

一、静态分区 现有数据文件 data_file 如下: 2023-08-01,Product A,100.0 2023-08-05,Product B,150.0 2023-08-10,Product A,200.0 1、创建分区表 CREATE TABLE sales (sale_date STRING,product STRING,amount DOUBLE ) PARTITIONED BY (sale_year INT, sale_mon…

WPF基础入门-Class2-样式

WPF基础入门 Class2&#xff1a;样式 1、内联样式&#xff1a;优先度最高 <Grid><StackPanel><!--内联样式优先度高--><Button Background"Red" Height"10" Width"100"FontSize"20"Content"SB">…

nginx 中新增url请求参数

1、nginx中新增配置&#xff1a; set $args "$args&参数名参数值"; 示例&#xff1a; set $args "$args&demo1cn_yaojin&demo2123123&myip$remote_addr"; location / {add_header Access-Control-Allow-Origin *;add_header Access-Contro…

云原生安全:保护现代化应用的新一代安全策略

随着云计算和容器技术的快速发展&#xff0c;云原生应用已成为现代化软件开发和部署的主流趋势。然而&#xff0c;随之而来的安全挑战也变得更加复杂和严峻。本文将深入探讨云原生安全的概念、原则和最佳实践&#xff0c;帮助您理解如何有效保护云原生应用和敏感数据。 第一部…

代码随想录26|回溯总结

回溯总结:链接地址 回溯三部曲&#xff1a;参数、终止条件、for遍历(递归、回溯) 模板如下&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点…

计算机竞赛 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

ssm+vue农家乐信息平台源码和论文

ssmvue农家乐信息平台源码和论文066 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 1、研究现状 国外&#xff0c;农家乐都被作为潜在的发展农村经济&#xff0c;增加农民收入的重要手段&#xff0c;让农户广…

解决编译llvm IR文件相关报错:ld: library not found for -lzstd

使用clang编译cpp程序&#xff1a; #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Verifier.h"using namespace llvm;int main() {LLVMContext context;Module *…

【Qt专栏】实现单例程序,禁止程序多开的几种方式

目录 一&#xff0c;简要介绍 二&#xff0c;实现示例&#xff08;Windows&#xff09; 1.使用系统级别的互斥机制 2.通过共享内存&#xff08;进程间通信-IPC&#xff09; 3.使用命名互斥锁&#xff08;不推荐&#xff09; 4.使用文件锁 5.通过网络端口检测 一&#xf…

LLM提示词工程和提示词工程师Prompting and prompt engineering

你输入模型的文本被称为提示&#xff0c;生成文本的行为被称为推断&#xff0c;输出文本被称为完成。用于提示的文本或可用的内存的全部量被称为上下文窗口。尽管这里的示例显示模型表现良好&#xff0c;但你经常会遇到模型在第一次尝试时无法产生你想要的结果的情况。你可能需…

文件服务器实现方式汇总

hello&#xff0c;伙伴们&#xff0c;大家好&#xff0c;今天这一期shigen来给大家推荐几款可以一键实现文件浏览器的工具&#xff0c;让你轻松的实现文件服务器和内网的文件传输、预览。 基于node 本次推荐的是http-server&#xff0c; 它的githuab地址是&#xff1a;http-s…

4种方法实现html 页面内锚点定位及跳转

使用scrollIntoView进行锚点定位效果 不知道你有没有遇到这样的需求&#xff1a;锚点定位&#xff1f;进入页面某个元素需要出现在可视区&#xff1f;…这一类的需求归根结底就是处理元素与可视区域的关系。我接触了很多前端小伙伴&#xff0c;实现的方式有各种各样的&#xff…