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