一、TCP 与HTTP的区别:
从领域上来说,TCP协议用于数据传输控制,而HTTP 协议主要用于应用层面的数据交互。本质上两者没有可比性。
HTTP协议属于应用层协议,建立在TCP之上,HTTP协议以客户端请求和服务端应答为标准,浏览器称为客户端,而web服务器称为服务器。客户端打开任意端口向服务器的80端口发起http请求,首先会发起TCP三次握手,是为了建立数据连接通道,通道建立成功后,进行HTTP数据交互。
当客户端请求的数据接收完毕后,HTTP服务器会断开TCP连接,整个HTTP连接的过程非常短,HTTP连接也被称为无状态的连接,无状态连接是指客户端每次向服务器发起HTTP请求时,每次请求都会建立一个新的HTTP连接,而不是在一个HTTP请求基础上进行所有的数据交互。
二、资源定位标识符
1.发起HTTP请求的内容资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识,关于资源定位和标识符有三种:URI 、URN、URL,三种资源定位解释如下:
£ 统一资源标识符(Uniform Resource identifier,URI),用来唯一标识一个资源;
£ 统一资源定位符(uniform resource locator , URL),是一种具体的URI,URL可以用来标识一个资源,而且访问获取该资源;
£ 统一资源命名(uniform resource name,URN),通过名字来标识或识别资源;
2.完整的URL标识格式如下:
protocol://host [:port]/path/..../[?query-string][#anchor] protocol //基于某种协议,常见协议:HTTP、HTTPS、FTP、RSYNC等; host //服务器的IP地址或者域名; port //服务器的端口号,如果是HTTP,默认是80端口; path //访问资源在服务器的路径; query-string //传递给服务器的参数及字符串 anchor //锚定结束;
|
三、HTTP与端口通信
每个程序在运行时,会以进程的方式启动,程序就会启动并监听本地接口的端口。
端口是TCP/IP 协议中应用层进程与传输层协议实体间的通信接口,端口是操作系统分配的一种资源,应用程序通过系统调用与某个端口绑定后,传输层传给该端口的数据会被该进程接受,相应进程发给传输层的数据都通过端口输出。
TCP/IP 协议中引入了一种被称为套接字(Socket)的应用程序接口,基于Socket接口技术,一台计算机就可以与任何一台具有Socket 接口的计算机通信,而监听的端口在服务器端也成为Socket接口。
四、HTTP Request 与 Response 详解
1.客户端浏览器向web服务器发起Request,web服务器接到Request后进行处理,会生成相应的Response信息返回给浏览器,,客户端根据服务器返回的Response信息,会对信息进行解析,最终用户看到浏览器显示的web内容。
客户端发起Request,Request消息分为三个部分,分别包括:Request line、Request Header
、Body,如下图所示
linux中执行 curl -v 命令可以打印访问的web 服务器的Request 及Reponse详细流程
curl -v http://192.168.111.131/index.html
2.Request 请求方法根据请求的资源不同,有如下请求方法
GET 方法:向特定的资源发出请求,获取服务器端数据;
POST方法:向WEB服务器上提交数据进行处理请求,常指提交新数据
PUT方法:向web服务器提交上传最新内容,长治更新数据
DELETE方法:请求删除Request-URL标识的服务器资源
TRACE方法:回显服务器收到的请求,主要用于测试或诊断
CONNECT方法:HTTP/1.1协议中预留能够将连接改成管道方式的代理服务器
OPTIONS方法:返回服务器对特定资源所支持的HTTP请求方法
HEAD方法:HEAD方法根GET方法相同,只不过服务器响应时不会返回消息
五、HTTP 1.0/ 1.1 协议的区别
基于HTTP协议的客户端/服务器模式的信息交换过程,如图所示,分为四个过程:建立连接,发送请求信息,发送响应信息,关闭连接。
1.HTTP 1.0 :
(1)每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与web服务器都要建立一次单独的连接。
(2)浏览器到服务器之间的所有通讯都是完全独立分开的请求和响应。
2. HTTP 2.0:
(1)在一个tcp 连接上可以传送多个HTTP请求和响应
(2)多个请求和响应过程可以重叠
(3)增加了更多的请求头和响应头,比如Host、IF-Unmodified-Since请求头等。
3.HTTP协议Response 常用状态码详解:
HTTP状态码 |
状态码英文含义 |
状态码中文含义 |
100 |
continue |
HTTP/1.1 新增状态码,客户端继续请求HTTP服务器 |
101 |
Switching 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 Allow |
客户端请求中的方法被禁止 |
406 |
Not Acceptable |
服务器无法根据用户请求的内容特性完整请求 |
499 |
Client has closed connection |
服务器端处理的时间过长 |
500 |
Internal Server Error |
服务器内部错误,无法完成请求 |
502 |
Bad Gateway |
服务器返回错误代码或者代理服务器错误的网关 |
503 |
Service Unavailable |
服务器无法响应客户端请求,或者后端服务器异常 |
504 |
Gateway Time-out |
网格超时或者代理服务器超时 |
505 |
Http Vssersion Not Supported |
服务器不支持请求的HTTP协议的版本,无法完成处理 |