web:
web使用应用层协议HTTP(端口号:80,使用的传输层协议为TCP),web由多个对象组成,一般若web包含html文本和5个图片,则这个web有6(1+5)个对象。每个对象通过对应的URL进行引用。
HTTP服务器并不保存关于客户机的任何信息,故称HTTP为无状态协议。即使客户端在很短的时间内对同一对象进行请求,服务器也会进行反应。
非持久连接:
web每个对象的请求均建立一个独立的TCP,但这些TCP可并行建立从而加快了响应速度。
例如:
①HTTP客户机进程在端口80发起一个到服务器的TCP连接。
②HTTP客户机通过socket向服务器发出一个请求报文,其中包含文件的路径。
③HTTP服务通过socket接受请求并发送请求对象。
④HTTP服务器通知TCP并断开连接,一般只有在数据传输完成后TCP才会断开。
⑤HTTP客户机接收响应报文并断开TCP。
⑥对于非持久连接,要重复上面的过程发送每个对象。
持久连接:对于同一客户机与服务器之间只建立一条TCP,所有对象由TCP传输。
RTT:round-trip time 往返时间。建立TCP连接要进行3次捂手,1.5个RTT。
HTTP请求报文:
方法字段 URL HTTP协议版本
GET /somedir/page.heml HTTP/1.1 //第一行为 请求行 request line 后面为首部行与实体部分
connection :close 非持久连接
user-agent :*** 客户机使用的浏览器 首部行 header line
accept-language :*** 使用的语言
*****entity 实体部分*******
一般而言,使用GET方法时,实体部分为空。使用post方法时实体部分不是空。例如在客户端向服务器提交密码与用户名是要使用post方法。向服务器提供数据时不一定使用post方法,例如可以使用扩展的get方法(利用表单生成的请求可以使用GET方法)
例如:www.s.com/animals?monkey&bananas 这个URL就携带了部分提交给服务器的数据。
HTTP响应报文:
HTTP/1.1 200(状态码) ok 状态行
connection close 非持久连接
......data......
server**** 服务器类型
last-modefied 对象最后更改的时间,一般用于web缓存的更新依据 首部行 header line
content-length
content-type text/html
......data......
常见的状态码: 200 ok 请求成功
301 moved permanently 请求对象被永久的转移了,并返回了对象存储的新URL。
400 bad request 服务器无法理解的请求内容
404 not found 请求的内容不在服务器中。
505 HTTP version not supported
虽说HTTP是无状态的,但可以使用cookie使服务器跟踪用户的动作。
cookie系统由四个部分组成:
①HTTP响应报文中有一个cookie首部行。
②HTTP请求报文中有一个cookie首部行。
③用户系统中有一个cookie文件。
④在web站点有一个关于cookie的后端数据库。
cookie标识码由服务器产生,并用于服务器对端系统的身份识别,web系统可以使用cookie(设识别码为12345)记录用户12345(系统不知道用户的真实姓名)的行为,并通过这些数据对用户做出一些反应,例如对用户推荐一些产品。若将cookie识别码与用户的用户名和密码对应,则用户在下次登录系统是可以不用输入用户名和密码。
cookie的一个争议就是使用cookie可能会侵犯用户的隐私。
web缓存器(web cache )也称为web代理器(proxy server):
web cache即使客户机也是服务器,当浏览器向web缓存发出请求时,web缓存为服务器,当web缓存向源web服务器请求数据时(缓存中缺少某些对象)其又是客户机。
web cache可以是一台主机由ISP提供,也可以是本PC机上的一个通用的软件。
web cache存在与源web sever 同步的问题,一般web缓存会在一定的时间里与源web server同步,同步时使用的是条件GET指令。