Writer      :BYSocket(泥沙砖瓦浆木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket

泥瓦匠记得和左潇龙【博客园】上次聊天时,龙哥问了个Session的问题。我当时的理解就是云里雾里,先从Http协议理解开始吧。

一、技术基石及概述

问:什么是HTTP?
答:HTTP是一个客户端和服务器端请求和响应的标准TCP。其实建立在TCP之上的。

当我们打开百度网页时,是这样的:

多了个S,其实S表示TLS、SSL。在这里不做解释,因此HTTP的技术基石如图所示:

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

那HTTP协议呢?HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议。Web上,服务器和客户端利用HTTP协议进行通信会话。有OOP思想的得出结论:其会话的结构是一个简单的请求/响应序列,即浏览器发出请求和服务器做出响应。

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

二、深入理解技术基石和工作流程

既然HTTP是基于传输层的TCP协议,而TCP协议是面向连接的端到端的协议。因此,使用HTTP协议传输前,首先建立TCP连接,就是因此在谈的TCP链接过程的“三次握手”。如图

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

在Web上,HTTP协议使用TCP协议而不是UDP协议的原因在于一个网页必须传送很多数据,而且保证其完整性。TCP协议提供传输控制,按顺序组织数据和错误纠正的一系列功能。

一次HTTP操作称为一个事务,其工作过程可分为四步:

建立连接,其实建立在TCP连接基础之上。图解核心工作过程(即省去连接过程)如下:

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

三、详解工作过程的HTTP报文

HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。

一、请求报文格式如下:

如图,请求我博客一篇文章时发送的报文内容:

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

对于其中请求报文详解:

二、应答报文格式如下:

如图,就是这篇博客响应的内容:

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

对其中响应报文详解:

一次简单的请求/响应就完成了。

三、HTTP协议知识补充

请求报文相关:

请求行-请求方法

响应报文相关:

响应行-状态码

常见的状态码

比如304,在浏览器第一次打开百度时,如图所示:

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

刷新一下:

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

这上面的304就证明了

四、关于HTTP协议的Web应用框架或者规范

JavaEE的人会知道Servlet规范。其中Web应用容器都实现了HTTP协议中的对象,即请求和响应对象。比如 javax.servlet.http.HttpServletResponse 对象中肯定有对状态码描述,如图

JavaEE 要懂的小事:一、图解Http协议-LMLPHP

至于如何使用它们,坐等系列文章吧。

五、总结

回顾全文,HTTP协议其实就是我们对话一样,语言就是其中的协议。所以掌握HTTP协议明白以下几点就好:

Writer      :BYSocket(泥沙砖瓦浆木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket

05-11 17:21
查看更多