HTTP超文本传输协议详解

1.引言
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2.HTTP协议介绍
1.HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
2.HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
3.HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图http/https
在这里插入图片描述
4.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
5.HTTP默认的端口号为80,HTTPS默认的端口号为443。

3.HTTP协议工作流程
一次HTTP操作称为一个事务,其工作过程大概如下:
1.用户在浏览器中键入需要访问网页的URL或者点击某个网页中链接;
2.浏览器根据URL中的域名,通过DNS解析出目标网页的IP地址;

浏览器请求这个页面:http://hackr.ip/index.html。
在这一步,需要域名系统DNS解析域名hackr.ip,得主机的IP地址 20X.189.105.112。
然后将上面结合本机自己的信息,封装成一个http请求数据包。

每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的
HTTP协议是一种文本协议,所以,它的格式也非常简单。HTTP GET请求的格式:
	GET /path HTTP/1.1
	Header1: Value1
	Header2: Value2
	Header3: Value3
每个Header一行一个,换行符是\r\n。

HTTP POST请求的格式:
	POST /path HTTP/1.1
	Header1: Value1
	Header2: Value2
	Header3: Value3

	body data goes here...
当遇到连续两个\r\n时,Header部分结束,后面的数据全部是Body。

HTTP响应的格式:
	200 OK
	Header1: Value1
	Header2: Value2
	Header3: Value3

	body data goes here...
HTTP响应如果包含body,也是通过\r\n\r\n来分隔的。请再次注意,Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

3.在HTTP开始工作前,客户端首先会通过TCP/IP协议来和服务端建立链接(TCP三次握手)
4.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
5.服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
6.一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
在这里插入图片描述

3.1短连接
短连接的操作步骤是:建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽。
在这里插入图片描述

3.2 长链接
长链接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。
长链接操作步骤:建立连接——数据传输…(保持连接)…数据传输——关闭连接
长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
长链接分为 without pipelining 和 with pipelining,下图中是without pipelining,客户端只在收到前一个请求的响应后,才发出新的请求。
在这里插入图片描述
下图是with pipelining,每次建立链接后无需等待请求回来就可以发送下一个请求。
在这里插入图片描述

4.HTTP请求报文
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、请求体组成,下图给出了请求报文的一般格式。
在这里插入图片描述

请求行:
    方法:
        GET 获取资源
        POST 向服务器端发送数据,传输实体主体
        PUT 传输文件
        HEAD 获取报文首部
        DELETE 删除文件
        OPTIONS 询问支持的方法
        TRACE 追踪路径
    协议/版本号
    URL
    
请求头:
    通用首部(General Header)
    请求首部(Request Header)
    响应首部(Response Header)
    实体首部(Entity Header Fields)
    
请求体

请求报文拆解:
在这里插入图片描述

4.1GET请求
在这里插入图片描述

4.2POST请求
在这里插入图片描述

5.HTTP响应报文
HTTP响应组成:响应行、响应头、响应体。

响应行
    (HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
响应头
    Date:生成响应的日期和时间;
    Content-Type:指定了MIME类型的HTML(text/html),编码类型是ISO-8859-1
响应体

在这里插入图片描述
响应报文拆解:
在这里插入图片描述

6.HTTP状态码
在这里插入图片描述

2XX 成功:
	200(OK 客户端发过来的数据被正常处理
	204(Not Content 正常响应,没有实体
	206(Partial Content 范围请求,返回部分数据,响应报文中由Content-Range指定实体内容
	
3XX 重定向:
	301(Moved Permanently) 永久重定向
	302(Found) 临时重定向,规范要求,方法名不变,但是都会改变
	303(See Other) 和302类似,但必须用GET方法
	304(Not Modified) 状态未改变, 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
	307(Temporary Redirect) 临时重定向,不该改变请求方法

4XX 客户端错误:
	400(Bad Request) 请求报文语法错误
	401 (unauthorized) 需要认证
	403(Forbidden) 服务器拒绝访问对应的资源
	404(Not Found) 服务器上无法找到资源

5XX 服务器端错误:
	500(Internal Server Error)服务器故障
	503(Service Unavailable) 服务器处于超负载或正在停机维护

7.首部字段
7.1通用首部字段
在这里插入图片描述
7.2请求首部字段
在这里插入图片描述
7.3响应首部字段
在这里插入图片描述
7.4实体首部字段
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值