TCP/IP結構詳述

 從協議分層模型方面來講,TCP/IP由四個層次組成:網絡接口層、網絡層、傳輸層、應用層
  TCP/IP協議並不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。而TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。

  

網絡接口層

  物理層是定義物理介質的各種特性:

  1、機械特性。

  2、電子特性。

  3、功能特性。

  4、規程特性。

  數據鏈路層是負責接收IP數據報並通過網絡發送之,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。

  常見的接口層協議有:

  Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM 等。

網絡層

  負責相鄰計算機之間的通信。其功能包括三方面。

  一、處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,然後將數據報發往適當的網絡接口。

  二、處理輸入數據報:首先檢查其合法性,然後進行尋徑--假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報尚未到達信宿,則轉發該數據報。

  三、處理路徑、流控、擁塞等問題。

  網絡層包括:IP(Internet Protocol)協議、ICMP(Internet Control Message Protocol)

  控制報文協議、ARP(Address Resolution Protocol)地址轉換協議、RARP(Reverse ARP)反向地址轉換協議。

  IP是網絡層的核心,通過路由選擇將下一跳IP封裝後交給接口層。IP數據報是無連接服務。

  ICMP是網絡層的補充,可以回送報文。用來檢測網絡是否通暢。

  Ping命令就是發送ICMP的echo包,通過回送的echo relay進行網絡測試。

  ARP是正向地址解析協議,通過已知的IP,尋找對應主機的MAC地址

  RARP是反向地址解析協議,通過MAC地址確定IP地址。比如無盤工作站和DHCP服務。

 

      1.  IP  (運作機制

  IP層接收由更低層(網絡接口層例如以太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因爲IP並沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。

  高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好像是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是爲了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。

      2.  ICMP   (運作機制)

  ICMP與IP位於同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機通向其他系統的更準確的路徑,而‘Unreachable’信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接‘體面地’終止。PING是最常用的基於ICMP的服務。

 

傳輸層

  提供應用程序間的通信。其功能包括:一、格式化信息流;二、提供可靠傳輸。爲實現後者,傳輸層協議規定接收端必鬚髮回確認,並且假如分組丟失,必須重新發送。

  傳輸層協議主要是:傳輸控制協議TCP(Transmission Control Protocol)和用戶數據報協議UDP(User Datagram protocol)。

      1.  TCP   (運作機制)

  TCP是面向連接的通信協議,通過三次握手建立連接,通訊時完成時要拆除連接,由於TCP是面向連接的所以只能用於點對點的通訊。

  TCP提供的是一種可靠的數據流服務,採用“帶重傳的肯定確認”技術來實現傳輸的可靠性。TCP還採用一種稱爲“滑動窗口”的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。

  如果IP數據包中有已經封好的TCP數據包,那麼IP將把它們向‘上’傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。

  TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。

  面向連接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收域名數據庫),但使用UDP傳送有關單個主機的信息。

     2.  UDP   (運作機制)

  UDP是面向無連接的通訊協議,UDP數據包括目的端口號和源端口號信息,由於通訊不需要連接,所以可以實現廣播發送。

  UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出丟包現象,實際應用中要求在程序員編程驗證。

  UDP與TCP位於同一層,但它不管數據包的順序、錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網絡時間協議)和DNS(DNS也使用TCP)。

  欺騙UDP包比欺騙TCP包更容易,因爲UDP沒有建立初始化連接(也可以稱爲握手)(因爲在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨着更大的危險。

     3.  通訊端口   (運作機制)

  TCP和UDP服務通常有一個客戶/服務器的關係,例如,一個Telnet服務進程開始在系統上處於空閒狀態,等待着連接。用戶使用Telnet客戶程序與服務進程建立一個連接。客戶程序向服務進程寫入信息,服務進程讀出信息併發出響應,客戶程序讀出響應並向用戶報告。因而,這個連接是雙工的,可以用來進行讀寫。

  兩個系統間的多重Telnet連接是如何相互確認並協調一致呢?TCP或UDP連接唯一地使用每個信息中的如下四項進行確認:

  源IP地址 發送包的IP地址。

  目的IP地址 接收包的IP地址。

  源端口 源系統上的連接的端口。

  目的端口 目的系統上的連接的端口。

  端口是一個軟件結構,被客戶程序或服務進程用來發送和接收信息。一個端口對應一個16比特的數。服務進程通常使用一個固定的端口,例如,SMTP使用25、Xwindows使用6000。這些端口號是‘廣爲人知’的,因爲在建立與特定的主機或服務的連接時,需要這些地址和目的地址進行通訊。

 

應用層

  向用戶提供一組常用的應用程序,比如電子郵件、文件傳輸訪問、遠程登錄等。遠程登錄TELNET使用TELNET協議提供在網絡其它主機上註冊的接口。TELNET會話提供了基於字符的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網絡內機器間的文件拷貝功能。

  應用層一般是面向用戶的服務。如FTP、TELNET、DNS、SMTP、POP3。

  FTP(File Transfer Protocol)是文件傳輸協議,一般上傳下載用FTP服務,數據端口是20H,控制端口是21H。

  Telnet服務是用戶遠程登錄服務,使用23H端口,使用明碼傳送,保密性差、簡單方便。

  DNS(Domain Name Service)是域名解析服務,提供域名到IP地址之間的轉換。

  SMTP(Simple Mail Transfer Protocol)是簡單郵件傳輸協議,用來控制信件的發送、中轉。 

  POP3(Post Office Protocol 3)是郵局協議第3版本,用於接收郵件。 

 

數據格式

        數據幀:幀頭+IP數據包+幀尾 (幀頭包括源和目標主機MAC地址及類型,幀尾是校驗字)

  IP數據包:IP頭部+TCP數據信息(IP頭包括源和目標主機IP地址、類型、生存期等)

  TCP數據信息:TCP頭部+實際數據 (TCP頭包括源和目標主機端口號、順序號、確認號、校驗字等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章