计算机网络面试高频:输入域名会发生那些操作,开放性回答

news/2024/10/18 20:32:17/

在这里插入图片描述

更多大厂面试内容可见 -> http://11come.cn

计算机网络面试高频:输入域名会发生那些操作,开放性回答

输入域名之后,会发生哪些操作?

当在浏览器中输入www.baidu.com并按下回车键时,会触发一系列复杂的网络过程,包括DNS解析、TCP连接建立、HTTP请求和响应等。以下是这个过程中发生的详细步骤,分层次地说明每一个环节,

域名 www.baidu.com 其实最后还有一个点,即 www.baidu.com. ,域名级别从右到左递减,根域名为 . ,顶级域名为 .com ,二级域名为 baidu ,三级域名为 www

1、首先会经过通过 DNS 解析 将域名解析为对应的 IP 地址

在 DNS 解析之前 ,浏览器会先检查是否存在 DNS 缓存,存在则返回

如果没有,之后会检查操作系统是否存在 DNS 缓存,存在则返回(Linux 中可以通过 /ets/hosts 文件设置,可以将域名解析到任意能够访问的 IP 地址)

如果都没有,则会向本地 DNS 服务器发送域名解析请求

DNS 服务器解析过程: 首先,客户端发送一个 DNS 解析请求给【本地 DNS 服务器】,如果本地 DNS 服务器中存在域名与 IP 的映射,就直接返回

如果没有,本地 DNS 服务器会去请求【根域名服务器】解析 www.baidu.com,根域名服务器发现顶级域名为 .com ,于是将 .com 的顶级域名服务器地址返回

接下来,本地 DNS 服务器会再去请求 .com 的【顶级域名服务器】解析 www.baidu.com,顶级域名服务器会返回 baidu.com 域名服务器的地址

接下来,本地 DNS 服务器会再去请求 baidu.com 的【权威域名服务器】,该权威域名服务器就会返回 www.baidu.com 域名对应的 IP 地址

image-20240427142801983

经过 DNS 域名解析,客户端就拿到了域名对应的 IP 地址,接下来双方就可以建立 TCP 连接进行通信了

2、双方建立 TCP 连接

客户端拿到了域名对应的 IP 地址,就可以向该 IP 地址发送 TCP 连接建立的请求了,通过 三次握手 双方建立了 TCP 连接,之后就可以进行网络通信了

3、数据传输

image-20240427154833804

当客户端需要发送数据的时候,应用层会发起 HTTP 请求,接下来到了 传输层 ,HTTP 请求的数据就会被封装在 TCP报文 中,并且添加上 TCP 头信息(包含了源、目的端口号、序列号、确认号等信息)

接下来到了 网络层 ,TCP 报文会被封装在 IP 报文 中,并添加上 IP 头信息(包含了源 IP、目的 IP 等信息)

接下来到了 数据链路层 ,IP 报文会被封装在 MAC 报文 中,并添加上 MAC 头信息(包含了源 MAC、目的 MAC 等信息)

接下来到了 物理层 ,到了物理层会将数字信息转为电信号,电信号通过网线进行传输,完成数据发送的功能,这一步通过网卡来完成,即网卡收到数据包之后,将数据转为电信号通过网线发送出去,之后电信号到达了 交换机 ,交换机通过 MAC 报文 头部的 MAC 地址进行数据的转发,之后到达了 路由器 ,路由器会根据 IP 报文 头部的 IP 地址进行数据的转发

之后数据包抵达服务器,服务器对数据包进行一层一层拆分,先将 MAC 报文 的头部拿出来,判断 MAC 地址等信息是否符合,之后将 IP 报文 的头部拿出来,判断 IP 地址等信息是否符合,之后将 TCP 报文 的头部拿出来,判断序列号、端口号等信息是否符合,如果都符合就将这个数据包发送给服务端监听这个端口的应用进程,这就完成了一次请求数据的传递了

当双方数据传输完毕之后,通过 四次挥手 断开双方的 TCP 连接即可

扩展:可以再添加上 HTTPS 中的 TLS 握手阶段

