TCP/IP協議 你們不管在工做仍是在生活中的某個角落都可以聽到這個詞的名稱,局域網中的主機若是想進行通訊或訪問網絡都須要對TCP/IP協議進行配置,以下圖 -1、-2。
圖 -1
圖 -2
但是當咱們進行TCP/IP協議進行分析的時候,卻發現不知道該如何調整思路,由於這個TCP/IP協議特抽象了,光進行理論上的解說,想必你們都接受不了,理論上的東西很差理解也難以捉摸,怎樣才能用一種白話的形式進行TCP/IP協議的分析達到更好理解TCP/IP協議的目的呢,我就用我對TCP/IP協議的理解簡單的概述下,但願對這方面研究的朋友有點幫助。
就像不一樣國家的人之間進行交流時須要使用一種彼此都能理解的語言,網絡中的計算機要想相互進行「交流」,也必須選擇一種彼此都能聽得懂的「公用語言」,即咱們一般所說的網絡通訊協議。TCP/ IP 是應用最爲普遍的一種網絡通訊協議,不管在局域網、廣域網仍是Internet中 ,不管是Unix 系統、Windows 平臺,它都支持,能夠說TCP/ IP 協議是計算機世界的一個通用「語言」。 TCP/IP是一個協議族,並非單指TCP和IP,更不是指單一的TCP/IP,這點很重要,由於咱們在Internet協議(TCP/IP)屬性裏配置IP地址、子網掩碼、默認網關、DNS服務器的時候,總把它做爲一個單一的TCP/IP協議使用,而TCP、IP只是其中兩個基本協議而已。對於TCP/IP理解正確的應該是「用於計算機通訊的一個協議集,它包括TCP、IP、ARP、ICMP、UDP、RIP、FTP、SMTP等多種協議」。
咱們初步知道TCP/IP協議族是一組不一樣的協議構成的協議族,儘管一般稱該協議族爲TCP/IP,但是T C P和I P只是其中的兩種協議而已,這種觀點已經在上述中加以闡述了。下面咱們簡要的把OSI模型、TCP/IP模型、及其各協議之間的對應關係用表格描述下,由於從體系結構來看,TCP/IP是OSI 7層模型的簡化。如圖 -3。
從上面的表格中能夠看到這幾層模型中所對應的各類協議, 每一個協議在對應層中都有本身的功能與職責,從下面一個實例中,咱們經過QQ聊天的模式看TCP/IP模型對應的一些協議在實例中的具體應用。
用戶大姜和用戶風明的客戶端各開啓了qq,大姜想和風明聊天:
大姜在qq中輸入「你好,最近忙不忙!」點擊「發送」→到傳輸層進行udp頭部封裝,把數據分段在udp包頭中請求創建鏈接→到網絡層進行ip包頭封裝,分段編號,分紅數據包或報文→若大姜的ip地址和風明的在同一個網段則用網絡接口層arp解析出風明的mac地址,若大姜的ip地址與風明的不在同一個網段則用代理arp解析出路由器的mac地址→到數據鏈路層進行llc,mac頭部封裝fcs校驗,封裝成幀→對於再也不同一網段的客戶端經過路由選址選擇最佳路徑,通過路由器轉發到交換機到達風明的同一個網段內→經過傳輸介質傳到風明計算機的網卡→數據鏈路層能夠識別llc,mac頭部fcs校驗,解封裝,並檢測類型長度大於006h發給ip包→傳到網絡層,網絡層能夠識別ip包頭,解封裝並檢測到協議號爲17→發到傳輸層,傳輸層用udp並檢測到目標端口號是4000發到應用層→應用層用qq打開→b看到「你好,最近忙不忙!」, 經過上面一個QQ發送和接收消息的最簡單例子,你們應該可以很直觀的理解了TCP/IP以及OSI模型的工做過程。雖然看上去很亂,或許都沒有時間看完,但是TCP/IP協議確實不是一兩天研究或記住它的工做原理就能搞清楚的。
TCP/IP體系結構以TCP/IP協議族(TCP/IP protocol suite)中最具備表明性的兩個協議,即傳輸控制協議(Transmit ControlProtocol, TCP)和網際協議(Internet Protocol,IP)來命名TCP/IP (Transmission Control Protocol / Internet Protocol) 技術的核心是實現網絡的互聯,其關鍵的思想是在底層物理網絡與高層應用程序和用戶之間加入中間層次,屏蔽底層細節,向用戶提供通用一致的網絡服務。這句話看上去比較繞口,也比較抽象,光從字面理解殊不知所云。咱們先從TCP/IP協議中的TCP、IP協議簡單的看下在實際的工做中所處理的事情,TCP是一個面向鏈接的協議,不管哪一方向另外一方發送數據以前,都必須先在雙方之間創建一條鏈接,創建鏈接的過程就是三次握手的過程,三次握手的過程是比較著名的論述,下面咱們經過一個簡單的實例來看下,三次握手如何創建鏈接的。好比大姜問程程借幾本書,第一步:大姜說:「你好,我是大姜」,第二步:程程說:「你好,我是程程」,第三步:大姜說:「我找你借幾本書。」這樣經過問答就確認對方身份,創建了聯繫。
IP協議是用於傳輸IP數據報的協議,它實現的是不可靠無鏈接的數據報服務,它是TCP/IP協議族的核心,傳輸層上的數據信息和網絡層上的控制信息都以IP數據報的形式傳輸。
好比IP協議就像運貨的卡車,將一車車的貨物運向目的地。主要的貨物就是TCP或UDP分配給它的。須要特別指出的是IP提供不可靠、無鏈接的數據報傳送,也就是說IP僅提供最好的傳輸服務但不保證IP數據報能成功地到達目的地。也就是說,IP協議提供了一輛卡車,至於卡車中途會不會出現意外能不能到達目的地,不是IP協議所考慮的問題。看到這你會不會擔憂你的E-MAIL會不會送到朋友那,其實不用擔憂,保證數據正確到達目的地是TCP的工做。TCP的數據包是靠IP協議來傳輸的。但IP協議是隻管把數據送到出去,但不能保證IP數據報能成功地到達目的地,保證數據的可靠傳輸是靠TCP協議來完成的。當接收端收到來自發送端的信息時,接受端詳發送一條應答信息,意思是:「我已收到你的信息了」。
TCP/IP是INTERNET的基礎協議,也是一種電腦數據打包和尋址的標準方法。在數據傳送中,能夠形象地理解爲有兩個信封,TCP和IP就像是信封,要傳遞的信息被劃分紅若干段,每一段塞入一個TCP信封,並在該信封面上記錄有分段號的信息,再將TCP信封塞入IP大信封,發送上網。在接受端,一個TCP軟件包收集信封,抽出數據,按發送前的順序還原,並加以校驗,若發現差錯,TCP將會要求重發。所以,TCP/IP在INTERNET中幾乎能夠無差錯地傳送數據。IP和TCP這兩個協議的功能不盡相同,也能夠分開單獨使用,但它們是在同一時期做爲一個協議來設計的,而且在功能上也是互補的。只有二者的結合,才能保證 Internet 在複雜的環境下正常運行。凡是要鏈接到 Internet 的計算機,都必須同時安裝和使用這兩個協議,所以在實際中常把這兩個協議統稱做TCP/IP協議。在IP協議中定義的傳輸是單向的,也就是說發出去的貨物對方有沒有收到咱們是不知道的。就好像8毛錢一份的平信同樣。那對於重要的信件咱們要寄掛號信怎麼辦呢?TCP協議就是幫咱們寄「掛號信」的。TCP
協議提供了可靠的面向對象的數據流傳輸服務的規則和約定。簡單的說在TCP模式中,對方發一個數據包給你,你要發一個確認數據包給對方,經過這種確認來提供可靠性。
TCP協議被稱做一種端對端協議。這是由於它爲兩臺計算機之間的鏈接起了重要做用:當一臺計算機須要與另外一臺遠程計算機鏈接時,TCP協議會讓它們創建一個鏈接、發送和接收資料以及終止鏈接。若是但願能在 Internet 上進行交流和通訊,則每臺連上 Internet 的計算機都必須遵照IP協議。爲此使用 Internet 的每臺計算機都必須運行IP軟件,以便時刻準備發送或接收信息。IP協議對於網絡通訊有着重要的意義:網絡中的計算機經過安裝IP軟件,使許許多多的局域網絡構成了一個龐大而又嚴密的通訊系統。從而使 Internet 看起來好像是真實存在的,但實際上它是一種並不存在的虛擬網絡,只不過是利用IP協議把全世界上全部願意接入 Internet 的計算機局域網絡鏈接起來,使得它們彼此之間都可以通訊。IP協議已經規定了數據傳輸的主要內容。
限於篇幅的須要,先介紹這麼多有關TCP/IP協議的內容,本來用白話的形式加以概述,但是這個題目過於深奧,加上我對這個協議理解的不夠深入,因此只能在某些問題上仍是用術語表達,某些問題採用了白話的形式,至於TCP/IP工做的原理,及各層協議的應用這裏就不描述了,就關於TCP\IP中的TCP、IP協議就難以理清了,況且還有那麼多層的協議須要咱們應用和理解。因爲時間倉促,不免有錯誤之處,請讀者指正。