当浏览器访问一个链接时计算机都做了哪些事

       当往浏览器地址栏输入一串地址敲下回车键,浏览器就会给我们展示出一个可视化的页面。看似很简单的操作,但背后凝聚了多年来IT人员的辛苦耕耘。我上家公司里经常喜欢拿这个问题来当作面试题,现在我是没有这个当面试官的机会了。

       一次请求大致过程包括:域名解析--> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求--> 浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

       当访问一个域名地址时,浏览器首先要把域名解析成公网IP地址,这一步是通过DNS来解析,会访问DNS服务商查找域名对应的IP,查找到后会把结果缓存下来,后面对该域名的访问就不再进行DNS解析,浏览器第一次打开一个网站时会比较慢这个DNS初次解析是慢的原因之一。当然浏览器会先检查缓存中域名对应的IP有没有,然后检查本地的hosts有没有配置该域名,都没有的话才会去访问DNS服务商。如果是内部网络需要通过网关才能上网的,这里还可能会发生一次ARP广播查找网关机器。当同一子网内直接通过IP通信时也需要ARP广播来找到目的机器的Mac地址。

       拿到IP之后,客户端首先要通过TCP三次握手来建立连接, TCP协议会对请求数据包进行封装并由IP协议进行传输,ICMP协议进行控制,中间会经过不同的路由器最终到达目的主机的网卡接口,这中间的过程我是讲不明白,也不太清楚,省略。

       说说TCP三次握手吧,TCP协议通过三次握手建立一个可靠的连接,TCP是IP的上层协议,反正IP层是并不知道什么三次握手四次挥手,IP只管运输数据。第一次握手:Client首先发送一个连接试探,ACK=0 表示确认号无效,SYN = 1 表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示Client自己的初始序号(seq = 0 就代表这是第0号包),这时候Client进入syn_sent状态,表示客户端等待服务器的回复。第二

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值