首页 > 技术文章 > HTTP协议

lance-lzj 2020-11-26 22:35 原文

HTTP是超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是一个客户端和服务器端请求和应答的标准。请求从客户端发出,最后服务器端响应该请求并 返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应。

使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产 生。协议本身并不保留之前一切的请求或响应报文的信息。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。服务器在端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,以及返回的内容,如请求的文件、错误消息、或者其它信息。http协议是基于TCP/IP协议之上的应用层协议。

​ HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

​ HTTP协议是基于B/S架构进行通信的,而HTTP协议的服务器端实现程序有httpd、nginx等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP协议进行通信了。

工作原理:

​ 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程: [7]

(1)客户与服务器建立连接;

(2)客户向服务器发送请求;

(3)服务器接受请求,并根据请求返回相应的文件作为应答;

(4)客户与服务器关闭连接。

HTTP是一种无状态协议客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。

好处:

  • 不会让一个连接处于等待状态
  • 释放链接可以提高服务器的执行效率

缺点:

  • 如果后续需要处理前面的信息,就必须重新传值
  • 可能导致每次连接传送的数据量增大。

从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。

HTTP特点

  1. http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
  3. 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
  4. 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
  5. 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

HTTPS和HTTP的区别:

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
  • http和https使用连接方式不同,默认端口也不一样,http是80,https是443。

HTTP的请求报文格式:

  • 请求头
    • User-Agent: 用户代理
    • Aceept
    • Host: 主机
  • 请求行
    • 请求方法
    • 请求路径
  • 空行
  • 请求数据

状态消息:

100: 服务器收到请求,需要请求者继续执行操作。

200: 请求成功

300:重定向

  • 301: 永久重定向
  • 302: 临时重定向

400: 客户端错误

  • 403: 执行访问被禁止
  • 404: 服务器无法找到客户端请求页面
  • 405: 请求方法不被允许

500: 服务器内部错误

推荐阅读