HTTP工作过程
HTTP协议定义Webclient怎样从Webserver请求Web页面,以及server怎样把Web页面传送给client。HTTP协议採用了请求/响应模型。
client向server发送一个请求报文。请求报文包括请求的方法、URL、协议版本号、请求头部和请求数据。
server以一个状态行作为响应。响应的内容包括协议的版本号、成功或者错误代码、server信息、响应头部和响应数据。下图表明了这样的请求/响应模型。
下面是HTTP请求/响应的步骤:
(1)client连接到Webserver
一个HTTPclient。一般是浏览器,与Webserver的HTTPport(默觉得80)建立一个TCP套接字连接。比如,http://www.oakcms.cn。
(2)发送HTTP请求
通过TCP套接字,client向Webserver发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
(3)server接受请求并返回HTTP响应
Webserver解析请求,定位请求资源。
server将资源复本写到TCP套接字。由client读取。
一个响应由状态行、响应头部、空行和响应数据4部分组成。
(4)释放连接TCP连接
Webserver主动关闭TCP套接字,释放TCP连接。client被动关闭TCP套接字,释放TCP连接。
(5)client浏览器解析HTML内容
client浏览器首先解析状态行,查看表明请求是否成功的状态代码。
然后解析每个响应头,响应头告知下面为若干字节的HTML文档和文档的字符集。client浏览器读取响应数据HTML,依据HTML的语法对其进行格式化,并在浏览器窗体中显示。
HTTP协议的无状态性
HTTP协议是无状态的(stateless)。
也就是说,同一个client第二次訪问同一个server上的页面时,server无法知道这个client以前訪问过,server也无法分辨不同的client。
HTTP的无状态特性简化了server的设计,使server更easy支持大量并发的HTTP请求。
持久连接
HTTP1.0使用的是非持久连接,client必须为每个待请求的对象建立并维护一个新的连接。由于同一个页面可能存在多个对象,所以非持久连接可能使一个页面的下载变得十分缓慢。并且这样的短连接添加了网络传输的负担。HTTP1.1引入了持久连接,同意在同一个连接中存在多次数据请求和响应。即在持久连接情况下,server在发送完响应后并不关闭TCP连接,而client它可以继续通过此连接请求其他对象。
版权声明:本文博主原创文章,博客,未经同意不得转载。