浅谈HTTP协议

本文介绍了HTTP协议从HTTP/0.9到HTTP/1.1的发展历程,重点讲解了HTTP/1.1中的持续连接、流水线、分块传输等特性,并解释了URL的构成和HTTP请求及响应报文的格式。通过对HTTP协议的深入理解,有助于优化网络通信效率。
摘要由CSDN通过智能技术生成

前言

HTTP协议,全称Hyper Text Transfer Protocol(超文本传输协议)。HTTP协议是基于TCP/IP协议的应用层协议,规定了客户端与服务器之间的通信格式,默认使用80端口。HTTP采用了经典的客户端-服务器模型,客户端与服务器连接并发出请求,然后等待服务器响应。除此之外,HTTP是一个无状态协议,服务器并不会保留连接所传输的信息。

HTTP发展历程

HTTP从最初的HTTP/0.9到现在最常用的HTTP/1.1,历经了几个版本,功能也越来越强大。

HTTP/0.9

这个版本的HTTP只支持GET请求,且规定服务器只能回应HTML格式的字符串,所以我们通过此协议只能访问静态页面。

HTTP/1.0

HTTP/1.0废除了0.9中服务器只允许回应HTML格式字符串的规定,可以发送任何格式的内容,这代表着除了文字还可以传输图片,视频等,且该版本协议还支持POST,HEAD请求。除此之外,HTTP请求和回应的格式也变了,除了数据部分,还必须包括头部信息。

HTTP/1.1

HTTP/1.1是现在最常用的HTTP协议,相较于HTTP/1.0,其引入了许多新的特性。

持续连接

在HTTP/1.1中,TCP连接默认不关闭,可以被多个请求使用。这个连接会持续下去,直到客户端或服务器端中的一个认为会话已经结束,就可以关闭连接。

HTTP pipelining(流水线)

此特性实现了让客户端一次性发送多个请求的操作,无需再一个个等待服务器的响应。在HTTP/1.1以前,客户端要请求两个资源,就需要先发送第一个请求,然后等待服务器响应,服务器响应后再发送第二个请求。而在HTTP/1.1中,客户端能够直接发送这两个请求,不过服务器端还是按照顺序一个一个处理请求的。

分块传输

Content-length

在说分块传输之前,先得说说Content-length字段。我们知道,Content-length字段是用来标识服务器响应的长度的,所以在服务器响应之前,服务器必须计算出回应的数据长度。当我们去请求一个很大的资源时,这无疑是很耗费时间得,所以就有了分块传输的出现。

Transfer-Encoding

HTTP/1.1中规定了一个新字段Transfer-Encoding,请求包或响应包中有该字段时,就表明包中的数据有数量未知的数据块组成。在非空的数据块前,有一个十六进制的数,表明该数据块的长度,最后会有一个长度为0的块,表名数据发送完毕。


URL

URL,翻译成中文就是统一资源定位符,我们大多数人一般叫网址。URL其实就是资源在WEB上的地址,我们可以通过这个地址获取到对应的资源。我们先来看看URL的一般格式:

协议://服务器ip地址:端口/文件路径

以百度的网址为
https://www.baidu.com/

从URL中我们可以看出来,使用的是https协议,不是说要用服务器ip及端口吗,为什么这里是一串字母呢。其实这个字符串叫做域名,域名经过DNS的处理,就会解析到对应ip。至于DNS就需要自己去了解了,我这里就不多说了。那为什么端口也没有呢,这又是一个知识点了,如果web服务器使用HTTP协议的标准端口(HTTP是80,HTTPS是443)来授予其资源的访问权限,那么端口就可以被忽略,也就是说写https://www.baidu.com:443也是可以的。端口一定要写对,比如使用的是HTTPS协议,你写80端口就会导致无法连接。

HTTP请求报文

http请求包由三部分构成,请求行,请求头,请求数据,格式如下图
在这里插入图片描述
图片来自 here
在这里插入图片描述
这就是一个标准的HTTP请求报文,第一行是请求行,表示出了请求方法,路径,协议版本。下面是请求头,想深入了解HTTP头可以看这篇文章 HTTP Headers

HTTP响应报文

响应报文跟请求报文的格式基本一样,也由三部分构成,状态行,消息报头,响应正文。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值