网络编程面试题(二)HTTP相关

从浏览器输入地址到呈现页面中间发生了什么事情(通信过程)

1,浏览器(客户端)进行地址解析。
浏览器获取到一个字符串,并把它进行补全,成为一个URL。
2,将解析出的域名进行dns解析。
DNS解析,将域名转换为IP地址。有如下几个步骤:
1,先查看浏览器dns缓存中是否有域名对应的ip。
2,如果没有,则产看操作系统dns缓存中是否有对应的ip(例如windows的hosts文件)。
3,依旧没有就对本地区的dns服务器发起请求,
4,如果还是没有,就直接到Root Server域名服务器请求解析。
3,通过ip寻址和arp,找到目标(服务器)地址。
通过IP寻址服务器,通过ARP协议找到服务器的MAC地址。
4,进行tcp三次握手,建立tcp连接。
5,浏览器发送数据,等待服务器响应。
6,服务器处理请求,并对请求做出响应。
7,浏览器收到服务器响应,得到html代码。
8,渲染页面。

HTTP1.0

会话方式:反复创建和断开TCP连接(短连接
1,TCP三次握手建立连接
2,客户端向服务端发送请求信息
3,服务端回应响应信息
4,关掉连接
每次请求响应要消耗2个RTT时间,建立连接RTT+请求和响应RTT=2RTT

HTTP1.1

默认进行长连接
在服务器发送相应后仍然在一段时间内保持这条连接。
问题:长连接的下一个连接中的请求是串行的,如果某个请求出现网络阻塞问题,会导致同一条连接上的后续请求被阻塞。
非流水线工作方式:
客户端发送给服务端一个请求->服务端回发一个响应报文。
在客户端接收到响应报文之后,才允许发下一个请求,用时一个RTT(报文往返时间)
缺点:服务器发送一个对象后,处于空闲状态,浪费资源。
流水线工作方式:(pipelining)
客户在收到http响应报文之前就能够接着发送新的请求报文,因此服务器可以连续返回响应报文。
能够使TCP连接的空闲时间减少,提高下载效率。

一个PING的例子:
https://blog.csdn.net/ztsinghua/article/details/83413264

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值