TCP/IP協議是什么?


我們來想想,我們編寫的程序大致可以分為幾種?為了我們的生活方便,我們運用編程將我們的工作效率大大提高,這是一種工具性的程序。好了,可是我們的程序不是拿來自己用用就可以了,我想每一個具有互聯網和編程思想的人都希望自己的作品可以被大家看見,我們就要將我們的程序分享。也就是說我們的程序的走向大概會歸到互聯網這條大河里面。所以了解互聯網的傳輸方式和規則,也成了我們這類人的生活技能和硬性需求。當然,如果你的編程產品正好是社交通信方面的,那么TCP/IP協議你就不能是了解這么簡單了。

一·什么是TCP/IP

所謂協議(protocol),其實就是一個群體之間規定的規則,這個規則的目的是為了保證這個群體里面的人可以正常交流。還是回到計算機和網絡的通信這邊來舉例。比如: 如何探測到通信目標、由哪一邊先發起通信、使用哪種語言進行通信、怎樣結束通信等規則都需要事先確定。不同的硬件、操作系統之間的通信,所有的這一切都需要一種規則。

協議中存在各式各樣的內容。從電纜的規格到 IP 地址的選定方法、尋找異地用戶的方法、雙方建立通信的順序,以及 Web 頁面顯示需要處理的步驟,等等。

像這樣把與互聯網相關聯的協議集合起來總稱為 TCP/IP。也有說法認為,TCP/IP 是指 TCP 和 IP 這兩種協議。還有一種說法認為,TCP/IP 是在 IP 協議的通信過程中,使用到的協議族的統稱。

 

二· 為什么不能只有一個協議?

當我們知道TCP/IP是一個協議群的時候,我想有些人會有這樣一個疑問。為什么要有這么多的協議?如果是關於通信的話,為什么我們不能用一個比較全的協議,這樣不是更簡單?

對於這個問題我想說:多不等於復雜,少不等於簡單。有時候可能恰恰相反。

對於上面那句話的解釋和對“為什么不能只有一個協議? ”問題的回答我想分兩個方面回答:

(一)

對於通信,我們的客觀世界本身是有所區分的。舉個例子,我們要將信息發給其他人,對於我們來說,就是我們電腦的消息轉移到其他人的電腦上,至於怎么完成這件事的放大,我們一概不知。可是有一點我們是可以明白的。就是,我們電腦里的東西不可能如隔空取物一般的到人家的電腦里,肯定是根據什么什么東西傳輸過去的。

其實,通過為了達成我們所描繪的文件傳輸,其實需要線纜、無線信號和每個電腦是具有的唯一的地址等條件。我們看這些條件,就發現了這里面有很多東西是屬於不同類別的,有的是物體,比如線纜,有的是無線的,比如無線電。如果我們以這個思路將我們的協議分為幾個層面,讓每個層面有專門的協議去負責,那么我們既可以做到詳細和完整,我們還可減輕工作量,如我們要修改協議,我們不需要將所以的協議都改,只需要修改我們需要的部分就好了。

(二)

第二個原因更加直白:沒有人能夠全面掌握互聯網中的傳輸狀況

在到達通信目標前的中轉過程中,那些計算機和路由器等網絡設備只能獲悉很粗略的傳輸路線。

這種機制稱為路由選擇(routing),有點像快遞公司的送貨過程。想要寄快遞的人,只要將自己的貨物送到集散中心,就可以知道快遞公司是否肯收件發貨,該快遞公司的集散中心檢查貨物的送達地址,明確下站該送往哪個區域的集散中心。接着,那個區域的集散中心自會判斷是否能送到對方的家中。我們是想通過這個比喻說明,無論哪台計算機、哪台網絡設備,它們都無法全面掌握互聯網中的細節。

就是因為沒有人能知道互聯網的信息傳輸的所有細節,那么我們就無法只用一個協議去將它的一切都包括起來。我們將協議根據一個思路進行分組和切割,讓負責這一塊的人來了解這一塊的協議,這種分工協作更專業也更加科學。

三.TCP/IP的分層

對於,協議分層,TCP/IP 協議族按層次分別分為以下 4 層:應用層、傳輸層、網絡層和數據鏈路層。

 

TCP/IP 協議族各層的作用如下。

應用層

