1. 程式人生 > >《TCP/IP詳解卷一:協議》 概述

《TCP/IP詳解卷一:協議》 概述

        TCP/IP協議族,Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網路通訊協議,是Internet最基本的協議、Internet國際網際網路絡的基礎,由網路層的IP協議和傳輸層的TCP協議組成。TCP/IP 定義了電子裝置如何連入因特網,以及資料如何在它們之間傳輸的標準。TCP/IP協議族允許不同型號、執行著不同作業系統的計算機進行相互通訊。它是一個真正的開發系統,現在已經成為Internet的基礎,計算機之間最常應用的組網方式。

分層

        TCP/IP協議族是一組不同層次上的多個協議的組合。TCP/IP通常被認為是一個四層次協議系統。
                                                                     
  • 鏈路層(資料鏈路層或網路介面層):通常包括作業系統中的裝置驅動程式和計算機中對應的網路介面卡。用於處理與傳輸媒介物理介面細節。 
  • 網路層:處理有關通訊媒介的細節,處理分組在網路中的活動,例如分組的選路。在TCP/IP協議族中,網路層協議包含IP協議(網際協議),ICMP(Internet網際網路控制報文協議,Internet Control Message Protocol),以及IGMP協議(Internet組管理協議,Internet Group Management Protocol
    )。
  • 運輸層:為兩臺主機上的應用程式提供端到端的通訊。包含TCP(傳輸控制協議,Transmission Control Protocol)和UDP(使用者資料報協議,User Datagram Protocol)。
    • TCP為兩臺主機提供高可靠性的資料通訊。它所做的工作包括將應用程式交給他的資料分成合適的小塊交給下面的網路層,確認接收到的分組,設定傳送最終確認分組的超時時鐘等。(傳輸層提供了可靠的端到端的通訊)
    • UDP則為應用層提供了一種非常簡單的服務。它只把稱為資料報的分組從一臺主機發送到另一臺主機,但不保證該資料報能到達另一端。任何必需的可靠性必須由應用層來提供。
  • 應用層: 負責處理特定的應用程式細節。 
    • Telnet遠端登入(Telnet是常用的遠端控制Web伺服器的方法)
    • FTP檔案傳輸協議 
    • SMTP簡單郵件傳送協議 
    • SNMP簡單網路管理協議(simple network management protocol) 

        TCP/IP協議族是一組不同的協議組合在一起構成的協議族,儘管通常稱該協議為TCP/IP協議,但TCP和IP只是其中的兩種協議而已。(該協議族的另一個名字為Internet協議族(Internet Protocol Suite))。如上圖所示,FTP是一種應用層協議,TCP是一種運輸層協議,IP是一種網路協議,而乙太網協議應用於鏈路層。
        一個互連網(internet)就是一組通過相同協議族互連在一起的網路。構建互連網最簡單的方法就是把兩個或多個網路通過路由器進行連線。它是一種特殊的用於網路互連的硬體盒。路由器(Router)的好處是為為不同型別的物理網路提供連線:乙太網、令牌環網、點對點的連結和FDDI(光纖分散式資料介面)。從歷史上說,這些盒子稱為閘道器。但現在閘道器這個術語只用來表示應用層閘道器:一個連線兩種不同協議族的程序,它為特定的應用程式服務。
        對上面描述的互連網,我們可以劃分出端系統(End system)(兩邊的主機)和中間系統( Intermediate system)(中間的路由器)。應用層和傳輸層使用端到端協議,只有端系統需要這兩層協議。而網路層使用逐跳協議,兩個端系統和中間系統都要使用它。 網路層和運輸層的區別:         網路層IP提供的是一種不可靠的服務。也就是說,它只是儘可能快的把分組從源結點送到目的結點,但是並不提供任何可靠性保證。運輸層TCP採用了超時重傳、傳送和接收端到端的確認分組機制,在不可靠的IP層上提供了一個可靠的運輸層。
        從定義上看,一個路由器具有兩個或兩個以上網路介面層(因為它連線了兩個或多個網路)。網際網路的目的之一就是在應用程式中隱藏所有的物理細節。因此,通過路由器進行互連不同型別的物理網路,對應用層而言,下層細節是被隱藏的。連線網路的另一途徑是使用網橋。網橋是在鏈路層上對網路進行互連,而路由器是在網路層上對網路進行互連。網橋使得多個區域網(LAN)組合在一起,這樣對上層來說就好像是一個區域網。

