HTTP协议格式(请求格式、响应格式)

HTTP协议格式(请求格式、响应格式)
超⽂本传输协议
(Hypertext Transfer Protocol,简称HTTP)是应⽤层协议。HTTP 是⼀种请求/响应式的协议,即⼀个客户端服务器建⽴连接后,向服务器发送⼀个请求;服务器接到请求后,给予相应的响应信息。
HTTP 请求报⽂
HTTP 请求报⽂由请求⾏、请求头部、空⾏ 和 请求包体 4 个部分组成,如下图所⽰:
下⾯对请求报⽂格式进⾏简单的分析:
  请求⾏:请求⾏由⽅法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使⽤空格隔开。常⽤的 HTTP 请求⽅法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;
  ● GET:当客户端要从服务器中读取某个资源时,使⽤GET ⽅法。GET ⽅法要求服务器将URL 定位的资源放在响应报⽂的数据部分,回送给客户端,即向服务器请求某个资源。使⽤GET ⽅法时,请求参数和对应的值附加在 URL 后⾯,利⽤⼀个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
  ● POST:当客户端给服务器提供信息较多时可以使⽤POST ⽅法,POST ⽅法向服务器提交数据,⽐如完成表单数据的提交,将数据提交给服务器处理。GET ⼀般⽤于获取/查询资源信息,POST 会附带⽤户数据,⼀般⽤于更新资源信息。POST ⽅法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输⼤量数据;
  请求头部:请求头部由关键字/值对组成,每⾏⼀对,关键字和值⽤英⽂冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
  ● User-Agent:产⽣请求的浏览器类型;
  ● Accept:客户端可识别的响应内容类型列表;星号 “ * ” ⽤于按范围将类型分组,⽤ “ / ” 指⽰可接受全部类型,⽤“ type/*
”指⽰可接受 type 类型的所有⼦类型;
  ● Accept-Language:客户端可接受的⾃然语⾔;
  ● Accept-Encoding:客户端可接受的编码压缩格式;
  ● Accept-Charset:可接受的应答的字符集;
  ● Host:请求的主机名,允许多个域名同处⼀个IP 地址,即虚拟主机;
  ● connection:连接⽅式(close 或 keepalive);
  ● Cookie:存储于客户端扩展字段,向同⼀域名的服务端发送属于该域的cookie;
  空⾏:最后⼀个请求头之后是⼀个空⾏,发送回车符和换⾏符,通知服务器以下不再有请求头;
  请求包体:请求包体不在 GET ⽅法中使⽤,⽽是在POST ⽅法中使⽤。POST ⽅法适⽤于需要客户填写表单的场合。与请求包体相关的最常使⽤的是包体类型 Content-Type 和包体长度 Content-Lengt
h;
HTTP 响应报⽂
HTTP 响应报⽂由状态⾏、响应头部、空⾏ 和 响应包体 4 个部分组成,如下图所⽰:
中华人民共和国国家安全委员会
下⾯对响应报⽂格式进⾏简单的分析:
状态⾏
苯丙酮酸尿症状态⾏由 HTTP 协议版本字段、状态码和状态码的描述⽂本 3 个部分组成,他们之间使⽤空格隔开;
 1.状态码由三位数字组成,第⼀位数字表⽰响应的类型,常⽤的状态码有五⼤类如下所⽰:
1xx:表⽰服务器已接收了客户端请求,客户端可继续发送请求;
2xx:表⽰服务器已成功接收到请求并进⾏处理;
3xx:表⽰服务器要求客户端重定向;
4xx:表⽰客户端的请求有⾮法内容;
氨基甲酸酯
5xx:表⽰服务器未能正常处理客户端的请求⽽出现意外错误;
2.状态码描述⽂本有如下取值:
  200 OK:表⽰客户端请求成功;
  400 Bad Request:表⽰客户端请求有语法错误,不能被服务器所理解;
  401 Unauthonzed:表⽰请求未经授权,该状态代码必须与 WWW-Authenticate 报头域⼀起使⽤;
  403 Forbidden:表⽰服务器收到请求,但是拒绝提供服务,通常会在响应正⽂中给出不提供服务的原因;
  404 Not Found:请求的资源不存在,例如,输⼊了错误的URL;
  500 Internal Server Error:表⽰服务器发⽣不可预期的错误,导致⽆法完成客户端的请求;
  503 Service Unavailable:表⽰服务器当前不能够处理客户端的请求,在⼀段时间之后,服务器可能会恢复正常;
响应头部:
响应头可能包括:
  Location:Location响应报头域⽤于重定向接受者到⼀个新的位置。例如:客户端所请求的页⾯已不存在原先的位置,为了让客户端重定向到这个页⾯新的位置,服务器端可以发回Location响应报头后使⽤重定向语句,让客户端去访问新的域名所对应的服务器上的资源;  Server:Server 响应报头域包含了服务器⽤来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。
  Vary:指⽰不可缓存的请求头列表;
  Connection:连接⽅式;
  对于请求来说:close(告诉 WEB 服务器或者代理服务器,在完成本次请求的响应后,断开连接,不等待本次连接的后续请求了)。keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求);
  对于响应来说:close(连接已经关闭); keepalive(连接保持着,在等待本次连接的后续请求); Keep-Alive:如果浏览器请求保持连接,则该头部表明希望WEB 服务器保持连接多长时间(秒);例如:Keep-Alive:300;
  WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在401 (未授权的)响应消息中,这个报头域和前⾯讲到的Authorization 请求报头域是相关的,当客户端收到 401 响应消息,就要决定是否请求服务器对其进⾏验证。如果要求服务器对其进⾏验证,就可以发送⼀个包含了Authorization 报头域的请求;
空⾏:
最后⼀个响应头部之后是⼀个空⾏,发送回车符和换⾏符,通知服务器以下不再有响应头部。
响应包体:
服务器返回给客户端的⽂本信息;
HTTP ⼯作原理
HTTP 协议采⽤请求/响应模型。客户端向服务器发送⼀个请求报⽂,服务器以⼀个状态作为响应。
  以下是 HTTP 请求/响应的步骤:阳山实验学校
当世界年纪还小的时候教案
  ● 客户端连接到web服务器:HTTP 客户端与web服务器建⽴⼀个 TCP 连接;
kbs超级中国
  ● 客户端向服务器发起 HTTP 请求:通过已建⽴的TCP 连接,客户端向服务器发送⼀个请求报⽂;
  ● 服务器接收 HTTP 请求并返回 HTTP 响应:服务器解析请求,定位请求资源,服务器将资源副本写到 TCP 连接,由客户端读取;
  ● 释放 TCP 连接:若connection 模式为close,则服务器主动关闭TCP 连接,客户端被动关闭连接,释放TCP 连接;若connection 模式为keepalive,则该连接会保持⼀段时间,在该时间内可以继续接收请求;
  ● 客户端浏览器解析HTML内容:客户端将服务器响应的 html ⽂本解析并显⽰;
  例如:在浏览器地址栏键⼊URL,按下回车之后会经历以下流程:
  1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2、解析出 IP 地址后,根据该 IP 地址和默认端⼝ 80,和服务器建⽴ TCP 连接;
  3、浏览器发出读取⽂件(URL 中域名后⾯部分对应的⽂件)的HTTP 请求,该请求报⽂作为 TCP 三次握⼿的第三个报⽂的数据发送给服务器;
  4、服务器对浏览器请求作出响应,并把对应的 html ⽂本发送给浏览器;
  5、释放 TCP 连接;
  6、浏览器将该 html ⽂本并显⽰内容;

本文发布于:2024-09-22 00:52:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/487547.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:请求   服务器   客户端   响应   连接
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议