應用層決定了向用戶提供應用服務時通信的活動。TCP/IP 協議族內預存了各類通用的應用服務。比如,FTP(FileTransfer
Protocol,文件傳輸協議)和 DNS(Domain Name System,域名系統)服務就是其中兩類。HTTP 協議也處於該層。

傳輸層

傳輸層對上層應用層,提供處於網絡連接中的兩台計算機之間的數據傳輸。在傳輸層有兩個性質不同的協議:TCP(Transmission ControlProtocol,傳輸控制協議)和UDP(User Data Protocol,用戶數據報協議)。

網絡層(又名網絡互連層)

網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把數據包傳送給對方。與對方計算機之間通過多台計算機或網絡設備進行傳輸時,網絡層所起的作用就是在眾多的選項內選擇一條傳輸路線。

鏈路層(又名數據鏈路層,網絡接口層)

用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部分(還包括連接器等一切傳輸媒介)。硬件上的范疇均在鏈路層的作用范圍之內。

四·了解主要的一些協議

(一).IP協議

按層次分,IP(Internet Protocol)網際協議位於網絡層。InternetProtocol
這個名稱可能聽起來有點誇張,但事實正是如此,因為幾乎所有使用網絡的系統都會用到 IP 協議。TCP/IP 協議族中的 IP
指的就是網際協議,協議名稱中占據了一半位置,其重要性可見一斑。可能有人會把“IP”和“IP 地址”搞混,“IP”其實是一種協議的名稱。

IP 協議的作用是把各種數據包傳送給對方。而要保證確實傳送到對方那里,則需要滿足各類條件。其中兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address)。

IP 地址指明了節點被分配到的地址,MAC 地址是指網卡所屬的固定

地址。IP 地址可以和 MAC 地址進行配對。IP 地址可變換,但 MAC地址基本上不會更改。

使用 ARP 協議憑借 MAC 地址進行通信

IP 間的通信依賴 MAC
地址。在網絡上,通信的雙方在同一局域網(LAN)內的情況是很少的,通常是經過多台計算機和網絡設備中轉才能連接到對方。而在進行中轉時,會利用下一站中轉設備的
MAC地址來搜索下一個中轉目標。這時,會采用 ARP 協議(AddressResolution Protocol)。ARP
是一種用以解析地址的協議,根據通信方的 IP 地址就可以反查出對應的 MAC 地址。

 

(二)·TCP協議

按層次分,TCP 位於傳輸層,提供可靠的字節流服務。

所謂的字節流服務(Byte Stream
Service)是指,為了方便傳輸,將大塊數據分割成以報文段(segment)為單位的數據包進行管理。而可靠的傳輸服務是指,能夠把數據准確可靠地傳給對方。一言以蔽之,TCP
協議為了更容易傳送大數據才把數據分割,而且 TCP 協議能夠確認數據最終是否送達到對方。

確保數據能到達目標

為了准確無誤地將數據送達目標處,TCP 協議采用了三次握手(three-way handshaking)策略。用 TCP
協議把數據包送出去后,TCP不會對傳送后的情況置之不理,它一定會向對方確認是否成功送達。21握手過程中使用了 TCP 的標志(flag) ——
SYN(synchronize) 和ACK(acknowledgement)。

發送端首先發送一個帶 SYN 標志的數據包給對方。接收端收到后,回傳一個帶有 SYN/ACK 標志的數據包以示傳達確認信息。最后,發送端再回傳一個帶 ACK 標志的數據包,代表“握手”結束。

若在握手過程中某個階段莫名中斷,TCP 協議會再次以相同的順序發送相同的數據包。

注意的是:除了上述三次握手,TCP 協議還有其他各種手段來保證通信的可靠

性。

 

(三)·DNS協議

DNS(Domain Name System)服務是和 HTTP 協議一樣位於應用層的協議。它提供域名到 IP 地址之間的解析服務。

計算機既可以被賦予 IP 地址,也可以被賦予主機名和域名。比如

用戶通常使用主機名或域名來訪問對方的計算機,而不是直接通過 IP地址訪問。因為與 IP 地址的一組純數字相比,用字母配合數字的表示形式來指定計算機名更符合人類的記憶習慣。

但要讓計算機去理解名稱,相對而言就變得困難了。因為計算機更擅長處理一長串數字。

為了解決上述的問題,DNS 服務應運而生。DNS 協議提供通過域名查找 IP 地址,或逆向從 IP 地址反查域名的服務。

五·協議之間的關系


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM