Http是TCP的上层协议,HTTP通信是基于TCP连接的。
那么Http通信过程是怎么样的呢?
我们最常用的Http客户端就是浏览器,我们浏览网站的过程就是一个Http的通信过程。
1.输入网址,回车;浏览器会根据网址在DNS中查找对应的IP地址。
首先在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找,如此下去,找到对应的IP后,则返回会给浏览器。
2.建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的。连接建立过程即著名的TCP三次握手,IP为上个步骤中获取的IP,端口一般为80。
3.发送HTTP消息
Web浏览器向Web服务器发送请求命令。
我在下面例子中使用了如下格式的HTTP消息:
GET / HTTP/1.1\r\nAccept: */*\r\nHost: %s:%d\r\nConnection: close\r\nAccept-Language: zh-cn\r\nUser-Agent: Chrome (compatible; MSIE 5.01; Windows NT 5.0)
4.Web服务器发送数据
服务器收到HTTP请求消息后,首先会发回一个ACK消息;
然后发送HTML数据包(经过分段的TCP数据包(TCP segment of PDU),根据数据流的大小分成几个段);
浏览器回复相应的ACK消息。
(通过抓包得到)
5.Web服务器发送应答码
待数据发送完毕后,服务器会发送应答码HTTP/1.1 200 OK。
浏览器会通过TCP PDU的序列号进行组包、解析HTML,在浏览器上显示。
6、Web服务器关闭TCP连接
在HTTP请求消息中当Connection: close,数据发