Http协议

什么是Http协议

是一种可靠的可以传送文档,声音,图像的一种与服务器交互的方式,它处于应用层。

怎么工作

它是建立在TCP的协议之上的。

  1. 首先,客户机与服务器要建立连接。
  2. 客户机发送请求,格式为统一资源定位符(URL)、协议版本号、MIME信息包括请求修饰符、客户机信息和可能的内容。
  3. 服务器接到请求之后,给予相应的响应,格式为一个状态行,包括信息协议的版本号,成功或错误的代码,MIME信息包括服务器信息,实体信息和可能的内容。
  4. 返回的信息到达客户机后,断开连接。

URL==统一资源定位符==网页地址

由三部分组成:

  1. 协议

TCP

  • SYN(Synchronous)是TCP建立连接时,由客户端发给服务端的握手信号。
  • ACK(Acknowledgement) 即确认字符,服务器在接收到SYN信息后返回SYN+ACK给客户端,客户端再以ACK响应,这样才建立了可靠的TCP连接。

请求方法URI协议/版本

请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

请求头

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
Accept:image/gif.image/jpeg./
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

GET

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大

POST

POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

响应码

2xx:成功
200:OK,请求成功
201:OK,新的资源建立(post命令)
202:请求被接受,但处理未完成
204:OK,但没有内容返回


3xx:重定向:需要用户代理执行更多的动作
301:Moved Permanently永久转移(所请求的资源已被指派为新的固定URL)
302:Found 暂时转移(所请求的资源临时位于另外的URL)
304:文档没有修改(条件GET)
307:Temporary Redirect(临时重定向)


4xx:客户差错
400:Bad Request 请求错误
401:Unauthorized 未认证(该请求要求用户认证)
403:Forbidden 不明原因的禁止
404:Not Found 未找到


5xx:服务器差错
500:Internal Server Error(服务器错误)
501:没有实现
502:错误的网关(网关或上游服务器来的无效响应)
503:Service Unavailable(一般是访问人数过多)

HTTP1.0和1.1

  • 1.0
    每次请求都要建立新的TCP连接
  • 1.1
    • 请求可以建立在上次的TCP连接中,减少三次握手,提高效率
    • 在Request的消息头新增加了Host域
    • 增加了许多Request方法OPTIONS、PUT、DELETE、CONNECT、TARCE
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 12,706评论 6 152
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 10,624评论 3 82
  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 5,896评论 0 3
  • 前言:最近发现自己在网络相关这一块基础很是欠缺,所以准备花时间了解一下,本文主要是讲http协议的一些基础,和一些...
    justCode_阅读 6,278评论 0 23
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,590评论 2 20

友情链接更多精彩内容