㈠ TCP/IP的概念及作用
什麼是TCP/IP協議
TCP/IP協議(Transfer Controln Protocol/Internet Protocol)叫做傳輸控制/網際協議,又叫網路通訊協議,這個協議是Internet國際互聯網路的基礎。
TCP/IP是網路中使用的基本的通信協議。雖然從名字上看TCP/IP包括兩個協議,傳輸控制協議(TCP)和網際協議(IP),但TCP/IP實際上是一組協議,它包括上百個各種功能的協議,如:遠程登錄、文件傳輸和電子郵件等,而TCP協議和IP協議是保證數據完整傳輸的兩個基本的重要協議。通常說TCP/IP是Internet協議族,而不單單是TCP和IP。
TCP/IP是用於計算機通信的一組協議,我們通常稱它為TCP/IP協議族。它是70年代中期美國國防部為其ARPANET廣域網開發的網路體系結構和協議標准,以它為基礎組建的INTERNET是目前國際上規模最大的計算機網路,正因為INTERNET的廣泛使用,使得TCP/IP成了事實上的標准。
之所以說TCP/IP是一個協議族,是因為TCP/IP協議包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等許多協議,這些協議一起稱為TCP/IP協議。以下我們對協議族中一些常用協議英文名稱和用途作一介紹:
TCP(Transport Control Protocol)傳輸控制協議
IP(Internetworking Protocol)網間網協議
UDP(User Datagram Protocol)用戶數據報協議
ICMP(Internet Control Message Protocol)互聯網控制信息協議
SMTP(Simple Mail Transfer Protocol)簡單郵件傳輸協議
SNMP(Simple Network manage Protocol)簡單網路管理協議
FTP(File Transfer Protocol)文件傳輸協議
ARP(Address Resolation Protocol)地址解析協議
從協議分層模型方面來講,TCP/IP由四個層次組成:網路介面層、網間網層、傳輸層、應用層。
其中:
網路介面層 這是TCP/IP軟體的最低層,負責接收IP數據報並通過網路發送之,或者從網路上接收物理幀,抽出IP數據報,交給IP層。
網間網層 負責相鄰計算機之間的通信。其功能包括三方面。一、處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,然後將數據報發往適當的網路介面。二、處理輸入數據報:首先檢查其合法性,然後進行尋徑--假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報尚未到達信宿,則轉發該數據報。三、處理路徑、流控、擁塞等問題。
傳輸層 提供應用程序間的通信。其功能包括:一、格式化信息流;二、提供可靠傳輸。為實現後者,傳輸層協議規定接收端必須發回確認,並且假如分組丟失,必須重新發送。
應用層 向用戶提供一組常用的應用程序,比如電子郵件、文件傳輸訪問、遠程登錄等。遠程登錄TELNET使用TELNET協議提供在網路其它主機上注冊的介面。TELNET會話提供了基於字元的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網路內機器間的文件拷貝功能。
前面我們已經學過關於OSI參考模型的相關概念,現在我們來看一看,相對於七層協議參考模型,TCP/IP協議是如何實現網路模型的。
數據鏈路層包括了硬體介面和協議ARP,RARP,這兩個協議主要是用來建立送到物理層上的信息和接收從物理層上傳來的信息;
網路層中的協議主要有IP,ICMP,IGMP等,由於它包含了IP協議模塊,所以它是所有機遇TCP/IP協議網路的核心。在網路層中,IP模塊完成大部分功能。ICMP和IGMP以及其他支持IP的協議幫助IP完成特定的任務,如傳輸差錯控制信息以及主機/路由器之間的控制電文等。網路層掌管著網路中主機間的信息傳輸。
傳輸層上的主要協議是TCP和UDP。正如網路層控制著主機之間的數據傳遞,傳輸層控制著那些將要進入網路層的數據。兩個協議就是它管理這些數據的兩種方式:TCP是一個基於連接的協議(還記得我們在網路基礎中講到的關於面向連接的服務和面向無連接服務的概念嗎?忘了的話,去看看);UDP則是面向無連接服務的管理方式的協議。
應用層位於協議棧的頂端,它的主要任務就是應用了。上面的協議當然也是為了這些應用而設計的,具體說來一些常用的協議功能如下:
Telnet:提供遠程登錄(終端模擬)服務,好象比較古老的BBS就是用的這個登陸。
FTP :提供應用級的文件傳輸服務,說的簡單明了點就是遠程文件訪問等等服務;
SMTP:不用說拉,天天用到的電子郵件協議。
TFTP:提供小而簡單的文件傳輸服務,實際上從某個角度上來說是對FTP的一種替換(在文件特別小並且僅有傳輸需求的時候)。
SNTP:簡單網路管理協議。看名字就不用說什麼含義了吧。
DNS:域名解析服務,也就是如何將域名映射城IP地址的協議。
HTTP:不知道各位對這個協議熟不熟悉啊?這是超文本傳輸協議,你之所以現在能看到網上的圖片,動畫,音頻,等等,都是仰仗這個協議在起作用啊!
OSI中的層
功能
TCP/IP協議族
應用層
文件傳輸,電子郵件,文件服務,虛擬終端
TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示層
數據格式化,代碼轉換,數據加密
沒有協議
會話層
解除或建立與別的接點的聯系
沒有協議
傳輸層
提供端對端的介面
TCP,UDP
網路層
為數據包選擇路由
IP,ICMP,RIP,OSPF,BGP,IGMP
數據鏈路層
傳輸有地址的幀以及錯誤檢測功能
SLIP,CSLIP,PPP,ARP,RARP,MTU
物理層
以二進制數據形式在物理媒體上傳輸數據
ISO2110,IEEE802。IEEE802.2
OSI模型與TCP/IP協議有什麼區別?
除了層的數量之外,開放式系統互聯(OSI)模型與TCP/IP協議有什麼區別?
開放式系統互聯模型是一個參考標准,解釋協議相互之間應該如何相互作用。TCP/IP協議是美國國防部發明的,是讓互聯網成為了目前這個樣子的標准之一。開放式系統互聯模型中沒有清楚地描繪TCP/IP協議,但是在解釋TCP/IP協議時很容易想到開放式系統互聯模型。兩者的主要區別如下:
·TCP/IP協議中的應用層處理開放式系統互聯模型中的第五層、第六層和第七層的功能。
·TCP/IP協議中的傳輸層並不能總是保證在傳輸層可靠地傳輸數據包,而開放式系統互聯模型可以做到。TCP/IP協議還提供一項名為UDP(用戶數據報協議)的選擇。UDP不能保證可靠的數據包傳輸。
OSI(Open System Interconnect)開放式系統互聯。
一般都叫OSI參考模型
是ISO(國際標准化組織)組織在1985年研究的網路互聯模型。
最早的時候網路剛剛出現的時候,很多大型的公司都擁有了網路技術,公司內部計算機可以相互連接。可以卻不能與其它公司連接。因為沒有一個統一的規范。計算機之間相互傳輸的信息對方不能理解。所以不能互聯。
ISO為了更好的使網路應用更為普及,就推出了OSI參考模型。其含義就是推薦所有公司使用這個規范來控制網路。這樣所有公司都有相同的規范,就能互聯了。
其內容如下:
第7層應用層—直接對應用程序提供服務,應用程序可以
變化,但要包括電子消息傳輸
第6層表示層—格式化數據,以便為應用程序提供通用接
口。這可以包括加密服務
第5層會話層—在兩個節點之間建立端連接。此服務包括
建立連接是以全雙工還是以半雙工的方式進行設
置,盡管可以在層4中處理雙工方式
第4層傳輸層—常規數據遞送-面向連接或無連接。包括
全雙工或半雙工、流控制和錯誤恢復服務
第3層網路層—本層通過定址來建立兩個節點之間的連接,
它包括通過互連網路來路由和中繼數據
第2層數據鏈路層—在此層將數據分幀,並處理流控制。本層
指定拓撲結構並提供硬體定址
第1層物理層—原始比特流的傳輸,電子信號傳輸和硬體介面
數據發送時,從第七層傳到第一層,接受方則相反。
上三層總稱應用層,用來控制軟體方面。
下四層總稱數據流層,用來管理硬體。
數據在發至數據流層的時候將被拆分。
在傳輸層的數據叫段 網路層叫包 數據鏈路層叫幀 物理層叫比特流 這樣的叫法叫PDU (協議數據單元)
OSI中每一層都有每一層的作用。比如網路層就要管理本機的IP的目的地的IP。數據鏈路層就要管理MAC地址(介質訪問控制)等等,所以在每層拆分數據後要進行封裝,以完成接受方與本機相互聯系通信的作用。
如以此規定。
OSI模型用途相當廣泛。
比如交換機、集線器、路由器等很多網路設備的設計都是參照OSI模型設計的。
參考資料:關於OSI:http://mis.szhqzx.net/teacher/niuqi/stkejian/chenqinghuankj/
㈡ 計算機網路——TCP/UDP協議
計算機網路七層模型中,傳輸層有兩個重要的協議:
(1)用戶數據報協議UDP (User Datagram Protocol)
(2)傳輸控制協議TCP (Transmission Control Protocol)
UDP 在傳送數據之前不需要先建立連接。遠地主機的運輸層在收到UDP 報文後,不需要給出任何確認。雖然UDP 不提供可靠交付,但在某些情況下UDP 卻是一種最有效的工作方式。
TCP 則提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP 不提供廣播或多播服務。由於TCP 要提供可靠的、面向連接的運輸服務,因此不可避免地增加了許多的開銷,如確認、流量控制、計時器以及連接管理等。
UDP 的主要特點是:
首部手段很簡單,只有8 個位元組,由四個欄位組成,每個欄位的長度都是兩個位元組。
前面已經講過,每條TCP 連接有兩個端點,TCP 連接的端點叫做套接字(socket)或插口。套接字格式如下:
套接寧socket= (IP 地址:埠號』)
每一條TCP 連接唯一地被通信兩端的兩個端點(即兩個套接宇)所確定。即:
TCP 連接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
3次握手鏈接
4次握手釋放鏈接
斷開連接請求可以由客戶端發出,也可以由伺服器端發出,在這里我們稱A端向B端請求斷開連接。
各個狀態節點解釋如下:
下面為了討論問題的萬便,我們僅考慮A發送數據而B 接收數據並發送確認。因此A 叫做發送方,而B 叫做接收方。
「停止等待」就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。
使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通信。像上述的這種可靠傳輸協議常稱為自動重傳請求ARQ (Automatic Repeat reQuest)。意思是重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。
滑動窗口協議比較復雜,是TCP 協議的精髓所在。這里先給出連續ARQ 協議最基本的概念,但不涉提到許多細節問題。詳細的滑動窗口協議將在後面討論。
下圖表示發送方維持的發送窗口,它的意義是:位於發送窗口內的5 個分組都可連續發送出去,而不需要等待對方的確認。這樣,信道利用率就提高了。
連續ARQ 協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
接收方一般都是採用 累積確認 的方式。這就是說,接收方不必對收到的分組逐個發送確認,而是可以在收到幾個分組後,對按序到達的最後一個分組發送確認,這樣就表示:到這個分組為止的所有分組都己正確收到了。
累積確認 的優點是容易實現,即使確認丟失也不必重傳。但缺點是不能向發送方反映出接收方己經正確收到的所有分組的信息。
例如,如果發送方發送了前5 個分組,而中間的第3 個分組丟失了。這時接收方只能對前兩個分組發出確認。發送方無法知道後面三個分組的下落,而只好把後面的三個分組都再重傳一次。這就叫做Go-back-N (回退N ),表示需要再退回來重傳己發送過的N 個分組。可見當通信線路質量不好時,連續ARQ 協議會帶來負面的影響。
TCP 的滑動窗口是以位元組為單位的。現假定A 收到了B 發來的確認報文段,其中窗口是20 (位元組),而確認號是31 (這表明B 期望收到的下一個序號是31 ,而序號30 為止的數據己經收到了)。根據這兩個數據, A 就構造出自己的發送窗口,其位置如圖所示。
發送窗口表示:在沒有收到B 的確認的情況下, A可以連續把窗口內的數據都發送出去。凡是己經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
發送窗口後沿的後面部分表示己發送且己收到了確認。這些數據顯然不需要再保留了。而發送窗口前沿的前面部分表示不允許發送的,因為接收方都沒有為這部分數據保留臨時存放的緩存空間。
現在假定A 發送了序號為31 ~ 41 的數據。這時發送窗口位置並未改變,但發送窗口內靠後面有11個位元組(灰色小方框表示)表示己發送但未收到確認。而發送窗口內靠前面的9 個位元組( 42 ~ 50 )是允許發送但尚未發送的。】
再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 號為止的數據是已經發送過確認,並且己經交付給主機了。因此在B 可以不再保留這些數據。接收窗口內的序號(31~50)足允許接收的。B 收到了序號為32 和33 的數據,這些數據沒有按序到達,因為序號為31 的數據沒有收到(也許丟失了,也許滯留在網路中的某處)。 請注意, B 只能對按序收到的數據中的最高序號給出確認,因此B 發送的確認報文段中的確認號仍然是31 (即期望收到的序號)。
現在假定B 收到了序號為31 的數據,並把序號為31~33的數據交付給主機,然後B刪除這些數據。接著把接收窗口向前移動3個序號,同時給A 發送確認,其中窗口值仍為20,但確認號是34,這表明B 已經收到了到序號33 為止的數據。我們注意到,B還收到了序號為37, 38 和40 的數據,但這些都沒有按序到達,只能先存在接收窗口。A收到B的確認後,就可以把發送窗口向前滑動3個序號,指針P2 不動。可以看出,現在A 的可用窗口增大了,可發送的序號范圍是42~53。整個過程如下圖:
A 在繼續發送完序號42-53的數據後,指針P2向前移動和P3重合。發送窗口內的序號都已用完,但還沒有再收到確認。由於A 的發送窗口己滿,可用窗口己減小到0,因此必須停止發送。
上面已經講到, TCP 的發送方在規定的時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念是很簡單的,但重傳時間的選擇卻是TCP 最復雜的問題之一。
TCP採用了一種自適應演算法 ,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT,TCP 保留了RTT的一個加權平均往返時間RTTs (這又稱為平滑的往返時間, S 表示Smoothed 。因為進行的是加權平均,因此得出的結果更加平滑)。每當第一次測量到RTT樣本時, RTTs值就取為所測量到的RTT樣本值。但以後每測量到一個新的RTT樣本,就按下式重新計算一次RTTs:
新的RTTs = (1 - α)×(舊的RTTs) + α ×(新的RTT樣本)
α 越大表示新的RTTs受新的RTT樣本的影響越大。推薦的α 值為0.125,用這種方法得出的加權平均往返時間RTTs 就比測量出的RTT值更加平滑。
顯然,超時計時器設置的超時重傳時間RTO (RetransmissionTime-Out)應略大於上面得出的加權平均往返時間RTTs。RFC 2988 建議使用下式計算RTO:
RTO = RTTs + 4 × RTTd
RTTd是RTT 的偏差的加權平均值,它與RTTs和新的RTT樣本之差有關。計算公式如下:
新的RTTd= (1- β)×(舊的RTTd) + β × |RTTs-新的RTT樣本|
發現問題: 如圖所示,發送出一個報文段。設定的重傳時間到了,還沒有收到確認。於是重
傳報文段。經過了一段時間後,收到了確認報文段。現在的問題是:如何判定此確認報文段是對先發送的報文段的確認,還是對後來重傳的報文段的確認?
若收到的確認是對重傳報文段的確認,但卻被源主機當成是對原來的報文段的確認,則這樣計算出的RTTs 和超時重傳時間RTO 就會偏大。若後面再發送的報文段又是經過重傳後才收到確認報文段,則按此方法得出的超時重傳時間RTO 就越來越長。
若收到的確認是對原來的報文段的確認,但被當成是對重傳報文段的確認,則由此計算出的RTTs 和RTO 都會偏小。這就必然導致報文段過多地重傳。這樣就有可能使RTO 越來越短。
Kam 提出了一個演算法:在計算加權平均RTTs 時,只要報文段重傳了就不採用其往返時間樣本。這樣得出的加權平均RTTs 和RTO 就較准確。
新問題: 設想出現這樣的情況:報文段的時延突然增大了很多。因此在原來得出的重傳時間內,不會收到確認報文段。於是就重傳報文段。但根據Kam 演算法,不考慮重傳的報文段的往返時間樣本。這樣,超時重傳時間就無法更新。
解決方案: 對Kam 演算法進行修正,方法是z報文段每重傳一次,就把超時重傳時間RTO 增大一些。典型的做法是取新的重傳時間為2 倍的舊的重傳時間。當不再發生報文段的重傳時,才根據上面給出的公式計算超時重傳時間。
流量控制(flow control)就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
利用滑動窗口機制可以很方便地在TCP 連接上實現對發送方的流量控制。
接收方的主機B 進行了三次流量控制。第一次把窗口減小到rwnd =300,第二次又減到rwnd = 100 ,最後減到rwnd = 0 ,即不允許發送方再發送數據了。這種使發送方暫停發送的狀態將持續到主機B 重新發出一個新的窗口值為止。我們還應注意到,B 向A 發送的三個報文段都設置了ACK=1,只有在ACK=1 時確認號欄位才有意義。
發生死鎖: 現在我們考慮一種情況。上圖中, B 向A 發送了零窗口的報文段後不久, B 的接收緩存又有了一些存儲空間。於是B 向A 發送了rwnd = 400 的報文段。然而這個報文段在傳送過程中丟失了。A 一直等待收到B 發送的非零窗口的通知,而B 也一直等待A 發送的數據。如果沒有其他措施,這種互相等待的死鎖局面將一直延續下去。
解決方案: TCP 為每一個連接設有一個 持續計時器(persistence timer) 。只要TCP 連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個 零窗口探測報文段 (僅攜帶1 宇節的數據),而對方就在確認這個探測報文段時給出了現在的窗口值。
1 TCP連接時是三次握手,那麼兩次握手可行嗎?
在《計算機網路》中是這樣解釋的:已失效的連接請求報文段」的產生在這樣一種情況下:client發出的第一個連接請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連接釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連接請求報文段後,就誤認為是client再次發出的一個新的連接請求。於是就向client發出確認報文段,同意建立連接。假設不採用「三次握手」,那麼只要server發出確認,新的連接就建立了。由於現在client並沒有發出建立連接的請求,因此不會理睬server的確認,也不會向server發送ACK包。這樣就會白白浪費資源。而經過三次握手,客戶端和伺服器都有應有答,這樣可以確保TCP正確連接。
2 為什麼TCP連接是三次,揮手確是四次?
在TCP連接中,伺服器端的SYN和ACK向客戶端發送是一次性發送的,而在斷開連接的過程中,B端向A端發送的ACK和FIN是是分兩次發送的。因為在B端接收到A端的FIN後,B端可能還有數據要傳輸,所以先發送ACK,等B端處理完自己的事情後就可以發送FIN斷開連接了。
3 為什麼在第四次揮手後會有2個MSL的延時?
MSL是Maximum Segment Lifetime,最大報文段生存時間,2個MSL是報文段發送和接收的最長時間。假定網路不可靠,那麼第四次發送的ACK可能丟失,即B端無法收到這個ACK,如果B端收不到這個確認ACK,B端會定時向A端重復發送FIN,直到B端收到A的確認ACK。所以這個2MSL就是用來處理這個可能丟失的ACK的。
1 文件傳送協議
文件傳送協議FTP (File Transfer Protocol) [RFC 959]是網際網路上使用得最廣泛的文件傳送協議,底層採用TCP協議。
盯P 使用客戶伺服器方式。一個FTP 伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接受新的請求:另外有若干個從屬進程,負責處理單個請求。
在進行文件傳輸時,客戶和伺服器之間要建立兩個並行的TCP 連接:「控制連接」(21埠)和「數據連接」(22埠)。控制連接在整個會話期間一直保持打開, FTP 客戶所發出的傳送請求,通過控制連接發送給伺服器端的控制進程,但控制連接並不用來傳送文件。實際用於傳輸文件的是「數據連接」。伺服器端的控制進程在接收到FTP 客戶發送來的文件傳輸請求後就創建「數據傳送進程」和「數據連接」,用來連接客戶端和伺服器端的數據傳送進程。
2 簡單文件傳送協議TFTP
TCP/IP 協議族中還有一個簡單文件傳送協議TFfP (Trivial File Transfer Protocol),它是一個很小且易於實現的文件傳送協議,埠號69。
TFfP 也使用客戶伺服器方式,但它使用UDP 數據報,因此TFfP 需要有自己的差錯改正措施。TFfP 只支持文件傳輸而不支持交耳。
3 TELNET
TELNET 是一個簡單的遠程終端協議,底層採用TCP協議。TELNET 也使用客戶伺服器方式。在本地系統運行TELNET 客戶進程,而在遠地主機則運行TELNET 伺服器進程,佔用埠23。
4 郵件傳輸協議
一個電子郵件系統應具如圖所示的三個主要組成構件,這就是用戶代理、郵件伺服器,以及郵件發送協議(如SMTP )和郵件讀取協議(如POP3), POP3 是郵局協議(Post Office Protocol)的版本3 。
SMTP 和POP3 (或IMAP )都是在TCP 連接的上面傳送郵件,使用TCP 的目的是為了使郵件的傳送成為可靠的。
㈢ TCP/IP協議是互聯網路的信息交換、規則、規范的集合體。TCP是什麼IP是什麼
TCP/IP(TransmissionControlProtocol/InternetProtocol的簡寫,中文譯名為傳輸控制協議/互聯網路協議)協議是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(InternetProtocol的簡寫)地址,即用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,那一定不會煩惱IPAddress的問題,因為可以任意使用所有的IPAddress,不管是AClass或是BClass,這個時候不會想到要用SubNet,但若是上Internet那IPAddress便彌足珍貴了,目前全球一陣Internet熱,IPAddress已經愈來愈少了,而所申請的IPAddress目前也趨保守,而且只有經申請的IPAddress能在Internet使用,但對某些公司只能申請到一個CCLass的IPAddress,但又有多個點需要使用,那這時便需要使用到Subnet,這就需要考慮子網的劃分,下面簡介Subnet的原理及如何規劃。
1.5.1 Subnet Mask的介紹
設定任何網路上的任何設備不管是主機、PC、Router等皆需要設定IPAddress,而跟隨著IPAddress的是所謂的NetMask,這個NetMask主要的目的是由IPAddress中也能獲得NetworkNumber,也就是說IPAddress和NetMask作AND而得到NetworkNumber,如下所示:
IPAddress
192.10.10.611000000.00001010.00001010.00000110
NetMask
255.255.255.011111111.11111111.11111111.00000000
AND
-------------------------------------------------------------------
NetworkNumber
192.10.10.011000000.00001010.00001010.00000000
NetMask有所謂的預設值,如下所示
ClassIPAddress范圍NetMask
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
在預設的NetMask都只有255的值,在談到SubnetMask時這個值便不一定是255了。在完整一組CClass中如203.67.10.0-203.67.10.255NetMask255.255.255.0,203.67.10.0稱之NetworkNumber(將IPAddress和Netmask作AND),而203.67.10.255是Broadcast的IPAddress,所以這兩者皆不能使用,實際只能使用203.67.10.1--203.67.10.254等254個IPAddress,這是以255.255.255.0作NetMask的結果,而所謂SubnetMsk尚可將整組CClass分成數組NetworkNumber,這要在NEtMask作手腳,若是要將整組CCLass分成2個NetworkNumber那NetMask設定為255.255.255.192,若是要將整組CCLass分成8組NetworkNumber則NetMask要為255.255.255.224,這是怎麽來的,由以上知道NetworkNumber是由IPAddress和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為NetMask的結果,NetworkNumber是192.10.10.0,若是使用255.255.255.224作NetMask結果便有所不同
192.10.10.193--11000000.00001010.00001010.10000000
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
192.10.10.192--11000000.00001010.00001010.10000000
此時NetworkNumber變成了192.10.10.192,這便是Subnet。那要如何決定所使用的NetMask,255.255.255.224以二進位表示法為11111111.11111111.11111111.11100000,變化是在最後一組,11100000便是224,以三個Bit可表示2的3次方便是8個NetworkNumber
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將CClass203.67.10.0分成8組NetworkNumber,各個NetworkNumber及其BroadcastIPAddress及可使用之IPAddress序號NetworkNumberBroadcast可使用之IPAddress
(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
可驗證所使用的IPAddress是否如上表所示
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.2 Subnet的應用
使用Subnet是要解決只有一組CClass但需要數個NetworkNumber的問題,並不是解決IPAddress不夠用的問題,因為使用Subnet反而能使用的IPAddress會變少,Subnet通常是使用在跨地域的網路互聯之中,兩者之間使用Router連線,同時也上Internet,但只申請到一組CClassIPAddress,過Router又需不同的Network,所以此時就必須使用到Subnet,當然二網路間也可以RemoteBridge連接,那便沒有使用Subnet的問題。
1.6 幾個常用的程序
1.6.1 ping
這個程序用來檢測一幀數據從當前主機傳送到目的主機所需要的時間。當網路運行中出現故障時,採用這個實用程序來預測故障和確定故障源是非常有效的。如果執行ping不成功,則可以預測故障出現在以下幾個方面:網線是否連通,網路適配器配置是否正確,IP地址是否可用等;如果執行ping成功而網路仍無法使用,那麼問題很可能出在網路系統的軟體配置方面,ping成功只能保證當前主機與目的主機間存在一條連通的物理路徑。它還提供了許多參數,如-t使當前主機不斷地向目的主機發送數據,直到使用Ctrl-C中斷;-n可以自己確定向目的主機發送的數據幀數等等。
1.6.2 winipcfg
它用來顯示主機內IP協議的配置信息。它採用Windows窗口的形式顯示具體信息。這些信息包括:網路適配器的物理地址、主機的IP地址、子網掩碼以及默認網關等,還可以查看主機的相關信息如:主機名、DNS伺服器、節點類型等。其中網路適配器的物理地址在檢測網路錯誤時非常有用。
1.6.3 tracert
這個程序的功能是判定數據包到達目的主機所經過的路徑、顯示數據包經過的中繼節點清單和到達時間。還可以使用參數-d決定是否解析主機名。
1.6.4 netstat
這個程序有助於我們了解網路的整體使用情況。它可以顯示當前正在活動的網路連接的詳細信息,如採用的協議類型、當前主機與遠端相連主機(一個或多個)的IP地址以及它們之間的連接狀態等。它提供的較為常用的參數是:-e用以顯示乙太網的統計信息;-s顯示所有協議的使用狀態,這些協議包括TCP、UDP和IP,一般這兩個參數都是結合在一起使用的。另外-p可以選擇特定的協議並查看其具體使用信息,-a可以顯示所有主機的埠號,-r則顯示當前主機的詳細路由信息。要運行以上這些程序,只要在DOS方式或Windows開始菜單的運行欄中以命令行的形式鍵入程序名即可。靈活使用這幾個程序可以使你大體了解自己主機對網路的使用情況。