输入网址后发生了什么???操作系统

本文详细解析了用户在操作系统层面按下网址后所经历的步骤,从物理键盘操作到操作系统中断,再到DNS查询、HTTP/TLS交互直至页面渲染。通过介绍各个操作系统平台上的处理方式,揭示了浏览器如何处理输入、建立网络连接、解析URL和执行安全通信的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天有位小伙伴在论坛里说面试问这个问题,那他的回答是:

  • 客户端通过DNS解析域名得到服务器IP地址 
  • 客户端向服务器TCP连接请求,通过TCP三次握手建立socket连接 
  • 建立连接后,客户端发起一个http请求获取网页内容 
  • 网络层进行ip寻址,数据链路层封装成帧,物理层的利用物理介质传输 
  • 服务器收到请求后调用自身服务处理请求并返回http响应包 
  • 关闭TCP连接 
  • 客户端收到服务器响应内容后就开始渲染页面

哎哟喂?这不就是我辛辛苦苦准备的答案么?网上博客到的答案?在这里,我要diss一些所谓的“大牛”博客主,你写的东西就是垃圾,你抄我,我抄你,你自己写的东西都不看,然后误导别人,流下的愤青的泪水,这。。。。不扯了,看看到底怎么回答才对

按下“ g”键

以下各节说明了物理键盘操作和操作系统中断。当您按下键“ g”时,浏览器会接收到该事件,并且自动完成功能会启动。根据浏览器的算法以及您是否处于私密/隐身模式,是否会在下方的下拉菜单中为您提供各种建议网址栏。这些算法大多数都基于整个网络中的搜索历史,书签,Cookie和热门搜索对结果进行排序和优先级排序。在您输入“ google.com”时,会运行许多代码块,并且每次按键都会完善建议。在您完成输入之前,它甚至可能会建议“ google.com”。

“输入”键触底

要选择零点,让我们选择键盘上敲击范围底部的Enter键。此时,回车键专用的电路(直接或电容性)闭合。在这种情况下,这允许少量电流流入键盘的逻辑电路,该逻辑电路扫描每个键开关的状态,消除快速间歇性闭合开关的电噪声,并将其转换为键码整数13.然后,键盘控制器对键码进行编码,以传输到计算机。现在,这几乎普遍通过通用串行总线(USB)或蓝牙连接进行,但历史上一直通过PS / 2或ADB连接进行。

对于USB键盘:

  • 键盘的USB电路由计算机USB主机控制器通过针1提供的5V电源供电。
  • 生成的键码由内部键盘电路存储器存储在称为“端点”的寄存器中。
  • 主机USB控制器每隔约10毫秒(由键盘声明的最小值)轮询一次“端点”,因此它将获取存储在其上的键码值。
  • 该值进入USB SIE(串行接口引擎),以转换为遵循低级USB协议的一个或多个USB数据包。
  • 这些数据包通过D +和D-引脚(中间2个)上的差分电信号以最大1.5 Mb / s的速度发送,因为HID(人机接口设备)设备始终被声明为“低速设备”。 (符合USB 2.0)。
  • 然后,该串行信号在计算机的主机USB控制器上解码,并由计算机的人机接口设备(HID)通用键盘设备驱动程序进行解释。然后将密钥的值传递到操作系统的硬件抽象层。

对于虚拟键盘(如在触摸屏设备中):

  • 当用户将手指放在现代电容式触摸屏上时,少量电流会转移到手指上。这通过导电层的静电场完成了电路,并在屏幕上的该点产生了电压降。在 screen controller随后引发中断报告按键的坐标。
  • 然后,移动操作系统会在其GUI元素之一(现在是虚拟键盘应用程序按钮)中向当前关注的应用程序通知按下事件。
  • 虚拟键盘现在可以引发软件中断,以将“按键被按下”消息发送回操作系统。
  • 该中断通知当前关注的应用程序“按键”事件。

中断触发[不适用于USB键盘]

键盘在其中断请求线(IRQ)上发送信号,该中断请求线interrupt vector由中断控制器映射到(整数)。CPU使用Interrupt Descriptor Table(IDT)将中断向量映射到interrupt handlers内核提供的函数()。当中断到达时,CPU用中断向量索引IDT并运行适当的处​​理程序。这样就进入了内核。

(在Windows上)一条WM_KEYDOWN消息发送到该应用程序

HID传输将密钥按下事件传递给KBDHID.sys驱动程序,该驱动程序将HID用法转换为扫描代码。在这种情况下,扫描代码为 VK_RETURN0x0D)。该KBDHID.sys驱动程序与KBDCLASS.sys(键盘类驱动程序)接口 。该驱动程序负责以安全的方式处理所有键盘和小键盘输入。然后,它调用 Win32K.sys(可能在将消息通过安装的第三方键盘过滤器传递之后)。这一切都发生在内核模式下。

Win32K.sys通过GetForegroundWindow()API 找出哪个窗口是活动窗口 。该API提供了浏览器地址框的窗口句柄。然后,主Windows“消息泵”会调用 SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, lParam)lParam是一个位掩码,指示有关按键的更多信息:重复计数(在这种情况下为0),实际扫描代码(可以取决于OEM,但通常不用于VK_RETURN),是否扩展键(例如alt,shift,ctrl)也被按下(没有),以及其他一些状态。

Windows SendMessageAPI是一种简单易用的功能,可将消息添加到特定窗口句柄(hWnd)的队列中。稍后,将调用WindowProc分配给的主要消息处理功能(称为)hWnd以处理队列中的每个消息。

hWnd处于活动状态的窗口()实际上是一个编辑控件, WindowProc在这种情况下,它具有消息的消息处理程序WM_KEYDOWN。该代码在传递给SendMessage (wParam)的第3个参数内查找,因为它VK_RETURN知道用户已按ENTER键。

(在OS X上)KeyDownNSEvent发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值