網(wǎng)絡(luò)請(qǐng)求是基于HTTP協(xié)議的,但http協(xié)議只是一個(gè)應(yīng)用層協(xié)議,它底層是通過TCP進(jìn)行傳輸數(shù)據(jù)的。因此,瀏覽器訪問Web服務(wù)器的過程必須先有“連接建立”的發(fā)生。瀏覽器向Web服務(wù)器發(fā)出Http請(qǐng)求以及Web服務(wù)器給瀏覽器回復(fù)的過程如下:
1)瀏覽器創(chuàng)建Socket,按給定IP(域名)和端口(默認(rèn)為80)連接服務(wù)器。
2)連接成功后,瀏覽器依據(jù)HTTP協(xié)議規(guī)范,向Web服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù),會(huì)使用類似Socket.Send()、Socket.BeginSend()等方法。
3)瀏覽器等待服務(wù)器處理并返回?cái)?shù)據(jù);
4)Web服務(wù)器端使用Socket.Accept()、Socket.BeginAccept()等方法偵聽到瀏覽器的連接后,便開始接收瀏覽器發(fā)送的數(shù)據(jù)。接收到請(qǐng)求數(shù)據(jù)后,依據(jù)HTTP協(xié)議規(guī)范解析數(shù)據(jù),然后處理,最終將處理結(jié)果(如html文檔)發(fā)回給瀏覽器,這里可能用到類似Socket.Send()、Socket.BeginSend()等方法;
5)Web服務(wù)器發(fā)送完處理結(jié)果后,關(guān)閉Socket;
6)瀏覽器接收Web服務(wù)器發(fā)回的數(shù)據(jù)(如html),將其顯示在瀏覽器UI界面。關(guān)閉socket;
7)一次“瀏覽器到Web服務(wù)器”的http請(qǐng)求結(jié)束;