如果使用 HTTPS 通信的话,在 TCP 握手建立 TCP 连接之后,还需要通过 TLS 握手来协商双方加密的 对称密钥 ,可以将 TLS 握手阶段给说一下

那么 TLS 握手的过程总共包含了 4 次通信 ,在 4 次通信之后,TLS 协议也就建立成功了,可以进行 HTTPS 通信了,TLS 握手过程中的 4 次通信如下:

1、第一次通信 ClientHello :客户端向服务端发送加密请求,主要是协商 TLS 版本、随机数(生成后续的对称密钥)

2、第二次通信 ServerHello :服务端向客户端回复,主要协商 TLS 版本、随机数(生成后续的对称密钥)、数字证书(包含公钥)

3、第三次通信 客户端回应 :取出数字证书的公钥,将用于通信的 对称密钥 通过公钥加密发送给服务端

4、第四次通信 服务端最后回应 :使用自己本地的密钥进行解密,得到用于通信的 对称密钥

通过 TLS 握手阶段,双方就可以拿到对称密钥,之后双方就可以使用这个 对称密钥 进行加密通信了


http://www.ppmy.cn/news/1443349.html

相关文章

Unity 物体触碰事件监听

声明委托 public delegate void MyDelegate(Collider trigger); C# 委托(Delegate) | 菜鸟教程 (runoob.com)https://www.runoob.com/csharp/csharp-delegate.html 定义委托 public MyDelegate onTriggerEnter; public MyDelegate onTriggerStay; pu…

Flask框架进阶-Flask流式输出和受访配置--纯净详解版

Flask流式输出🚀 在工作的项目当中遇到了一种情况,当前端页面需要对某个展示信息进行批量更新,如果直接将全部的数据算完之后,再返回更新,则会导致,前端点击刷新之后等待时间过长,开始考虑到用进…

怎么检查ubuntu22.04服务器机器被挖矿了

如果怀疑你的 Ubuntu 22.04 系统被挖矿程序占用,可以通过一系列检查步骤来确认这一疑问。这些步骤可以帮助你发现系统是否存在未授权的挖矿活动: 1. 检查CPU和GPU使用率 挖矿程序通常会导致CPU或GPU的使用率异常升高。使用以下命令检查系统资源的使用情…

RAGFlow:安装与体验

服务器需要有docker,或者直接访问官方提供的demo: https://demo.ragflow.io/ docker-compose安装 需要确保 vm.max_map_count 不小于 262144 【更多】:sysctl -w vm.max_map_count=262144 克隆仓库:$ git clone https://github.com/infiniflow/ragflow.git 进入 doc…

【智能优化算法】蛇优化算法(Snake Optimizer,SO)

蛇优化算法(Aquila Optimizer,SO)是期刊“Knowledge-Based Systems”(中科院一区:IF 8.8 )的2022年智能优化算法 01.引言 蛇优化算法(Aquila Optimizer,SO)以解决模仿蛇特殊交配行为的各种优化任务。如果存在的食物量足够且温度低&#xff0…

秋招后端开发面试题 - Java多线程(下)

目录 Java多线程前言面试题synchronized?作用?synchronized 怎么使用?构造方法可以用 synchronized 修饰吗?synchronized 底层原理了解吗?除了原子性,synchronized 可见性,有序性,可…

Java代码审计-flink-streaming-platform-web

前言 项目地址:GitHub - zhp8341/flink-streaming-platform-web: 基于flink的实时流计算web平台 flink-streaming-platform-web是一个将flink封装的一个可视化的、轻量级的flink web客户端系统,用户只需在web 界面进行sql配置就能完成流计算任务。 项目…

安卓常用组件(启停活动页面、活动之间传递信息、收发应用广播、操作后台服务)

启停活动页面 Activity的启动和结束 页面跳转可以使用startActivity接口,具体格式为startActivity(new Intent(this, 目标页面.class));。 关闭一个页面可以直接调用finish();方法即可退出页面。 Activity的生命周期 页面在安卓有个新的名字叫活动,因…