DNS解析
概述
DNS
(域名系统)解析是将域名(如www.example.com
)转换为对应的IP
地址(如93.184.216.34
)的过程- 这一过程对于在互联网上定位和访问网站或其他网络资源至关重要
概念
- 域名
- 用于定位服务器的易于记忆的地址,例如
google.com
- 用于定位服务器的易于记忆的地址,例如
IP
- 每个设备的唯一地址,如
192.168.1.1
- 每个设备的唯一地址,如
DNS
服务器- 负责将域名解析为 IP 地址的服务器
解析
- 用户请求
- 用户在浏览器输入一个域名或通过应用程序发起网络请求
- 本地
dns
缓存查询- 操作系统首先检查本地
DNS
缓存(如果存在),看是否有该域名的解析记录 - 如果有,直接使用该
IP
地址完成请求
- 操作系统首先检查本地
- 向
dns
服务器查询- 如果本地缓存没有找到记录,操作系统会向配置的
DNS
服务器发送查询请求 - 这通常是
ISP
(互联网服务提供商)的DNS
服务器,或者是公共DNS
服务,如Google
的8.8.8.8
- 如果本地缓存没有找到记录,操作系统会向配置的
- 递归和迭代查询
DNS
服务器首先检查自己的缓存- 如果没有缓存记录,
DNS
服务器执行递归查询(向更高级别的DNS
服务器查询),或者返回一个更高级别的DNS
服务器地址让客户端进行迭代查询
- 根
dns
服务器查询- 如果需要,查询从根
DNS
服务器开始,这些服务器知道如何找到顶级域名(如.com
、.net
)的DNS
服务器
- 如果需要,查询从根
- 顶级域名
tld
服务器查询- 根
DNS
服务器将请求重定向到负责该顶级域名的TLD
服务器
- 根
- 权威
dns
服务器查询TLD
服务器进一步重定向到该域名的权威DNS
服务器,这是该域名的最终解析服务器
- 获取
ip
地址- 权威
DNS
服务器回应请求的IP
地址
- 权威
- 返回结果至客户端
IP
地址沿着查询链路返回给最初请求的客户端
- 缓存结果
- 客户端和/或本地
DNS
服务器缓存DNS
查询结果以加速未来的访问
- 客户端和/或本地
注意
- 缓存
- 为了减少
DNS
查询的次数,提高解析速度,DNS
查询结果通常会在不同级别(操作系统、浏览器、路由器、DNS
服务器等)被缓存一段时间
- 为了减少
- 安全
DNS
解析可能受到各种攻击,如DNS
缓存投毒,因此出现了安全增强的DNS
,如DNSSEC
- 分布式和冗余
- 为了提高可靠性和速度,
DNS
系统是高度分布式的,有多个备份和冗余机制
- 为了提高可靠性和速度,
TCP/IP协议
概述
TCP/IP
(传输控制协议/互联网协议)是一套互联网通信协议的集合,它定义了在网络中的设备如何进行数据传输TCP/IP
协议栈通常被描述为一个分层模型,每层执行特定的功能,协同工作以实现数据在网络中的传输
四层模型
- 应用层
- 位于
TCP/IP
协议栈的最顶层 - 包括了各种应用程序协议,如
HTTP
(网页)、SMTP
(邮件)、FTP
(文件传输)等 - 应用层协议负责处理特定类型的网络数据交换
- 位于
- 传输层
- 负责在网络中的两个点之间提供数据传输
- 主要的协议有
TCP
(传输控制协议)和UDP
(用户数据报协议)
- 网络层
- 处理数据包在网络中的活动,如路由选择和数据包转发
- 这一层的核心是
IP
(互联网协议),它定义了数据包的格式和地址系统(如IPv4
和IPv6
地址) - IP 协议负责将数据包从源主机路由到目标主机
- 链路层
- 链路层是协议栈的最底层
- 包括用于实际网络连接的物理和数据链路协议,如以太网、
Wi-Fi
- 负责在物理网络媒介上发送和接收数据帧
HTTP/HTTPS协议
概述
HTTP
(超文本传输协议)和HTTPS
(HTTP
安全)是互联网上用于数据传输的两种主要协议- 它们在网络通信中扮演着核心角色,尤其是在
Web
浏览和数据交换方面
HTTP
- 是一个用于传输超文本(如
HTML
文档)的应用层协议 - 它基于请求-响应模式,在客户端(通常是
Web
浏览器)和服务器之间传输数据- 客户端发送一个
HTTP
请求到服务器,请求可以是GET
(请求数据)、POST
(提交数据)、PUT
(更新数据)等 - 服务器处理请求并返回一个
HTTP
响应,其中包含状态码(如200 OK
、404 Not Found
)和请求的数据(如果有)
- 客户端发送一个
HTTP
是无状态的,意味着每个请求都是独立的,服务器不会保存请求之间的状态HTTP
通常使用TCP
端口80
HTTPS
HTTPS
是HTTP
的安全版本,它在HTTP
和TCP
层之间加入了SSL/TLS
协议,为数据传输提供了加密HTTPS
的目的是保证数据传输的安全性和完整性,防止数据在传输过程中被窃听或篡改
- 在
HTTPS
连接建立时,客户端和服务器之间会进行一系列握手操作,协商加密算法和交换密钥- 此后传输的数据都会被加密,保证通信的私密性
HTTPS
使用证书来验证服务器的身份,防止“中间人攻击”- 这些证书通常由第三方机构(证书颁发机构,
CA
)签发
- 这些证书通常由第三方机构(证书颁发机构,
HTTPS
通常使用TCP
端口443
对比
HTTPS
提供了比HTTP
更高的安全性,主要通过加密和认证实现- 加密和解密过程使得
HTTPS
在性能上稍微有一些开销,尽管现代技术已经大幅减少了这种影响
请求响应
dns
解析- 浏览器首先将
URL
中的域名(如www.example.com
)解析为IP
地址。这通常通过查询DNS
(域名系统)来完成
- 浏览器首先将
tcp
连接- 一旦获取到服务器的
IP
地址,浏览器会在端口80
(HTTP
默认端口)上与服务器建立TCP
连接 TCP
连接的建立包括一个称为“三次握手”的过程,确保稳定的双向通信
- 一旦获取到服务器的
- 发送
http
请求- 浏览器构造一个
HTTP
请求消息
这个消息包括请求行(如GET /index.html HTTP/1.1
)、请求头(如Host: www.example.com
、User-Agent: Mozilla/5.0
)和请求体(对于某些请求类型如POST
) - 浏览器通过建立的
TCP
连接将请求消息发送到服务器
- 浏览器构造一个
- 服务器处理请求
- 服务器接收
HTTP
请求并解析请求行和头部,以确定所请求的资源和行为 - 服务器根据请求处理相应的动作,如获取静态文件、查询数据库、运行服务器端脚本等
- 服务器构造一个 HTTP 响应消息
这个消息包含状态行(如HTTP/1.1 200 OK
)、响应头(如Content-Type: text/html
)和响应体(实际的资源内容)
- 服务器接收
- 发送
http
响应- 服务器通过同一个
TCP
连接将响应消息发送回客户端(浏览器)
- 服务器通过同一个
- 客户端处理响应
- 浏览器接收服务器的响应消息,并根据状态码判断请求是否成功
- 对于成功的请求,浏览器通常会解析响应体的内容,并显示在用户界面上
例如,如果响应是一个HTML
页面,浏览器会解析并渲染它 - 除非
HTTP
请求头中指定了Connection: keep-alive
,否则在交换完请求和响应之后,TCP
连接会被关闭
- 缓存
- 根据响应头中的缓存指令,浏览器可能会缓存某些资源,以提高后续请求的效率
https加密
HTTPS
(HTTP Secure
)的请求过程在总体上与HTTP
非常相似- 主要的区别在于数据传输过程中加入了加密和解密的步骤。这个过程提供了更高的数据安全性,保护了数据传输过程中的隐私和完整性
- 在
TCP
连接建立(即三次握手完成)之后,如果是HTTPS
连接,则会进行TLS
握手
TLS
握手是一个用于安全通信的协议握手过程,包括:- 客户端和服务器协商
包括版本信息、选择加密套件、交换随机数等 - 服务器身份验证
服务器发送其SSL
证书给客户端。客户端验证证书的有效性 - 密钥交换
客户端可能会发送预主密钥(pre-master secret
),它经过服务器的公钥加密 - 握手结束
双方基于共享的秘密计算出会话密钥,并开始加密通信
- 客户端和服务器协商
相关概念
路由
- 用于连接多个网络,并在网络之间转发数据包
- 路由器处理的是数据包的转发,无论这些数据包的具体内容或应用类型是什么
- 主要用于在网络层(如
IP
层)上决定数据包的最佳路径- 路由器使用路由表和路由协议来确定数据包从源地址到目的地址的路径
- 可以在不同网络拓扑中动态地调整路由,以应对网络变化和故障
网关
- 是不同网络或网络协议之间的桥梁
- 它使得使用不同协议、架构或操作系统的网络能够相互通信
- 通常用于连接彼此不兼容的网络,如连接一个基于以太网的内部网络到一个基于不同协议的外部网络
- 网关能够翻译或转换不同网络协议,确保数据能够在这些网络之间正确地传输和理解
- 网关(
Gateway
)在网络通信模型中可以工作在不同的层次,具体取决于它执行的任务和协议类型- 当网关处理高层协议(如
HTTP
、FTP
、SMTP
等)的转换时,它工作在应用层
这种类型的网关可能涉及协议之间的转换,比如将一个协议的数据格式转换为另一个协议的格式 - 如果网关处理的是传输层协议(如
TCP
或UDP
)的转换或封装,那么它工作在传输层
例如,一些VPN
网关就在这一层工作,它们封装或解封装经过VPN
传输的数据包 - 当网关处理不同网络之间的路由和地址转换时,比如在
IPv4
和IPv6
网络之间,它工作在网络层
例如,网络地址转换(NAT
)设备通常在这一层工作
- 当网关处理高层协议(如
IP地址
IP
地址是互联网协议(IP
)网络中设备的唯一标识- 用于识别网络中的每个设备,如计算机、路由器、智能手机等
- 在
IPv4
中,IP
地址是一个32
位的数字,通常表示为四个十进制数(每个数范围从0
到255
),由点分隔- 例如
192.168.1.1
- 例如
- 在
IPv6
中,IP
地址是一个128
位的数字,通常表示为八组四个十六进制数,由冒号分隔- 如
fe80::4b8:4751:d82c:81f6
- 如
网关地址
- 网关地址指的是本地网络中的一个设备(通常是路由器)
- 它作为本地网络与外界通信的出口
- 网关地址通常是
IP
地址,格式与普通IP
地址相同 - 当数据需要发送到本地网络外部时,它首先发送到网关地址
- 网关负责将这些数据转发到正确的目的地
所有的数据包都走网关吗?
- 如果数据包的目的地是同一局域网(LAN)内的另一台设备,那么数据包通常直接在局域网内部路由,不经过网关
- 在这种情况下,交换机或者是无线接入点直接将数据传送到正确的目的地
- 如果数据包的目的地在局域网外部,比如互联网上的某个服务器,那么数据包会被发送到网关
- 网关(通常是路由器)负责将这些数据包转发到外部网络
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Linux 高性能服务器编程:IP协议09/04
- ♥ Macos网络信息相关06/06
- ♥ QUIC协议相关学习一03/24
- ♥ HTTP 协议10/22
- ♥ Linux 高性能服务器编程:TCP一11/21
- ♥ HTTP协议相关学习一03/22