当前位置: 首页 > article >正文

网络补充 总结

目录

DNS(Domain Name System)

域名简介

负载均衡

DNS概念

DNS背景

ICMP协议 

概念

ICMP功能

ICMP的报文格式 

ping 命令

traceroute 命令 

NAT 技术  

NAT技术背景

NAT IP转换过程

NAPT 

NAT技术的缺陷

NAT和代理服务器

正向代理和反向代理

那么NAT和代理服务器的区别有哪些呢

网络总结

应用层

传输层

网络层

数据链路层


C语言总结 在这 常见八大排序 在这
作者和朋友建立的社区: 非科班转码社区-CSDN社区云 💖 💛 💙
期待hxd的支持哈 🎉 🎉 🎉
最后是打鸡血环节: 少年不该止步于此 🚀 🚀 🚀
最近作者和好友建立了一个公众号
公众号介绍:

专注于自学编程领域。由USTC、WHU、SDU等高校学生、ACM竞赛选手、CSDN万粉博主、双非上岸BAT学长原创。分享业内资讯、硬核原创资源、职业规划等,和大家一起努力、成长。( 二维码在文章底部哈! )

DNS(Domain Name System)

域名简介

域名解析属于应用层,是UDP(因为简单不用建立连接,需要直接发起)来实现域名解析功能的。

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

负载均衡

对于每个公司可能底层不止一个域名(虽然对外只暴露一个公网ip),比如ping www.baidu.com 就会发现还有一个。

一个公司假设有三个机房,对应有5个域名分别在三个机房当中,用户访问的时候,就随机拿到一个域名,这样就可以做到机房访问的负载均衡。
当然如果直接ip访问那就是对特定服务器的访问,所以这也就域名解析的作用。

DNS概念

域名解析属于应用层,是UDP(因为简单不用建立连接,需要直接发起)来实现域名解析功能的。
DNS 是一整套从域名映射到 IP 的系统。 

DNS背景

TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 . 但是 IP 地址不方便记忆 .
于是人们发明了一种叫主机名的东西 , 是一个字符串 , 并且使用 hosts 文件来描述主机名和 IP 地址的关系。

最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的。

  • 如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.
  • 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.

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

  • 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
  • 如果新计算机接入网络, 将这个信息注册到数据库中;
  • 用户输入域名的时候, 会自动查询DNS服务器, DNS服务器检索数据库, 得到对应的IP地址.

至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容

cat /etc/hosts

ICMP协议 

概念

ICMP 协议是一个 网络层协议。
一个新搭建好的网络 , 往往需要先进行一个简单的测试 , 来验证网络是否畅通 ; 但是 IP 协议并不提供可靠传输 . 如果丢包了, IP 协议并不能通知传输层是否丢包以及丢包的原因。

ICMP功能

ICMP正是提供这种功能的协议; ICMP主要功能包括:

  • 确认IP包是否成功到达目标地址.
  • 通知在发送过程中IP包被丢弃的原因.
  • ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
  • ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;

ICMP的报文格式 

ICMP大概分为两类报文 :

  • 一类是通知出错原因
  • 一类是用于诊断查询

ping 命令

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

PS:ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. ICMP中根本就不关注端口号这样的信息.  

traceroute 命令 

也是基于 ICMP 协议实现 , 能够打印出可执行程序主机 , 一直到目标主机之前经历多少路由器 .

NAT 技术  

NAT技术背景

之前我们讨论了 , IPv4 协议中 , IP 地址数量不充足的问题
NAT 技术当前解决 IP 地址不够用的主要手段 , 是路由器的一个重要功能 ;
  • NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的;

NAT IP转换过程

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时, 又会把目标IP202.244.174.37替换回10.0.0.10;
  • NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
  • 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAPT 

发数据之前讲了
如何回来:

如果局域网内 , 有多个主机都访问同一个外网服务器 , 那么对于服务器返回的数据中 , 目的 IP 都是相同的. 那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机 ?
这时候 NAPT 来解决这个问题了 . 使用 IP+port 来建立这个关联关系
NAT在你进行发送数据的时候,不仅仅是对源ip进行转化,同时内部存储了一张转化表

数据发送的时候,把相应数据存表,回来的时候,查表(替换目的IP和Port)返回(表左右两边互为KEY值)(这种技术称为NAT,这张表称为NAPT)
NAT穿透

