1. 程式人生 > >TCP,UDP,HTTP,FTP協議

TCP,UDP,HTTP,FTP協議

    OSI是一個開放性的通行系統互連參考模型,他是一個定義的非常好的協議規範。OSI模型有7層結構,每層都可以有幾個子層。 OSI的7層從上到下分別是 7 應用層 6 表示層 5 會話層 4 傳輸層 3 網路層 2 資料鏈路層 1 物理層 ,其中高層,即7、6、5、4層定義了應用程式的功能,下面3層,即3、2、1層主要面向通過網路的端到端的資料流。然而TCP/IP協議集與之的對比圖如下:

1.  TCP/IP協議組

       TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用層。
      網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。
      傳輸層中有TCP協議與UDP協議。
      應用層有FTP、HTTP、TELNET、SMTP、DNS等協議。
      因此,HTTP本身就是一個協議,是從Web伺服器傳輸超文字到本地瀏覽器的傳送協議。


2. TCP與UDP

    UDP(User DataGram Protocol)協議譯為:使用者資料包協議)的縮寫,是一種無連線的協議,使用UDP傳輸資料時,每個資料段都是一個獨立的資訊,包括完整的源地址和目的地,在網路上以任何可能的路徑傳到目的地,因此,能否到達目的地,以及到達目的地的時間和內容的完整性都不能保 證。  所以TCP比UDP多了建立連線的時間。相對UDP而言,TCP具有更高的安全性和可靠性。

                                                                               

   TCP

層是位於IP層(網路層)之上,應用層之下的傳輸層。它有三次握手連線,如下圖。不同主機的應用層之間經常需要可靠的、像管道一樣的連線,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。應用層向TCP層傳送用於網間傳輸的、用8位位元組表示的資料流,然後TCP把資料流分割成適當長度的報文段(通常受該計算機連線的網路的資料鏈路層的最大傳送單元(MTU)的限制)。之後TCP把結果包傳給IP層, 由它來通過網路將包傳送給接收端實體的TCP層。TCP為了保證不發生丟包,就給每個位元組一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的位元組發回一個相應的確認(ACK);如果傳送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的資料(假設丟失了)將 會被重傳。TCP用一個校驗和函式來檢驗資料是否有錯誤;在傳送和接收時都要計算和校驗。

                                                                             

    TCP協議傳輸的大小不限制,一旦連線被建立,雙方可以按照一定的格式傳輸大量的資料,而UDP是一個不可靠的協議,大小有限制,每次不能超過64K。

3、HTTP與 FTP

     HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與伺服器的TCP連結,併發送一個請求到伺服器,請求中包含請求方法、URI、協議版本以及 相關的MIME樣式的訊息。伺服器響應一個狀態行,包含訊息的協議版本、一個成功和失敗碼以及相關的MIME式樣的訊息。HTTP/1.0為每一次 HTTP的請求/響應建立一條新的TCP連結,因此一個包含HTML內容和圖片的頁面將需要建立多次的短期的TCP連結。一次TCP連結的建立將需要3次 握手。另外,為了獲得適當的傳輸速度,則需要TCP花費額外的迴路連結時間(RTT)。每一次連結的建立需要這種經常性的開銷,而其並不帶有實際有用的資料,只是保證連結的可靠性,因此HTTP/1.1提出了可持續連結的實現方法。HTTP/1.1將只建立一次TCP的連結而重複地使用它傳輸一系列的請求 /響應訊息,因此減少了連結建立的次數和經常性的連結開銷。原理如下簡圖:

                                                                             

   FTP協議(File TransferProtocol)檔案傳輸協議,用於Internet 上的控制檔案的雙向傳輸,同時也是喲個應用程式(Application).使用者可以通過把自己的PC機與世界各地所有執行FTP協議伺服器相連,訪問服 務器上大量的程式和資訊。FTP的主要作用就是,讓使用者連線上一個遠端計算機(這些計算機上執行著FTP伺服器程式)檢視遠端計算機有哪些檔案,然後把檔案從遠端計算機拷貝到本地計算機,或者把本地計算機檔案送到遠端計算機上去。原理如下簡圖:

                                         

結論:雖然HTTP本身是一個協議,但其最終還是基於TCP的。不過,目前,有人正在研究基於TCP+UDP混合的HTTP協議

4.Socket是什麼呢?

       Socket是應用層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP /IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議。

                                                                       

        套接字(Socket)工作原理
       (1) 當應用程序需要使用網路進行通訊時就發出系統呼叫,請求作業系統為其建立“套接字”,以便把網路通訊所需要的系統資源分配給該應用程序。
       (2) 作業系統為這些資源的總和用一個叫做套接字描述符的號碼來表示,並把此號碼返回給應用程序。應用程序所進行的網路操作都必須使用這個號碼。
       (3) 通訊完畢後,應用程序通過一個關閉套接字的系統呼叫通知作業系統回收與該“號碼”相關的所有資源。