IP/TCP和HTTP(1.0 1.1 2.0),HTTPS的区别及联系

本文深入解析了TCP/IP协议的功能及其实现数据传输的方式,并对比介绍了HTTP作为应用层协议的作用和其不同版本的发展历程,包括从HTTP/0.9到HTTP/1.1的变化以及HTTP/2的最新改进。

TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

  IP协议IP(Internet protocol),这里的IP不是值得我们通常所说的192.168.1.1.这个IP指的是一种协议,而后面的数字值得是IP地址。IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人。

  TCP协议如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。

  HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

HTTP发展历史:

   HTTP 0.9只能识别HTML文件,只有一个命令get。

  1996年5月,HTTP/1.0 版本发布,内容大大增加。

  首先,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。

  其次,除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。

HTTP/1.0 版的主要缺点是,每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。

  1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。

客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。

  1.1 版还引入了管道机制(pipelining),即在同一个TCP连接里面,客户端可以同时发送多个请求。这样就进一步改进了HTTP协议的效率。

  缺点:虽然1.1版允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个回应,才会进行下一个回应。要是前面的回应特别慢,后面就会有许多请求排队等着。造成“队头阻塞”。

  2009年,谷歌公开了自行研发的 SPDY 协议,主要解决 HTTP/1.1 效率不高的问题。

  2015年,HTTP/2 发布。它不叫 HTTP/2.0,是因为标准委员会不打算再发布子版本了,下一个新版本将是 HTTP/3。

  HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了"队头堵塞"。

HTTP和HTTPS的区别;

  HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

### HTTP 1.0HTTP 1.1 HTTP 2.0 的版本差异与特性 HTTP 协议经历了多次迭代,从最初的 HTTP 1.0 到如今的 HTTP 2.0,每个版本都在性能、安全性以及功能上进行了显著改进。以下是它们之间的核心区别关键特性: #### HTTP 1.0 - **连接方式**:HTTP 1.0 默认使用短连接(即每次请求/响应后立即关闭连接)。这导致在传输多个资源时需要频繁建立断开连接,增加了延迟[^1]。 - **头部字段**:缺乏 `Host` 字段支持,无法在同一 IP 地址上区分不同的主机名。 - **状态码扩展**:引入了部分新的状态码(如 409 410),但整体仍较为有限。 - **缓存机制**:早期版本对缓存的支持较弱,主要依赖于简单的 `Expires` 字段。 #### HTTP 1.1 - **长连接与 Keep-Alive**:HTTP 1.1 引入了持久连接(也称为长连接)的概念,允许在一个 TCP 连接中复用多次请求响应,从而减少握手开销[^4]。 - **流水线模式**:支持流水线模式(Pipeline),允许客户端在收到前一个响应之前发送多个请求,但仍然存在队头阻塞问题[^4]。 - **头部字段扩展**:新增了 `Host` 字段,支持虚拟主机托管;同时引入了更丰富的缓存控制字段(如 `Cache-Control` `Range`),增强了对部分资源下载的支持。 - **错误处理**:增加了更多的状态码以更精确地描述服务器端或客户端的行为。 #### HTTP 2.0 - **多路复用**:HTTP 2.0 的最大特点是支持多路复用(Multiplexing),允许多个请求响应在同一连接中并发传输,有效解决了 HTTP 1.x 中的队头阻塞问题[^3]。 - **头部压缩**:采用 HPACK 算法对请求响应头部进行压缩,显著减少了头部数据的传输量。 - **服务器推送**:通过 Server Push 功能,服务器可以在客户端请求之前主动推送相关资源,进一步优化加载速度[^4]。 - **二进制分帧**:将原本基于文本的协议转换为二进制格式,提高了解析效率兼容性。 - **TLS 强制支持**:尽管理论上 HTTP 2.0 可以运行在明文 HTTP 上,但主流浏览器(如 Chrome Firefox)仅支持基于 TLS 部署的 HTTP 2.0[^2]。 #### 性能优化的关键点 HTTP 2.0 的设计重点在于降低延迟,而非单纯提升带宽利用率。通过多路复用更高效的 TCP 连接管理,HTTP 2.0 能够充分利用高带宽网络环境下的性能优势[^5]。 ```python # 示例代码展示 HTTP 请求的基本结构(Python 实现) import http.client conn = http.client.HTTPSConnection("example.com") headers = {'User-Agent': 'Mozilla/5.0'} conn.request("GET", "/", headers=headers) response = conn.getresponse() print(response.status, response.reason) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值