网络面试题

网络面试题

输入url到页面加载发生了什么

  • 输入地址浏览器
  • 查找域名的 IP 地址 这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存…
  • 浏览器向 web 服务器发送一个 HTTP 请求
  • 服务器的永久重定向响应(从 http://example.com 到 http://www.example.com)
  • 浏览器跟踪重定向地址
  • 服务器处理请求服务器返回一个 HTTP 响应
  • 浏览器显示 HTML
  • 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)
  • 浏览器发送异步请求

浏览器与服务器建立tcp连接后是否会在完成http请求后断开?什么情况情况下断开

在http/1.0协议中,服务器在发送完一个http响应后,会断开tcp连接,频繁的重新建立和断开连接,开销过大,某些服务器对Connection: keep-alive 的 Header 进行了支持。
在http/1.1协议中,默认开启持久连接,除非请求头中声明了Connection:close。那么浏览器与服务器之间是会维持一段事件的tcp连接的。
默认情况下建立tcp连接后不会断开,只有在请求头中声明Connection:close才会在请求完成后关闭连接

一个tcp连接可以对应几个http请求

多个

一个tcp连接中多个http请求可以一起发送吗

http/1.1协议中,单个tcp连接在同一时刻只能处理一个请求。规定了Pipelining 来试图解决这个问题,但是这个功能在浏览器中默认是关闭的。

Pipelining:一个支持持久连接的客户端可以在一个连接中发送多个请求(不需要等待任意请求的响应)。收到请求的服务器必须按照请求收到的顺序发送响应。

返回的内容并不能区分对应于哪个发送的请求,所以顺序必须保持一致。默认是不开启的,在实际开发过程中也会出现许多问题:

  • 代理服务器不一定能正确处理Pipelining
  • 实现方式是很复杂的
  • 前面的请求阻塞了,会影响后面的请求响应

HTTP2 提供了 Multiplexing 多路传输特性,可以在一个 TCP 连接中同时完成多个 HTTP 请求。

总结: 在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送,但是由于浏览器默认关闭,所以可以认为这是不可行的。在 HTTP2 中由于 Multiplexing 特点的存在,多个 HTTP 请求可以在同一个 TCP 连接中并行进行。

浏览器对同一host建立tcp连接的数量有没有限制

HTTP/1.1 时代,那个时候没有多路传输,Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。

如果图片都是 HTTPS 连接并且在同一个域名下,那么浏览器在 SSL 握手之后会和服务器商量能不能用 HTTP2,如果能的话就使用 Multiplexing 功能在这个连接上进行多路传输。不过也未必会所有挂在这个域名的资源都会使用一个 TCP 连接去获取,但是可以确定的是 Multiplexing 很可能会被用到。如果发现用不了 HTTP2 呢?或者用不了 HTTPS(现实中的 HTTP2 都是在 HTTPS 上实现的,所以也就是只能使用 HTTP/1.1)。那浏览器就会在一个 HOST 上建立多个 TCP 连接,连接数量的最大限制取决于浏览器设置,这些连接会在空闲的时候被浏览器用来发送新的请求,如果所有的连接都正在发送请求呢?那其他的请求就只能等等了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机网络是计算机科学中的一个重要领域,面试中常常会涉及到计算机网络的基础知识。以下是一些常见的计算机网络面试题基础: 1. 什么是计算机网络? 计算机网络是指将多台计算机通过通信设备连接起来,实现信息交换和资源共享的系统。 2. OSI七层模型是什么? OSI七层模型是一种将计算机网络通信过程划分为七个不同层次的模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 3. TCP/IP协议族包括哪些协议? TCP/IP协议族包括IP协议、TCP协议、UDP协议、HTTP协议、FTP协议等。 4. 什么是IP地址和MAC地址? IP地址是用于在网络中唯一标识一个设备的地址,分为IPv4和IPv6两种格式。MAC地址是网卡的物理地址,用于在局域网中唯一标识一个设备。 5. TCP和UDP的区别是什么? TCP是面向连接的可靠传输协议,提供数据传输的可靠性和顺序性;UDP是无连接的不可靠传输协议,提供数据传输的快速性和实时性。 6. 什么是HTTP协议? HTTP协议是一种用于传输超文本的应用层协议,常用于Web浏览器和Web服务器之间的通信。 7. 什么是DNS? DNS(Domain Name System)是用于将域名转换为IP地址的分布式数据库系统,实现域名解析功能。 8. 什么是网络拓扑结构? 网络拓扑结构指的是计算机网络中各个节点之间连接的方式,常见的拓扑结构有总线型、星型、环型、树型等。 9. 什么是路由器和交换机? 路由器是一种网络设备,用于在不同网络之间转发数据包;交换机是一种网络设备,用于在局域网内转发数据包。 10. 什么是网络安全? 网络安全是指保护计算机网络及其资源不受未经授权的访问、使用、披露、破坏、修改或干扰的能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值