1.基本概念
http协议(超文本传输协议)是应用层协议,建立在TCP协议之上。当浏览器需要从服务器获取网页数据的时候,会发出一次http请求,http通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据传输完毕后,http会立即将TCP连接断开。
http链接是一种短连接,是一种无状态的连接,所谓无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程就能保持住这个连接并在内存中记录一些信息状态。而每次请求结束后,连接就关闭了,相关内容就释放了,所以记不住任何状态,成为无状态连接。
随着时间的推移,html页面蝙蝠越来越复杂,这时候每次访问都需要建立一次TCP链接就显的低效了。因此,从http/1.1起,都默认开启Keep-Alive保持连接特性,在一个较短的时间内,使用一个TCP连接来传输数据。
http协议一定是通过指定的80端口,所以一般计算机上不会限制这个接口,所以http协议能够顺利通过所有机器上的防火墙。而Socket编程的话需要自己指定端口,很可能在某个环境中禁用。所以你对服务器上的网址的请求,都是通过80端口送到网站程序的。然后通过这个端口发送到客户端浏览器。
2.保持状态cookie、session
在web应用中,我们需要web是有状态的,保留用户的上次访问情况。因此加入了cookie、session等机制实现有状态的web。
其中cookies是保存在客户端;session是保存在服务器端。
Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。服务器用HTTP头向客户端发送cookie,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定义。
Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器。session有两种实现机制,可以使用cookie来实现,也可以通过url回显来实现。
3.报文结构
HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
网友评论