HTTP协议分析之“三次握手”
HTTP协议高居应用层,自然少不了一定的“应酬”了,客户端与服务器的相认,关键在于双方的“三次握手”。
下图是登陆江西师范大学网站后通过Wireshark抓包获得的帧:
可以看到,客户端向服务器先是不停地向服务器发送了6次请求报文,然后服务器逐个进行了确认,据此可以首先确定,HTTP协议是基于TCP协议的可靠传输。具体的“三次握手”为:
(1)客户端发送请求:
客户端向服务器发送了一个Connection establish request (SYN):server port http。
(2)服务器向客服端发送确认响应:
服务器向客户端发送一个响应报文:Connection establish acknowledge (SYN+ACK):server port http。RTT(Round-Trip Time,往返时延)约为0.12s。
(3)客户端再次确认:
客户端做出回应。至此,HTTP协议建立需要的“三次握手”就完成了。于是,客户端紧接着向服务器发送了HTTP请求报文:
GET / HTTP/1.1:请求获得一个基于HTTP1.1的持久连接。持久连接会消耗较多的服务器资源,但相对1.0来说效率更高。
对于之后的每一次请求(共6次请求),服务器则做了“304 Not Modified”的回应,即自上次访问以来,网页没有修改。
以上便是每一次在浏览器地址栏中键入网址后和浏览器显示出网页内容前,客户端与服务器之间发生的交互内容。