一次完整的HTTP通信中,web浏览器和web服务器之间完成的七个步骤
来源:互联网 发布:仿真优化软件 编辑:程序博客网 时间:2024/06/07 11:06
1、建立TCP连接:
在HTTP工作开始之前,web浏览器首先要通过网络与web服务器建立连接,该连接是通过TCP来完成的。
为什么要先建立TCP呢?
因为HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层次协议的连接,因此要先建立TCP连接,一般TCP连接的端口号是80
2、web浏览器向web服务器发送请求指令
一旦建立了TCP连接,web浏览器就会向web服务器发送请求指令
其中一部分是请求行,内容包括:请求方法/请求url资源/http协议版本信息;如:(Request-Line) GET /a.html HTTP/1.1
3、web浏览器发送请求头信息
浏览器发送其请求命令之后,还要以头信息的形式向web服务器发送一些别的信息;如:
Host 127.0.0.1
User-Agent Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language zh-cn,zh;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset gb2312,utf-8;q=0.7,;q=0.7
Keep-Alive 300
Connection keep-alive
之后浏览器还会发送一空行来通知服务器,它已经结束了该头信息的发送
4、web服务器做出应答
web服务器收到客户端的请求后,服务器会向客户端回应
其中一部分是响应头信息;内容包括:http版本信息/状态码 状态文字(状态短语),如:(Status-Line) HTTP/1.1 200 OK
5、web服务器发送应答头信息
和客户端一样,服务器也会随同发送关于自己的数据以及被请求的文档等信息给客户端;如:
Date Thu, 26 Nov 2009 13:50:54 GMT
Server Apache/2.2.11 (Unix) PHP/5.2.9
Last-Modified Thu, 26 Nov 2009 13:50:19 GMT
Etag “8fb8b-14-4794674acdcc0″
Accept-Ranges bytes
Content-Length 20
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html
这里面比较重要的属性有:Etag(指示资源的状态唯一标识)、Last-Modified(指示最后修改的时间)、Expires(指示资源在浏览器缓存中的过期时间)
这些属性关系到http的缓存机制(前面的文章有说到HTTP请求中的缓存(cache)机制),同时也与HTTP的断点续传原理有关系(后面有相关文章HTTP 1.1 版本新特性描述);
6、Web服务器想浏览器发送数据
web服务器发送完头信息后,它也会发送一个空白行来表示头信息的发送到此为止,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
7、web服务器关闭TCP连接
一般情况下,一旦web服务器向浏览器发送了请求数据后,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入这行代码:
connection:keep-alive
这样TCP连接将依然保持打开状态,浏览器可以继续通过相同的连接发送请求,保持连接,节省了为每个请求建立新连接所需要的的事件,同时节省了宽带
实际上,在HTTP 1.1 版本的新特性中有一点是:默认持久连接节省通信量,只要客户端、服务端任意一端没有明确断开TCP连接,可以发送多次HTTP请求
- 一次完整的HTTP通信中,web浏览器和web服务器之间完成的七个步骤
- http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤
- 一次完整的HTTP通信
- 完整的HTTP通信步骤
- 一个完整的HTTP请求的七个步骤
- 一次访问Web服务器的详细通信过程
- iOS 中客户端和服务器的 Web Service 网络通信
- 完整的HTTP通信步骤-7步
- 如何理解浏览器与web服务器的通信
- Java web做服务器之间的通信方法
- 自己动手,写个Web服务器(Java版)——第一篇、浏览器和Web服务器的语言Http
- web浏览器和web服务器的交互过程
- WEB容器,HTTP服务器,Servlet之间的关系
- python中web服务器和web框架之间的规范 小白深度理解WSGI
- 配置WEB服务器的步骤
- 【简记】Java Web 内幕——一次完整的HTTP事务是怎样一个过程?
- 浏览器 服务器之间的通信过程
- WEB服务器和应用服务器之间的区别
- Java实现算法导论中有限自动机字符串匹配算法
- 详细介绍什么是卡片式设计用户界面
- 关于如何写UI及屏幕适配的一些技巧(上)——颜婧
- akka 2.3.11 实例
- iOS 网络请求设置https连接方式
- 一次完整的HTTP通信中,web浏览器和web服务器之间完成的七个步骤
- 使用APK分析器分析您的构建
- sip.js基于 FreeSwitch的使用过程
- Android开发:屏蔽Home键功能后,对话框显示不正常问题
- C# OleDb导入excel表数据到listview以及对应修改excel表
- iOS 导航栏Title不居中
- 机器学习性能改善备忘单:32个帮你做出更好预测模型的技巧和窍门
- Altium Designer中进行信号完整性分析
- C#和C++代码折叠功能