HTTP协议

Posted ydqq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议相关的知识,希望对你有一定的参考价值。

概念

  1. 架构
    C/S架构:客户端,服务器
    B/S架构:浏览器,服务器

  2. 什么是HTTP协议:
    HTTP(HyperText Transfer Protocol)即超文本传输协议,这种协议将html文档从Web服务器床送到Web浏览器。

发起HTTP请求:

URL:统一资源定位符,俗称网页地址。
格式: 协议://服务器IP[:端口]/访问路径/[?参数]
浏览器发起:直接在输入URL
Linux发起:curl + URL

HTTP协议工作详解

HTTP遵循请求(Request)/应答(Response)模型,Web浏览器向Web服务器发送求情,服务器返回给浏览器一个返回,这里需要注意几点:

  • 只能是浏览器向服务器发送请求,不可能是服务器浏览器主动发送请求。

  • 服务器接收到浏览器的请求后并返回,连接断开,HTTP连接不会保持长联

  • HTTP请求:
    HTTP请求包括三个部分分别是请求行(请求方法),请求头(消息报文)和请求正文。例子如下:

  • HTTP响应:
    与HTTP请求相同,HTTP响应也有相对应的三部分:响应行,响应头(消息报文)和响应正文(消息主题),例子:

HTTP请求方法

HTTP请求方法有很多,这里我就举三种方法说明,其他的方法这里按住不谈。

  1. GET请求:参数在URL中体现出来,URL中?之后的就是参数,用&符分割,键值对出现。
  2. POST请求:参数会以包的形式发送给服务器,参数位字符串类型,格式有:json,XML
  3. HEAD请求:这种请求只会收到服务器返回的HEAD参数,如果只用来测试对端是否存在,可以编 写这种请求方法的代码,速度更快。

HTTP状态码:

浏览器向服务器发送请求后,会收到一个返回的状态码,在返回行中体现。
HTTP/index.html 200 OK 注:这个200就是状态码,这些状态码要记住

返回码分为5种:
(1). 1xx:信息提示,表示请求已被成功接收,继续处理。范围为 100-101;
(2). 2xx:成功,服务器成功的处理了请求。范围为 200-206;
(3). 3xx:重定向,重定向状态码用于告诉浏览器,他们访问的资源已被移动,并告诉浏览器新的URL,浏览器就会向新地址发起请求。其范围为 300-305;
(4). 4xx:客户端错误状态码,表示请求错误。范围为 400-415;
(5).5xx:服务器或后台出错,会返回500,。范围为500-505.

常见状态码:
200:成功;
302:重定向;
404:URL不存在;
400:请求有语法错误,不能被服务器接收;
401:请求未经授权;
403:服务器收到请求,但是拒绝提供服务;
500:服务器内部错误;
503:服务器当前不能处理客户端请求,一段时间后再请求。

HTTP消息

HTTP消息又称为HTTP头(HTTP header),由四部分组成:请求头,响应头,普通头和实体头

请求头:
只出现在HTTP请求中,请求头允许客户端向服务器端传递请求的附加信息和客户端自身信息。

  1. Host:指定服务端URL和端口号;
  2. User-Agent:包含客户端的操作系统,浏览器和其他属性信息;
  3. Referer:包含一个URL,代表但钱范文的URL的上一个URL,表示本页的上一个页面;
  4. Cookie:客户端身份识别码;
    注:其他还有很多,就不一一举例了。

响应头:
响应头是服务器根据请求发送给客户端的HTTP头。

  1. Server:服务器所使用Web服务器的名称,攻击者查看这个信息就可以得到服务端的Web服务信息,建议修改;
  2. Set-Cookie:服务端向客户端设置Cookie;
  3. Last-Modified:服务器通过这个头告诉浏览器,资源的最后修改时间;
  4. Location:重定向的URL,浏览器会重新访问这个项里面的URL;
  5. Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器;

HTTP协议和HTTPS协议的区别

HTTPS协议(Hypertext Transfer Protocol over Secure Socket Layer),是HTTP协议的升级版,采用SSL加密传输,比HTTP更安全。
主要区别有:

  1. HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议;
  2. HTTP与HTTPS协议使用的是完全不同的连接方式,HTTP采用80端口连接,HTTPS采用443端口。
  3. HTTPS协议需要申请证书,一般都收费,HTTP协议不用证书;
  4. HTTP连接相对简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,比HTTP更安全。

注:无状态是指HTTP请求,请求一次后就断开连接,后续再进行其他操作必须再次发送请求。

以上是关于HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章

http协议及其应用

一文彻底拿下HTTP/HTTPS协议

HTTP详解

http和socket的区别

HTTP 和 Socket 的区别

HTTP 和 Socket 的区别