[关闭]
@1kbfree 2019-05-29T21:13:31.000000Z 字数 3705 阅读 1708

续颓废blog的HTTP协议文章

网络协议


HTTP协议详解

HTTP是一种无状态的协议。无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当客户端向服务端发送请求,然后Web服务器放回响应,连接就关闭了,在服务端不保留与连接有关的的信息,也就是说HTTP请求只能由客户端发起,服务器不能主动向客户端发送数据。

HTTP遵循发出请求->响应请求的模型,浏览器向服务器发送请求时,服务器处理请求并返回数据给客户端,如图:

http请求过程.png-69kB

HTTP请求与响应

<1>.HTTP请求
HTTP请求包括三部分,分别为请求头(消息报头)、请求行(请求方式)和请求正文。下面是一个HTTP请求的一个例子:

这个请求哪里看呢?可以在我们的审查元素中的网络可看,如下图:

image_1c95msuo41htl1d9m7ki11o4qkf12.png-203.5kB

  1. POST /index.php HTTP/1.1 # 这是请求行,这里的POST是请求方式。
  2. HOST: www.xxx.xxx # 请求头
  3. User-Agent:Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/59.0 # 空白行,这个User-Agent是浏览器标识
  4. Name=free&pwd=iamfree # 请求正文

HTTP响应

与请求头对应的是HTTP响应,HTTP响应也由三部分内容组成,分别为响应行、响应头(信息报头)和响应正文(消息主题),下面是一个HTTP的响应:
image_1c95nd514om43c71l9dcbspfd1f.png-59.2kB

HTTP请求方法

HTTP请求的方法有很多,其中GET、POST是最常用的,我们来列举一下这2个的区别:
image_1c8s7fl38ned12fj1khn1ig21m8u1g.png-281kB

HTTP状态码

当客户端发出HTTP请求,服务端接收后,会向客户端发送响应信息,状态码就是服务端返回的数据,比如像这样的:
状态码.png-98.3kB

状态码的类别:

常见的状态码描述:

HTTP消息

前面只讲了请求头的数据,并没有仔细拆分开来讲,现在我们来看下:

请求头只出现在HTTP请求中,请求报头允许客户端向服务器传递请求的附加信息和客户端自身的信息,讲几个常用的HTTP请求头,如下:

HTTP请求头:
1. HOST:
HOST请求报头域主要用于指定被请求资源的Internet主机好端口号,例如:HOST:www.chengyin.org
2. User-Agent:
请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务区,形成了浏览器标识
3. Referer:
Referer包含一个URL,表示用户是从什么地方来到本页面的,比如我们刚刚在www.baidu.com,然后我们访问了www.chengyin.org,那么请求头中就会返回一个Referer:www.baidu.com,表示我们是从百度过来的。
4. Cookie:
Cookie相当是重要的请求头,他用来表示请求者身份,在后面的攻击中,如果攻击者获取了受害者的Cookie,那么攻击者不用输入登录的账号密码,凭借着受害者的Cookie就可以直接登录了。
5. Range:
Range可以请求实体的部分,多线程下载一定会用到此请求。

HTTP响应头:

响应头是服务器根据客户端发送过来的请求来向客户端发送的HTTP头,有点绕。

  1. Server:
    服务器所使用的名称,比如:Server BWS/1.1
  2. Set-Cookie:
    向客户端设置Cookie,通过查看此头,可以清楚看到服务器向客户端发送的Cookie信息。
  3. Last-Modified:
    服务器通过这个头告诉浏览器,资源的最后修改时间。
  4. Refresh:
    服务器通过Refresh头告诉浏览器定时刷新浏览器
  5. 普通头:
    知道有这么一个东西存在即可(这是因为我也不知道这是啥,哈哈哈)
  6. HTTP实体头:

  7. Content-Type:
    用于向接收方指示实体的介质类型。

  8. Content-Encoding:
    是一个实体消息首部,用于对特定媒体类型的数据进行压缩。当这个首部出现的时候,它的值表示消息主体进行了何种方式的内容编码转换。这个消息首部用来告知客户端应该怎样解码才能获取在 Content-Type 中标示的媒体类型内容。
  9. Content-Length:
    用于指明实体正文的长度,以字节方式存储的数字表示。
  10. Last-Modififed:
    用于指示资源最后的修改日期和时间。

HTTP协议和HTTPS协议的区别

主要区别:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注