程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> socket請求Web服務器過程,socket請求web

socket請求Web服務器過程,socket請求web

編輯:C#入門知識

socket請求Web服務器過程,socket請求web


      最開始我們需要明白一件事情,因為這是這篇文章的前提:

HTTP協議只是一個應用層協議,它底層是通過TCP進行傳輸數據的。因此,浏覽器訪問Web服務器的過程必須先有“連接建立”的發生。

而有人或許會問:眾所周知,HTTP協議有兩大特性,一個是“無連接”性,一個是“無狀態”性。這裡的“無連接”豈不是跟上面的說法有沖突?其實這裡並沒有矛盾,只是人們對“連接”這個詞的理解有差異。首先我們來看一下浏覽器向Web服務器發出Http請求以及Web服務器給浏覽器回復的過程:

1)浏覽器創建Socket,按給定IP(域名)和端口(默認為80)連接服務器。比如使用類似Socket.Connect()、Socket.BeginConnect()等方法;

2)連接成功後,浏覽器依據HTTP協議規范(關於協議,後面有講到),向Web服務器發送請求數據。比如“請求行”、“請求頭標”以及“請求數據”等,這裡可能使用類似Socket.Send()、Socket.BeginSend()等方法。【關於HTTP協議中的請求行、請求頭標等請參見http://www.cnblogs.com/riky/archive/2007/04/09/705848.html】

3)浏覽器等待服務器處理並返回數據;

4)Web服務器端使用Socket.Accept()、Socket.BeginAccept()等方法偵聽到浏覽器的連接後,便開始接收浏覽器發送的數據。接收到請求數據後,依據HTTP協議規范解析數據,然後處理,最終將處理結果(如html文檔)發回給浏覽器,這裡可能用到類似Socket.Send()、Socket.BeginSend()等方法;

5)Web服務器發送完處理結果後,關閉Socket;

6)浏覽器接收Web服務器發回的數據(如html),將其顯示在浏覽器UI界面。關閉socket;

7)一次“浏覽器到Web服務器”的http請求結束;

8)下一次浏覽器需要請求Web服務器,跳轉到第1)步循環開始。

用圖表示以上過程:

圖1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved