HTTP略解

一、HTTP的两种连接形式

1)非持久性连接

每个TCP连接最多允许传输一个对象
HTTP 1.0版本使用非持久性连接
假定用户在浏览器输入URLwww.baidu.com/somedepartment/home.index
过程如下:
1°HTTP客户端向地址为www.baidu.com的服务器的HTTP服务器进程(80端口)发起TCP连接请求。
2°HTTP服务器在端口80等待tcp连接,接收连接并通知客户端.
3°客户端讲HTTP请求消息(包含URL地址)通过TCP连接的套接字发出,消息中所含的URL表明客户端需要对象…
4°HTTP服务器收到请求消息,解析,产生包含所需要对象的响应信息,通过套接字发送给客户端
5°HTTP服务器关闭tcp连接
6°客户端收到响应消息,解析html文件,发现有10个指向jpeg对象的超链接
7°为每个对象重复步骤1-6;

响应时间分析:
发起、建立tcp连接:1个rtt
发送http请求消息到http响应消息前几个字节到达:1个rtt
对象传输时间
所以一个对象的Total=2*rtt+文件传输时间

2)持久性连接

每个TCP连接允许传输多个对象
HTTP 1.1版本默认使用持久性连接
过程:
1°发送响应后,服务器保持tcp连接的打开
2°后续的http消息可以通过这个连接发送
3°又分为无流水线持久连接(收到前几一个响应后,才能发出新的请求;每个对象耗时1rtt)
流水线持久连接:理想情况,收到所有的对象只需要1rtt

二、HTTP的消息格式

1)请求消息:用ASCII书写,人可以直接读懂
如下图所示
HTTP略解
HTTP略解
2)响应消息
HTTP略解
响应消息的状态代码“200 ok”表示:客户端请求成功,类似的还有
206 partial content:服务器已经正确处理部分GET请求,实现断点续传或同时分片下载,该请求必须包含Range请求头来指示客户端期望得到的范围

300 multiple choices(可选重定向)
301 moved permanently(永久重定向)
302 move temporaril(临时重定向)
403 Forbidden:服务器收到请求,但拒绝提供服务
404:Not Found