HTT介绍
HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.(传输数据)
WEB是建立在http协议上的。
HTTP发送流程
1. 作为发送端的客服端在应用层(http协议)发出一个想看某个Web页面的HTTP请求。
2. 为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在报文上打上标记号后转发给网络层
3. 在网络层(ip协议),增加作为通信目的的MAC地址后转发非链路层。这样一来,发往网络的通讯请求就准备齐全了
4. 接受端的服务器在链路层接收到数据按往上层,一直到应用层。当传输到应用层,才算真正受到有客户端发送过来的HTTP请求
http报文
什么是http报文:
用于http协议交互的信息被称之为HTT报文。请求(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。
HTTP协议规定,请求从客户端发出,最后服务端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信,服务端在没有接受到请求之前不会发送响应。
http报文:
报文的组成:
请求行 解析
请求行的请求方式
Request Headers的请求行
GET/ HTTP/1.1 ——-> 起始行,请求方式get,http协议版本1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
…..
Response Headers的请求行
HTTP/1.1 200 OK ———> 起始行,htttp协议版本, 200状态码
Bdpagetype: 1
Bdqid: 0xa57b075100016e7b
Bduserid: 0
Cache-Control: private
….
HTTP首部
HTTP首部字段名和字段值(键/值对)构成的,http的首部字段可以有多个值。
Accept-Language: zh-CN,zh;q=0.8
Request Headers 首部
Response Headers首部
首部字段解析: https://en.wikipedia.Z喎?/kf/ware/vc/" target="_blank" class="keylink">vcmcvd2lraS9MaXN0X29mX0hUVFBfaGVhZGVyX2ZpZWxkczwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMyBpZD0="主体部分">主体部分
HTTP报文的主体部分:就是HTTP要传输的内容。
HTTP报文可以承载很多类型的数字数据:图片、视频、HTML文档,软件应用程序、信用卡事务、电子邮箱…..
HTTP状态码
202 请求正常处理
204 请求处理成功但是没有资源返回
206 对资源某一部分的请求
301 资源的URL已更新
302 资源的URL已经临时定位到其他位置了,302标准禁止post变为get。但实际使用大家都不遵守
303 资源的URL已经更新,是是否能临时更新URL访问
304 客服端附带条件的请求,资源已经找到,但是未符合条件请求
400 服务器无法理解这个请求
401 改状态码发送请求需要通过HTTP认证
403 不允许访问资源
404 服务器上没有资源
500 服务器内部资源出现故障
503 服务器当前不能处理客户端的请求,一段时间后可能恢复正HTTP工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
1. 客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,https://www.oakcms.cn。
2. 发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3. 服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4. 释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5. 客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5. 释放 TCP连接;
6. 浏览器将该 html 文本并显示内容;