一、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协议的版本,无法完成处理 |