1、 HTTP協議是什麼?程序員
咱們在瀏覽器的地址欄裏輸入的網站地址叫作 URL(UniformResourceLocator,統一資源定位符)。就像每家每戶都有一個門牌地址同樣,每一個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級連接時,URL就肯定了要瀏覽的地址。瀏覽器經過超文本傳輸協議(HTTP),將Web服務器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。所以,在咱們認識HTTP以前,有必要先弄清楚URL的組成 , 例如: http://www.microsoft.com/china/index.htm.它的含義以下: 1.http://:表明超文本傳輸協議,通知microsoft.com服務器顯示Web頁,一般不用輸入 2.www:表明一個 Web(萬維網)服務器; 3.Microsoft.com/:這是裝有網頁的服務器的域名,或站點服務器的名稱; 4.China/:爲該服務器上的子目錄,就好像咱們的文件夾; 5.Index.htm:index.htm是文件夾中的一個HTML文件(網頁) 。 咱們知道,Internet的基本協議是TCP/IP協議,然而在TCP/IP模型最上層的是應用層 (Applicationlayer),它包含全部高層的協議。高層協議有:文件傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網絡新聞傳輸協議NNTP和HTTP協議等。 HTTP 協議(HypertextTransferProtocol,超文本傳輸協議) 是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形) 等。這就是你爲何在瀏覽器中看到的網頁地址都是以 「http://」開頭的緣由。 自WWW誕生以來,一個多姿多彩的資訊和虛擬的世界便出如今咱們眼前,但是咱們怎麼可以更加容易地找到咱們須要的資訊呢?當決定使用超文本做爲WWW文檔的標準格式後,因而在1990年,科學家們當即制定了可以快速查找這些超文本文檔的協議,即HTTP協議。通過幾年的使用與發展,獲得不斷的完善和擴展,目前在WWW中使用的是 HTTP/1.0的第六版。編程
2、 HTTP是怎樣工做的?瀏覽器
既然咱們明白了URL的構成,那麼HTTP是怎麼工做呢?咱們接下來就要討論這個問題。 因爲HTTP協議是基於請求/響應範式的(至關於客戶機/服務器 )。一個客戶機與服務器創建鏈接後,發送一個請求給服務器,請求方式的格式爲:統一資源標識符 (URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。 許多HTTP通信是由一個用戶代理初始化的而且包括一個申請在源服務器上資源的請求.最簡單的狀況多是在用戶代理和服務器之間經過一個單獨的鏈接來完成。在Internet上,HTTP 通信一般發生在TCP/IP鏈接之上。缺省端口是TCP80,但其它的端口也是可用的。但這並不預示着HTTP協議在Internet或其它網絡的其它協議之上才能完成。HTTP只預示着一個可靠的傳輸。 這個過程就好像咱們打電話定貨同樣,咱們能夠打電話給商家,告訴他咱們須要什麼規格的商品,而後商家再告訴咱們什麼商品有貨,什麼商品缺貨。這些,咱們是經過電話線用電話聯繫 (HTTP是經過TCP/IP),固然咱們也能夠經過傳真,只要商家那邊也有傳真。 以上簡要介紹了HTTP協議的宏觀運做方式,下面介紹一下HTTP協議的內部操做過程。 在WWW中,「客戶」與「服務器」是一個相對的概念,只存在於一個特定的鏈接期間,即在某個鏈接中的客戶在另外一個鏈接中可能做爲服務器。基於 HTTP 協議的客戶/服務器模式的信息交換過程,它分四個過程:創建鏈接、發送請求信息、發送響應信息、關閉鏈接。這就好像上面的例子,咱們電話定貨的全過程。 其實簡單說就是任何服務器除了包括HTML文件之外,還有一個HTTP駐留程序,用於響應用戶請求。你的瀏覽器是HTTP客戶,向服務器發送請求,當瀏覽器中輸入了一個開始文件或點擊了一個超級連接時,瀏覽器就向服務器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必要的操做後回送所要求的文件。在這一過程當中,在網絡上發送和接收的數據已經被分紅一個或多個數據包(packet),每一個數據包包括:要傳送的數據;控制信息,即告訴網絡怎樣處理數據包.TCP/IP決定了每一個數據包的格式。若是事先不告訴你,你可能不會知道信息被分紅用於傳輸和再從新組合起來的許多小塊。 也就是說商家除了擁有商品以外,它也有一個職員在接聽你的電話,當你打電話的時候,你的聲音轉換成各類複雜的數據,經過電話線傳輸到對方的電話機,對方的電話機又把各類複雜的數據轉換成聲音,使得對方商家的職員可以明白你的請求。這個過程你不須要明白聲音是怎麼轉換成複雜的數據的。
什麼是Socket?
Socket接口是TCP/IP網絡的API,Socket接口定義了許多函數或例程,程序員能夠用它們來開發TCP/IP 網絡上的應用程序。要學Internet上的TCP/IP網絡編程,必須理解Socket接口。 Socket接口設計者最早是將接口放在Unix操做系統裏面的。若是瞭解Unix系統的輸入和輸出的話,就很容易瞭解Socket了。網絡的Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。
Socket也具備一個相似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述服務器