打开一个网站会建立几次TCP连接?每次HTTP请求不需要重新建立TCP连接吗?

  1. 打开一个网站,建立几次TCP连接?
    建立1次是对的吗?
    如果我打开的这个网页,比如百度(www.baidu.com),不仅只有一次对url进行的http请求,同时还会有对图片发起的http请求,
    此外还有 ajax 的请求,每次都是单独完整的 http 请求,我不知道 css 文件和 js文件是不是也需要通过http请求来进行的
  2. 每次进行的http请求是否会重新打开socket进行连接?
    那打开socket连接时不是就等于又进行了三次握手建立了TCP连接?
  3. 如果在http基础上还有https的证书验证,这个证书验证是在每次http请求之前需要进行验证?

访问一个网站 ,例如https://segmentfault.com/,用浏览器访问时,他的响应如下
图片描述

发现了有很多次http请求,他们每次请求时这样的吗?

  1. 通过三次握手建立tcp连接
  2. https验证证书的合法性
  3. 使用http协议通过建立的tcp链接发送http协议文本
  4. 关闭连接

重复执行1-4直到所有请求完成?

阅读 19.3k
2 个回答

在同一个页面中,请求比较多的话,可以打开HTTP KeepAlive, 复用连接,避免3次握手带来的开销。
HTTP2.0 进一步优化,通过多路复用技术,允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。也就是可以在在一次传输中发送多个css,js,图片等资源。

1、首先多个HTTP请求并不代表有多个TCP连接,当然这个场景下肯定会有多个TCP连接

2、在一个TCP连接上完成一个HTTP请求后,可以在利用这个TCP的连接在发HTTP请求

3、不用,只在第一次

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题