【计算机网络】DNS/ICMP协议/NAT技术

文章目录

一、DNS(Domain Name System)

1.DNS背景

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

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.

于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.。

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

如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.

其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.

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

一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.

如果新计算机接入网络, 将这个信息注册到数据库中;

用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.

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

shell 复制代码
cat /etc/hosts

2.域名

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

复制代码
www.baidu.com

域名使用 . 连接

com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.

baidu: 二级域名, 公司名.

www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议.

3.浏览器中输入url后,发生的事情

我们可以参考一下内容:

浏览器中输入url后,发生的事情

浏览器中输入url后,发生的事情

浏览器中输入url后,发生的事情

二、ICMP协议

1.什么是ICMP协议

ICMP协议是一个 网络层协议

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

包了, IP协议并不能通知传输层是否丢包以及丢包的原因

2.ICM功能

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

确认IP包是否成功到达目标地址.

通知在发送过程中IP包被丢弃的原因.

ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;

ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;

3.ICMP的报文格式

关于报文格式, 我们稍微有个了解即可

ICMP大概分为两类报文:

一类是通知出错原因

一类是用于诊断查询

4.ping命令

注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.

ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).

ping命令会先发送一个 ICMP Echo Request给对端;

对端接收到之后, 会返回一个ICMP Echo Reply;

一个值得注意的坑

有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口?

千万注意!!! 这是面试官的圈套

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

5.traceroute命令

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

三、NAT技术

1.NAT技术背景

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题

NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;

NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:

很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;

全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的

2.NAT IP转换过程

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;

NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;

在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;

当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

3.NAPT

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

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项

4.NAT技术的缺陷

由于NAT依赖这个转换表, 所以有诸多限制:

无法从NAT外部向内部服务器建立连接;

装换表的生成和销毁都需要额外开销;

通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开;

5.NAT和代理服务器

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

代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.

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

从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.

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

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

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

代理服务器是一种应用比较广的技术.

翻墙: 广域网中的代理.

负载均衡: 局域网中的代理.

代理服务器又分为正向代理和反向代理

花王尿不湿是一个很经典的尿不湿品牌, 产自日本.

我自己去日本买尿不湿比较不方便, 但是可以让我在日本工作的表姐去超市买了快递给我. 此时超市看到的买家是我表姐, 我的表姐就是 "反向代理";

后来找我表姐买尿不湿的人太多了, 我表姐觉得天天去超市太麻烦, 干脆去超市买了一大批尿不湿屯在家里, 如果有人来找她代购, 就直接把屯在家里的货发出去, 而不必再去超市. 此时我表姐就是 "正向代理

正向代理用于请求的转发(例如借助代理绕过反爬虫).

反向代理往往作为一个缓存.

四、TCP/IP五层模型的总结

1.数据链路层

数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据

以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

以太网帧格式

理解mac地址

理解arp协议

理解MTU

2.网络层

网络层的作用: 在复杂的网络环境中确定一个合适的路径.

理解IP地址, 理解IP地址和MAC地址的区别.

理解IP协议格式.

了解网段划分方法

理解如何解决IP数目不足的问题, 掌握网段划分的两种方案. 理解私有IP和公网IP

理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.

理解IP数据包分包的原因.

了解ICMP协议.

了解NAT设备的工作原理

3.传输层

传输层的作用: 负责数据能够从发送端传输接收端.

理解端口号的概念.

认识UDP协议, 了解UDP协议的特点.

认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.

掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.

理解TCP面向字节流, 理解粘包问题和解决方案.

能够基于UDP实现可靠传输.

理解MTU对UDP/TCP的影响

4.应用层

应用层的作用: 满足我们日常需求的网络程序, 都是在应用层

能够根据自己的需求, 设计应用层协议.

了解HTTP协议.

理解DNS的原理和工作流程.

相关推荐
Sinclair7 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
JaguarJack12 小时前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo12 小时前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
Rockbean1 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
茶杯梦轩1 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
JaguarJack2 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理2 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
海天鹰2 天前
【免费】PHP主机=域名+解析+主机
服务器
不是二师兄的八戒2 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
芝士雪豹只抽瑞克五2 天前
Nginx 高性能Web服务器笔记
服务器·nginx