首先我们知道了如果我们不去访问公网,那么公网就无法主动访问我们,因为路由器里面没有存我们与公网对应的表项,然后就有NAT穿透技术,他其实就是你主机的一个程序,隔一段时间就去访问公网,让路由器去建立我们和公网的表项。(这就是把我们自己的主机公开,那么我们自己的主机也就可以充当一台服务器了!)
这种关联关系也是由 NAT 路由器自动维护的 . 例如在 TCP 的情况下 , 建立连接时 , 就会生成这个表项 ; 在断开连接后 , 就会删除这个表项。

NAT技术的缺陷

由于 NAT 依赖这个转换表 , 所以有诸多限制:
无法从 NAT 外部向内部服务器建立连接 ;
装换表的生成和销毁都需要额外开销 ;
通信过程中一旦 NAT 设备异常 , 即使存在热备 , 所有的 TCP 连接也都会断开 ;

NAT和代理服务器

路由器往往都具备 NAT 设备的功能 , 通过 NAT 设备进行中转 , 完成子网设备和其他子网设备的通信过程 .
代理服务器看起来和 NAT 设备有一点像 . 客户端向代理服务器发送请求 , 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后 , 代理服务器又把结果回传给客户端 .

正向代理和反向代理

正向代理用于请求的转发(例如借助代理绕过反爬虫)(比如翻墙).
(比如访问校园网,里面就有服务器可以对你进行访问的资源进行拦截,合法就再把请求转发给外网(正向代理作用:1 对访问请求过滤或者拦截 2 提高效率(例如在校园网中,可能有其他人在请求公网的资源时,已经被代理服务器缓存了,你再去请求的话,就不需要再经过公网,直接由代理服务器进行返回 3 可以有身份认证(校园网) 4 一定程度保护了内网(比如禁止访问github,那么你用校园网就访问不了了))
反向代理往往作为一个缓存.
(比如外面的客户端去访问机房里面的服务器,因为安全问题所以机房里面的服务器不公开,但是机房里面有一个服务器专门去接收客户端的请求,然后不做任务处理,再去转发给对应服务器,然后由服务器直接返回给客户端)
(反向代理作用:1 把压力均衡的去把请求交给服务端,称为负载均衡 2 在反向代理中,在接收请求之前还有一个防火墙,就是一个或多个路口路由器,对报文进行拦截,非法请求就不要你去访问。也可以对客户设置黑白名单进行拦截。所以他可以保证内网的安全)

那么NAT和代理服务器的区别有哪些呢

从应用上讲 , NAT 设备是网络基础设备之一 , 解决的是 IP 不足的问题 . 代理服务器则是更贴近具体应用 , 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器 , 也是使用代理服务器 .
从底层实现上讲 , NAT 是工作在网络层 , 直接对 IP 地址进行替换 . 代理服务器往往工作在应用层 .
从使用范围上讲 , NAT 一般在局域网的出口部署 , 代理服务器可以在局域网做 , 也可以在广域网做 , 也可以跨网.
从部署位置上看 , NAT 一般集成在防火墙 , 路由器等硬件设备上 , 代理服务器则是一个软件程序 , 需要部署在服务器上.
代理服务器是一种应用比较广的技术 .
翻墙 : 广域网中的代理 .
负载均衡 : 局域网中的代理 .
代理服务器又分为正向代理和反向代理 .

网络总结

应用层

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

传输层

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

网络层

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

数据链路层

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

最后的最后,创作不易,希望读者三连支持💖

赠人玫瑰,手有余香💖


http://www.kler.cn/a/1155.html

相关文章:

  • 西电-神经网络基础与应用-复习笔记
  • 如何测试一个AI系统?
  • 三天吃透操作系统面试八股文
  • flink多流操作(connect cogroup union broadcast)
  • selenium(5)-------自动化测试脚本(python)
  • 高完整性系统工程(三): Logic Intro Formal Specification
  • XGBoost和LightGBM时间序列预测对比
  • 【python刷题】leecode官方提示“->“,“:“这些符号是什么意思?什么是Type Hints?
  • 八 SpringMVC【拦截器】登录验证
  • 通过Cursor 工具使用GPT-4的方法
  • CSDN 编程竞赛三十七期题解
  • 入行 5年,跳槽 3次,我终于摸透了软件测试这行(来自过来人的忠告)
  • 2023年网络安全比赛--网络安全事件响应中职组(超详细)
  • 拥抱 Spring 全新 OAuth 解决方案
  • 字节跳动软件测试岗,前两面过了,第三面HR天坑!竟然跟我说……
  • Thread的基本操作
  • QT入门Item Views之QListView
  • 内存泄漏定位工具之 valgrind
  • ARM uboot 的移植4 -从 uboot 官方标准uboot开始移植
  • JetPack Compose入门知识
  • 【工作中问题解决实践 七】SpringBoot集成Jackson进行对象序列化和反序列化