TCP/IP協議介紹

TCP/IP協議介紹

TCP/IP的通訊協議

這部分簡要介紹一下TCP/IP的內部結構,爲討論與互聯網有關的安全問題打下基礎。TCP/IP協議組之所以流行,部分原因是因爲它可以用在各種各樣的信道和底層協議(例如T1和X.25、以太網以及RS-232串行接口)之上。確切地說,TCP/IP協議是一組包括TCP協議和IP協議,UDP(User Datagram Protocol)協議、ICMP(Internet Control Message Protocol)協議和其他一些協議的協議組。

TCP/IP整體構架概述

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

應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。

傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,並且確定數據已被送達並接收。

互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。

網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、Serial Line等)來傳送數據。

TCP/IP中的協議

以下簡單介紹TCP/IP中的協議都具備什麼樣的功能,都是如何工作的:

1. IP

網際協議IP是TCP/IP的心臟,也是網絡層中最重要的協議。

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

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

2. TCP

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

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

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

3.UDP

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

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

4.ICMP

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

5. TCP和UDP的端口結構

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

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

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

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

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

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

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





  

  相信大家都聽說過TCP/IP這個詞,這個詞好像無處不在,時時都會在你面前跳出來。那TCP/IP到底是什麼意思呢?
TCP/IP其實是兩個網絡基礎協議:IP協議、TCP協議名稱的組合。下面我們分別來看看這兩個無處不在的協議。
IP協議

  IP(Internet Protocol)協議的英文名直譯就是:因特網協議。從這個名稱我們就可以知道IP協議的重要性。在現實生活中,我們進行貨物運輸時都是把貨物包裝成一個個的紙箱或者是集裝箱之後才進行運輸,在網絡世界中各種信息也是通過類似的方式進行傳輸的。IP協議規定了數據傳輸時的基本單元和格式。如果比作貨物運輸,IP協議規定了貨物打包時的包裝箱尺寸和包裝的程序。 除了這些以外,IP協議還定義了數據包的遞交辦法和路由選擇。同樣用貨物運輸做比喻,IP協議規定了貨物的運輸方法和運輸路線。

TCP協議

  我們已經知道了IP協議很重要,IP協議已經規定了數據傳輸的主要內容,那TCP(Transmission Control Protocol)協議是做什麼的呢?不知大家發現沒有,在IP協議中定義的傳輸是單向的,也就是說發出去的貨物對方有沒有收到我們是不知道的。就好像8毛錢一份的平信一樣。那對於重要的信件我們要寄掛號信怎麼辦呢?TCP協議就是幫我們寄“掛號信”的。TCP協議提供了可靠的面向對象的數據流傳輸服務的規則和約定。簡單的說在TCP模式中,對方發一個數據包給你,你要發一個確認數據包給對方。通過這種確認來提供可靠性。

TCP/IP(Transmission Control Protocol/Internet Protocol的簡寫,中文譯名爲傳輸控制協議/互聯網絡協議)協議是Internet最基本的協議,簡單地說,就是由底層的IP協議和TCP協議組成的。TCP/IP協議的開發工作始於70年代,是用於互聯網的第一套協議。
1.1 TCP/IP參考模型
TCP/IP協議的開發研製人員將Internet分爲五個層次,以便於理解,它也稱爲互聯網分層模型或互聯網分層參考模型,如下表:

應用層(第五層)
傳輸層(第四層)
互聯網層(第三層)
網絡接口層(第二層)
物理層(第一層)

  物理層:對應於網絡的基本硬件,這也是Internet物理構成,即我們可以看得見的硬設備,如PC機、互連網服務器、網絡設備等,必須對這些硬設備的電氣特性作一個規範,使這些設備都能夠互相連接併兼容使用。

  網絡接口層:它定義了將資料組成正確幀的規程和在網絡中傳輸幀的規程,幀是指一串資料,它是資料在網絡中傳輸的單位。

  互聯網層:本層定義了互聯網中傳輸的“信息包”格式,以及從一個用戶通過一個或多個路由器到最終目標的"信息包"轉發機制。
  傳輸層:爲兩個用戶進程之間建立、管理和拆除可靠而又有效的端到端連接。

  應用層:它定義了應用程序使用互聯網的規程。
1. 2 網間協議IP
   Internet 上使用的一個關鍵的底層協議是網際協議,通常稱IP協議。我們利用一個共同遵守的通信協議,從而使 Internet 成爲一個允許連接不同類型的計算機和不同操作系統的網絡。要使兩臺計算機彼此之間進行通信,必須使兩臺計算機使用同一種"語言"。通信協議正像兩臺計算機交換信息所使用的共同語言,它規定了通信雙方在通信中所應共同遵守的約定。
