http通信和tcp通信都包括连接建立的过程
连接的建立——都是通过申请套接字来建立的(可以这么说,ftp tcp http 这三者均是利用socket套接字进行通信的)
tcp通信,建立了连接(程序上是调用WINSOCKAPI,即通过申请套接字来建立,操作系统内部实际是通过三次握手来实现的),即可直接进行通信了,这里的“直接”,是指客户端可以直接收消息,即无需客户端发出请求,可由服务端直接向客户端传递消息
当然,也可以由客户端发送请求消息,服务器应答的方式来通信。而这个过程中,客户请求消息的内容,仅仅包含请求正文,直接发送
http通信,建立了连接(同tcp的建立连接过程),之后,必须由客户端向服务器端发送消息请求,服务器回应了该消息,客户端才可以收到消息。而且,请求消息和应答消息都不仅仅包含请求正文和应答正文,而且,还需要附加各种其他信息,(这是http协议规定的)
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:
(1) 建立TCP连接
(2) 客户端向服务器发送请求: 请求命令、头信息
后面如果有请求正文,则请求命令、头信息 、空行、请求正文
(3) 服务器发送应答
应答回应、应答头信息、应答正文
(4) 关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。