TCP/IP協議的分層

        上圖介紹了本書將主要討論的協議。

        ICMP是IP協議的附屬協議,IP層用它來與其他主機或路由器交換錯誤報文和其他重要資訊。IGMP是Internet組管理協議,它用來把一個UDP資料報多播到多個主機。(注意廣播(將一個UDP資料報傳送到某個指定網路上的所有主機)和多播的區別)。ARP(地址解析協議)和RARP(逆地址解析協議)是某些網路介面(乙太網和令牌環網)使用的特殊協議,用來轉換IP層和網路介面層使用的地址。

網際網路的地址

  這裡介紹IPV4版本,IP地址長度為32bit,使用常見的點分十進位制表示。        
三類IP地址:單播地址(目的為單個主機),廣播地址(目的端為給定網路上的所有主機)以及多播地址(目的端為同一組的所有主機) ,對於子網劃分及NAT技術後面討論。

域名系統(DNS)

在TCP/IP領域中,域名系統(DNS)是一個分佈的資料庫,由它來提供IP地址和主機名之間的對映資訊。

封裝

        當應用程式使用TCP傳送資料時,資料被送入協議棧中,然後逐個通過每一層直到被當作一串位元流送入網路。其中每一層對收到的資料都要新增一些首部資訊(有的還要新增尾部資訊)。TCP傳給IP的資料單元稱為TCP報文段或簡稱為TCP段(TCP segment),IP傳給網路介面層的資料單元稱為IP資料報(IP datagram),通過乙太網傳輸的位元流稱為幀。乙太網資料幀的物理特性是其長度必須在46到15000位元組之間。          UDP資料與TCP資料基本一致,唯一不同的是UDP傳給IP的資訊單元稱為UDP資料報(UDP  datagram),而且UDP的首部長度為8位元組(TCP首部為20位元組)。關於每一層新增的首部資訊詳細解釋後面介紹。

分用

        當目的主機收到一個乙太網資料幀時,資料就開始從協議棧中由底向上升,同時去掉各層協議加上的報文首部,每次協議盒都要去檢查報文首部中的協議標識,以確定接收資料的上層協議。同時為協議ICMP和IGMP定位存在著一些困難。在圖1-4中,將它們與IP放在同一層上,那是因為它們是IP的附屬協議。但在這裡,將它們放在IP層上面,是因為ICMP和IGMP報文都被封裝在IP資料報中。同時,對於ARP和RARP協議而言,將它們放在乙太網裝置驅動程式之上,是因為它們跟IP資料報一樣,都有各自的乙太網資料幀型別(通過幀首部的型別欄位判斷)。而在圖1-4中,把ARP作為乙太網裝置驅動程式的一部分,放在IP層的下面,在邏輯上是合理的。

埠號

        埠號用來標識互相通訊的應用程式。對於每一個TCP/IP實現來說,FTP伺服器的TCP埠號都是21,每個Telnet伺服器的TCP埠號都是23,每個TFTP伺服器的UDP埠號都是69。任何TCP/IP實現所提供的服務都要用知名的1~1023之間的埠號。客戶端通常對它使用的埠號並不關心,只需保證該埠號在本機上是唯一的就可以了。大多數TCP/IP實現給臨時埠分配1024~5000之間的埠號。大於5000的埠號是為其他伺服器預留的。

網際網路

        internet這個詞的第一個字母是否大寫決定了它具有不同的含義。internet意思是一個共用的協議族把多個網路連線在一起。而Internet指的是世界範圍內通過TCP/IP相互通訊的所有主機集合。Internet是一個internet,而internet不等於Internet。

應用程式設計介面

        使用TCP/IP協議的應用程式通常採用兩種應用程式設計介面:socket和TLI(運輸層介面:Transport Layer Interface)。