計算機的通信協議精確地定義了計算機在彼此通信過程的所有細節。例如,每臺計算機發送的信息格式和含義,在什麼情況下應發送規定的特殊信息,以及接收方的計算機應做出哪些應答等等。
網際協議IP協議提供了能適應各種各樣網絡硬件的靈活性,對底層網絡硬件幾乎沒有任何要求,任何一個網絡只要可以從一個地點向另一個地點傳送二進制數據,就可以使用IP協議加入 Internet 了。
如果希望能在 Internet 上進行交流和通信,則每臺連上 Internet 的計算機都必須遵守IP協議。爲此使用 Internet 的每臺計算機都必須運行IP軟件,以便時刻準備發送或接收信息。
IP協議對於網絡通信有着重要的意義:網絡中的計算機通過安裝IP軟件,使許許多多的局域網絡構成了一個龐大而又嚴密的通信系統。從而使 Internet 看起來好像是真實存在的,但實際上它是一種並不存在的虛擬網絡,只不過是利用IP協議把全世界上所有願意接入 Internet 的計算機局域網絡連接起來,使得它們彼此之間都能夠通信。
1.3 傳輸控制協議TCP
儘管計算機通過安裝IP軟件,從而保證了計算機之間可以發送和接收資料,但IP協議還不能解決資料分組在傳輸過程中可能出現的問題。因此,若要解決可能出現的問題,連上 Internet 的計算機還需要安裝TCP協議來提供可靠的並且無差錯的通信服務。
TCP協議被稱作一種端對端協議。這是因爲它爲兩臺計算機之間的連接起了重要作用:當一臺計算機需要與另一臺遠程計算機連接時,TCP協議會讓它們建立一個連接、發送和接收資料以及終止連接。
傳輸控制協議TCP協議利用重發技術和擁塞控制機制,嚮應用程序提供可靠的通信連接,使它能夠自動適應網上的各種變化。即使在 Internet 暫時出現堵塞的情況下,TCP也能夠保證通信的可靠。
衆所周知, Internet 是一個龐大的國際性網絡,網絡上的擁擠和空閒時間總是交替不定的,加上傳送的距離也遠近不同,所以傳輸資料所用時間也會變化不定。TCP協議具有自動調整"超時值"的功能,能很好地適應 Internet 上各種各樣的變化,確保傳輸數值的正確。
因此,從上面我們可以瞭解到:IP協議只保證計算機能發送和接收分組資料,而TCP協議則可提供一個可靠的、可流控的、全雙工的信息流傳輸服務。

   綜上所述,雖然IP和TCP這兩個協議的功能不盡相同,也可以分開單獨使用,但它們是在同一時期作爲一個協議來設計的,並且在功能上也是互補的。只有兩者的結合,才能保證 Internet 在複雜的環境下正常運行。凡是要連接到 Internet 的計算機,都必須同時安裝和使用這兩個協議,因此在實際中常把這兩個協議統稱作TCP/IP協議。
1. 4 IP地址及其分類
在Internet上連接的所有計算機,從大型機到微型計算機都是以獨立的身份出現,我們稱它爲主機。爲了實現各主機間的通信,每臺主機都必須有一個唯一的網絡地址。就好像每一個住宅都有唯一的門牌一樣,才不至於在傳輸資料時出現混亂。
Internet的網絡地址是指連入Internet網絡的計算機的地址編號。所以,在Internet網絡中,網絡地址唯一地標識一臺計算機。
我們都已經知道,Internet是由幾千萬臺計算機互相連接而成的。而我們要確認網絡上的每一臺計算機,靠的就是能唯一標識該計算機的網絡地址,這個地址就叫做IP(Internet Protocol的簡寫)地址,即用Internet協議語言表示的地址。
目前,在Internet裏,IP地址是一個32位的二進制地址,爲了便於記憶,將它們分爲4組,每組8位,由小數點分開,用四個字節來表示,而且,用點分開的每個字節的數值範圍是0~255,如202.116.0.1,這種書寫方法叫做點數表示法。
IP地址可確認網絡中的任何一個網絡和計算機,而要識別其它網絡或其中的計算機,則是根據這些IP地址的分類來確定的。一般將IP地址按節點計算機所在網絡規模的大小分爲A,B,C三類,默認的網絡屏蔽是根據IP地址中的第一個字段確定的。
  1. A類地址
  A類地址的表示範圍爲:0.0.0.0~126.255.255.255,默認網絡屏蔽爲:255.0.0.0;A類地址分配給規模特別大的網絡使用。A類網絡用第一組數字表示網絡本身的地址,後面三組數字作爲連接於網絡上的主機的地址。分配給具有大量主機(直接個人用戶)而局域網絡個數較少的大型網絡。例如IBM公司的網絡。
  2. B類地址
B類地址的表示範圍爲:128.0.0.0~191.255.255.255,默認網絡屏蔽爲:255.255.0.0;B類地址分配給一般的中型網絡。B類網絡用第一、二組數字表示網絡的地址,後面兩組數字代表網絡上的主機地址。
  3. C類地址
  C類地址的表示範圍爲:192.0.0.0~223.255.255.255,默認網絡屏蔽爲:255.255.255.0;C類地址分配給小型網絡,如一般的局域網和校園網,它可連接的主機數量是最少的,採用把所屬的用戶分爲若干的網段進行管理。C類網絡用前三組數字表示網絡的地址,最後一組數字作爲網絡上的主機地址。

   實際上,還存在着D類地址和E類地址。但這兩類地址用途比較特殊,在這裏只是簡單介紹一下:D類地址稱爲廣播地址,供特殊協議向選定的節點發送信息時用。E類地址保留給將來使用。
連接到Internet上的每臺計算機,不論其IP地址屬於哪類都與網絡中的其它計算機處於平等地位,因爲只有IP地址纔是區別計算機的唯一標識。所以,以上IP地址的分類只適用於網絡分類。
在Internet中,一臺計算機可以有一個或多個IP地址,就像一個人可以有多個通信地址一樣,但兩臺或多臺計算機卻不能共享一個IP地址。如果有兩臺計算機的IP地址相同,則會引起異常現象,無論哪臺計算機都將無法正常工作。
順便提一下幾類特殊的IP地址:
1. 廣播地址 目的端爲給定網絡上的所有主機,一般主機段爲全0
2. 單播地址 目的端爲指定網絡上的單個主機地址
3. 組播地址 目的端爲同一組內的所有主機地址
4. 環回地址 127.0.0.1 在環回測試和廣播測試時會使用
1.5 子網的劃分
若公司不上Internet,那一定不會煩惱IP Address的問題,因爲可以任意使用所有的IP Address,不管是A Class或是B Class,這個時候不會想到要用Sub Net,但若是上Internet那IP Address便彌足珍貴了,目前全球一陣Internet熱,IP Address已經愈來愈少了,而所申請的IP Address目前也趨保守,而且只有經申請的IP Address能在Internet使用,但對某些公司只能申請到一個C CLass的IP Address,但又有多個點需要使用,那這時便需要使用到Subnet,這就需要考慮子網的劃分,下面簡介Subnet的原理及如何規劃。
1.5.1 Subnet Mask的介紹
設定任何網絡上的任何設備不管是主機、PC、Router等皆需要設定IP Address,而跟隨着IP Address的是所謂的NetMask,這個NetMask主要的目的是由IP Address中也能獲得NetworkNumber,也就是說IP Address和Net Mask作AND而得到Network Number,如下所示:
IP Address
192.10.10.611000000.00001010.00001010.00000110
NetMask
255.255.255.011111111.11111111.11111111.00000000
AND
-------------------------------------------------------------------
Network Number
192.10.10.011000000.00001010.00001010.00000000
NetMask有所謂的默認值,如下所示
Class IP Address 範圍 Net Mask
A 1.0.0.0-126.255.255.255255.0.0.0
B 128.0.0.0-191.255.255.255255.255.0.0
C 192.0.0.0-223.255.255.255255.255.255.0
在預設的Net Mask都只有255的值,在談到Subnet Mask時這個值便不一定是255了。在完整一組C Class中如203.67.10.0-203.67.10.255 NetMask255.255.255.0,203.67.10.0稱之Network Number(將IP Address和Netmask作AND),而203.67.10.255是Broadcast的IP Address,所以這兩者皆不能使用,實際只能使用203.67.10.1--203.67.10.254等254個IP Address,這是以255.255.255.0作NetMask的結果,而所謂Subnet Msk尚可將整組C Class分成數組Network Number,這要在NEtMask作手腳,若是要將整組C CLass分成2個Network Number那NetMask設定爲255.255.255.192,若是要將整組C CLass分成8組Network Number則NetMask要爲255.255.255.224,這是怎麼來的,由以上知道Network Number是由IP Address和NetMask作AND而來的,而且將NetMask以二進制表示法知道是1的會保留,而爲0的去掉

192.10.10.193--11000000.00001010.00001010.10000001
255.255.255.0--11111111.11111111.11111111.00000000
--------------------------------------------------------------
192.10.10.0--11000000.00001010.00001010.00000000
以上是以255.255.255.0爲Net Mask的結果,Network Number是192.10.10.0,若是使用255.255.255.224作Net Mask結果便有所不同
192.10.10.193--11000000.00001010.00001010.10000000
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
192.10.10.192--11000000.00001010.00001010.10000000
此時Network Number變成了192.10.10.192,這便是Subnet。那要如何決定所使用的NetMask,255.255.255.224以二進制表示法爲11111111.11111111.11111111.11100000,變化是在最後一組,11100000便是224,以三個Bit可表示2的3次方便是8個Network Number
NetMask二進制表示法可分幾個Network
255.255.255.011111111.11111111.11111111.000000001
255.255.255.128
11111111.11111111.11111111.100000002
255.255.255.192
11111111.11111111.11111111.110000004
255.255.255.224
11111111.11111111.11111111.111000008
255.255.255.240
11111111.11111111.11111111.1111000016
255.255.255.248
11111111.11111111.11111111.1111100032
255.255.255.252
11111111.11111111.11111111.1111110064
以下使用255.255.255.224將C Class203.67.10.0分成8組Net work Number,各個Network Number及其Broadcast IP Address及可使用之IP Address序號Network Number Broadcast可使用之IP Address
(1)203.67.10.0--203.67.10.31
203.67.10.1--203.67.10.30
(2)203.67.10.32--203.67.10.63
203.67.10.33--203.67.10.62
(3)203.67.10.64--203.67.10.95
203.67.10.65--203.67.10.94
(4)203.67.10.96--203.67.10.127
203.67.10.97--203.67.10.126
(5)203.67.10.128--203.67.10.159
203.67.10.129--203.67.10.158
(6)203.67.10.160--203.67.10.191
203.67.10.161--203.67.10.190
(7)203.67.10.192--203.67.10.223
203.67.10.193--203.67.10.222
(8)203.67.10.224--203.67.10.255
203.67.10.225--203.67.10.254
可驗證所使用的IP Address是否如上表所示
203.67.10.115--11001011.01000011.00001010.01110011
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.96--11001011.01000011.00001010.01100000
203.67.10.55--11001011.01000011.00001010.00110111
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.32--11001011.01000011.00001010.00100000
其它的NetMask所分成的NetworkNumber可自行以上述方法自行推演出來。
1.5.3 Subnet的應用
使用Subnet是要解決只有一組C Class但需要數個Network Number的問題,並不是解決IP Address不夠用的問題,因爲使用Subnet反而能使用的IP Address會變少,Subnet通常是使用在跨地域的網絡互聯之中,兩者之間使用Router連線,同時也上Internet,但只申請到一組C Class IP Address,過Router又需不同的Network,所以此時就必須使用到Subnet,當然二網絡間也可以Remote Bridge連接,那便沒有使用Subnet的問題。

完美測試TCP/IP協議簡介


安裝網絡硬件和網絡協議之後,我們一般要進行TCP/IP協議的測試工作,那麼怎樣測試纔算是比較全面的測試呢?我們認爲,全面的測試應包括局域網和互聯網兩個方面,因此應從局域網和互聯網兩個方面測試,以下是我們在實際工作中利用命令行測試TCP/IP配置的步驟:
  1、 單擊“開始”/“運行”,輸入CMD按回車,打開命令提示符窗口。

  2、 首先檢查IP地址、子網掩碼、默認網關、DNS服務器地址是否正確,輸入命令ipconfig /all,按回車。此時顯示了你的網絡配置,觀查是否正確。

  3、 輸入ping 127.0.0.1,觀查網卡是否能轉發數據,如果出現“Request timed out”,表明配置差錯或網絡有問題。

  4、 Ping一個互聯網地址,如ping 202.102.128.68,看是否有數據包傳回,以驗證與互聯網的連接性。

  5、 Ping 一個局域網地址,觀查與它的連通性。

  6、 用nslookup測試DNS解析是否正確,輸入如nslookup www.ccidnet.com,查看是否能解析。

  如果你的計算機通過了全部測試,則說明網絡正常,否則網絡可能有不同程度的問題。在此不展開詳述。不過,要注意,在使用 ping命令時,有些公司會在其主機設置丟棄ICMP數據包,造成你的ping命令無法正常返回數據包,不防換個網站試試。  
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章