HTTP协议详解

一、TCP协议与HTTP协议

1.tcp协议主要用于数据传输控制,而HTTP协议主要用于应用层面的数据交互,本质上俩者没有可比性

HTTP协议数据应用层协议,是建立在TCP协议基础上的,HTTP协议以客户端请求和服务端应答为标准,浏览器通常称为客户端,而WEB服务器称之为服务器端。客户端打开任意一个端口向服务端的指定端口(默认为80)发起HTTP请求,首先会发起TCP三次握手,TCP三次握手的目的是建立可靠的数据连接通道,TCP三次握手通道建立完毕,进行HTTP数据交互。

2.资源定位标识符

HTTP请求的内容资源由统一资源标识符( uniform resource identifiers,URI)来标识,关于资源定位符及标识有三种;URI、URN、URL三种

  • 统一资源标识符(uniform resource identifier,URI),用来唯一标识一个资源;
  • 统一资源定位器(uniform resource locator,URL),是一种具体的URI,URL可以用来标识一个资源,而且可以访问或者获取该资源;
  • 统一资源命名(uniform resource name,URN),通过名字来标识或识别资源。

3.HTTP与端口通信

HTTP Web服务器默认在本机会监听80端口,在网络通信过程中,需要唯一识别通信俩端设备的端点,就是使用端口识别运行于某主机中的应用程序。

4.HTTP request与response详解

客户端浏览器向Web服务器发起request,Web服务器接到request后进行处理,会生成对应的response信息返给浏览器,客户端浏览器收到服务器返回的response信息,会对信息进行解析处理,最终用户看到浏览器展示Web服务器的网页内容

客户端发起request,request消息分为3个部分,分别包括request line、request header、body

linux系统中执行curl -v 命令可以打印访问Web服务器的request及response详细处理流程。

(1)request 信息详解

说明

  • 第一部分:请求行,指定请求类型,访问的资源及使用的HTTP协议版本。GET表示request请求类型为GET:/indx.html表示访问的资源,HTTP/1.1表示协议版本
  • 第二部分:请求头部,请求下一行起,指定服务器需要使用的附加信息。User Agent表示用户使用的代理软件,常指浏览器;HOST表示请求的目的主机
  • 第三部分:空行,请求头部后面的空行表示请求头发送完毕
  • 第四部分:请求数据也叫body,可以添加任意的数据,Get请求的body内容默认为空

(2)response信息详解

说明

  • 第一部分:响应状态行,包括HTTP协议版本号,状态码,状态信息。HTTP/1.1表示HTTP协议版本号;200表示返回状态码;OK表示状态信息
  • 第二部分:消息报文,响应头部附加信息。date表示生成响应的日期和时间;content-Type表示指定MIME类型的HTML(text/html),编码类型是UTF-8,记录文件的资源的Last-Modified时间。
  • 第三部分:空行,表示消息报文响应完毕
  • 第四部分:响应正文,服务器返回给客户端的文本信息

5.HTTP1.0/1.1协议区别

HTTP协议定义服务器和客户端之间文件传输的沟通方式

说明如下

  • 基于HTTP协议的客户/服务器模式的信息交换过程,分为4个过程,即建立连接、发送请求信息、发送响应信息、关闭连接。
  • 浏览器与Web服务器的链接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与Web服务器都要建立一次单独的连接
  • 浏览器到Web服务器之间的所有通信都是完全独立分开的请求和响应

HTTP1.1运行方式

说明如下

  • 在一个TCP连接上可以传送多个HTTP请求和响应
  • 多个请求和响应过程可以重叠
  • 增加了更多的请求头和响应头

6.HTTP状态码详解

HTTP状态码(HTTP status code)是用来表示Web服务器HTTP response 状态的3位数字代码,常见的状态码范围分类如下:

  • 100-199:用于指定客户端相应的某些动作
  • 200-299:用于表示请求成功
  • 300-399:已移动的文件且被包含在定位头信息中指定新的地址信息
  • 400-499:用于指出客户端的错误
  • 500-599:用于指出服务器错误

HTTP协议response常用状态码详解

HTTP状态码 状态码英文含义 状态码中文含义
100 continue HTTP/1.1新增状态码,表示继续,客户端继续请求HTTP服务器
101 switchiing protocols 服务器根据客户端的请求切换协议,切换到HTTP的新版本协议
200 ok HTTP请求完成,常用于GET,POST请求中
301 moved permanently 永久移动,请求的资源已被永久的移动到新URI
302 found 临时移动,资源临时被移动,客户端应继续使用原有URI
304 not modified 文件未修改,请求的资源未修改,服务器返回此状态码时,常用于缓存
400 bad request 客户端请求的语法错误,服务器无法解析或访问
401 unauthorized 请求要求用户的身份认证
402 payment required 此状态码保留,为以后使用
403 forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 not found 服务器没有该资源,请求的文件找不到
405 method not allowed 客户端请求中的方法被禁止
406 not acceptable 服务器无法根据客户端请求的内容特性完成请求
499 client has closed connection 服务端处理的时间过长
500 internal server error 服务器内部错误,无法完成请求
502 bad gateway 服务器返回错误代码或者代理服务器错误的网关
503 servie unavailable 服务器无法响应客户端请求,或者后端服务器异常
504 gateway time-out 网关超时或者代理服务器超时
505 HTTP version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