內部結構
TCP/IP協定組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協定(例如T1和X.25、乙太網以及RS-232串列接口)之上。確切地說,TCP/IP協定是一組包括TCP協定和IP協定,UDP(User Datagram Protocol)協定、ICMP(Internet Control Message Protocol)協定和其他一些協定的協定組。
整體構架:TCP/IP協定並不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協定的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬體在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和套用層。而TCP/IP通訊協定採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為:套用層:應用程式間溝通的層,如簡單電子郵件傳輸(SMTP)、檔案傳輸協定(FTP)、網路遠程訪問協定(Telnet)等。
傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協定(TCP)、用戶數據報協定(UDP)等,TCP和UDP給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,並且確定數據已被送達並接收。
互連網路層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協定(IP)。
網路接口層:對實際的網路媒體的管理,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送數據。
功能
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。這些連線埠號是‘廣為人知’的,因為在建立與特定的主機或服務的連線時,需要這些地址和目的地址進行通訊。
IP協定
IP(Internet Protocol)協定的英文名直譯就是:網際網路協定。從這個名稱我們就可以知道IP協定的重要性。在現實生活中,我們進行貨物運輸時都是把貨物包裝成一個個的紙箱或者是貨櫃之後才進行運輸,在網路世界中各種信息也是通過類似的方式進行傳輸的。IP協定規定了數據傳輸時的基本單元和格式。如果比作貨物運輸,IP協定規定了貨物打包時的包裝箱尺寸和包裝的程式。除了這些以外,IP協定還定義了數據包的遞交辦法和路由選擇。同樣用貨物運輸做比喻,IP協定規定了貨物的運輸方法和運輸路線。TCP協定
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機、互連網伺服器、網路設備等,必須對這些硬設備的電氣特性作一個規範,使這些設備都能夠互相連線併兼容使用。
網路接口層:它定義了將資料組成正確幀的規程和在網路中傳輸幀的規程,幀是指一串資料,它是資料在網路中傳輸的單位。
傳輸層:為兩個用戶進程之間建立、管理和拆除可靠而又有效的端到端連線。
套用層:它定義了應用程式使用網際網路的規程。
網間協定IP
Internet上使用的一個關鍵的底層協定是網際協定,通常稱IP協定。我們利用一個共同遵守的通信協定,從而使Internet成為一個允許連線不同類型的計算機和不同作業系統的網路。要使兩台計算機彼此之間進行通信,必須使兩台計算機使用同一種"語言"。通信協定正像兩台計算機交換信息所使用的共同語言,它規定了通信雙方在通信中所應共同遵守的約定。
計算機的通信協定精確地定義了計算機在彼此通信過程的所有細節。例如,每台計算機傳送的信息格式和含義,在什麼情況下應傳送規定的特殊信息,以及接收方的計算機應做出哪些應答等等。
網際協定IP協定提供了能適應各種各樣網路硬體的靈活性,對底層網路硬體幾乎沒有任何要求,任何一個網路只要可以從一個地點向另一個地點傳送二進制數據,就可以使用IP協定加入Internet了。
如果希望能在Internet上進行交流和通信,則每台連上Internet的計算機都必須遵守IP協定。為此使用Internet的每台計算機都必須運行IP軟體,以便時刻準備傳送或接收信息。
IP協定對於網路通信有著重要的意義:網路中的計算機通過安裝IP軟體,使許許多多的區域網路構成了一個龐大而又嚴密的通信系統。從而使Internet看起來好像是真實存在的,但實際上它是一種並不存在的虛擬網路,只不過是利用IP協定把全世界上所有願意接入Internet的計算機區域網路連線起來,使得它們彼此之間都能夠通信。
傳輸控制
儘管計算機通過安裝IP軟體,從而保證了計算機之間可以傳送和接收資料,但IP協定還不能解決資料分組在傳輸過程中可能出現的問題。因此,若要解決可能出現的問題,連上Internet的計算機還需要安裝TCP協定來提供可靠的並且無差錯的通信服務。
TCP協定被稱作一種端對端協定。這是因為它為兩台計算機之間的連線起了重要作用:當一台計算機需要與另一台遠程計算機連線時,TCP協定會讓它們建立一個連線、傳送和接收資料以及終止連線。
傳輸控制協定TCP協定利用重發技術和擁塞控制機制,向應用程式提供可靠的通信連線,使它能夠自動適應網上的各種變化。即使在 Internet 暫時出現堵塞的情況下,TCP也能夠保證通信的可靠。
眾所周知,Internet是一個龐大的國際性網路,網路上的擁擠和空閒時間總是交替不定的,加上傳送的距離也遠近不同,所以傳輸資料所用時間也會變化不定。TCP協定具有自動調整"逾時值"的功能,能很好地適應Internet上各種各樣的變化,確保傳輸數值的正確。
因此,從上面我們可以了解到:IP協定只保證計算機能傳送和接收分組資料,而TCP協定則可提供一個可靠的、可流控的、全雙工的信息流傳輸服務。
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在環回測試和廣播測試時會使用
子網劃分
若公司不上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的原理及如何規劃。
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
A1.0.0.0-126.255.255.255255.0.0.0
B128.0.0.0-191.255.255.255255.255.0.0
C192.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可自行以上述方法自行推演出來。
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命令無法正常返回數據包,不防換個網站試試。