關於TCP/IP必須要知道的10個問題(上)

文章推薦指數: 80 %
投票人數:10人

TCP/IP協定模型(Transmission Control Protocol/Internet Protocol), 包含了一系列構成互聯網基礎的網路通訊協定,是Internet的核心協議。

... TCP/IP協定族按照層次由上 ... 關於安森 服務與產品 新聞中心 成功案例 聯絡我們 線上服務 首頁 線上教育 關於TCP/IP必須要知道的10個問題(上) 上一篇 回列表 下一篇 關於TCP/IP必須要知道的10個問題(上) 一、TCP/IP模型TCP/IP協定模型(TransmissionControlProtocol/InternetProtocol),包含了一系列構成互聯網基礎的網路通訊協定,是Internet的核心協議。

基於TCP/IP的參考模型將協定分成四個層次,它們分別是鏈路層、網路層、傳輸層和應用層。

下圖表示TCP/IP模型與OSI模型各層的對照關係TCP/IP協定族按照層次由上到下,層層包裝。

最上面的是應用層,這裡面有http,ftp等等我們熟悉的協議。

而第二層則是傳輸層,著名的TCP和UDP協定就在這個層次。

第三層是網路層,IP協定就在這裡,它負責對資料加上IP位址和其他的資料以確定傳輸的目標。

第四層是資料連結層,這個層次為待傳送的資料加入一個乙太網協定頭,並進行CRC編碼,為最後的資料傳輸做準備。

上圖清楚地表示了TCP/IP協議中每個層的作用,而TCP/IP協議通信的過程其實就對應著資料入棧與出棧的過程。

入棧的過程,資料發送方每層不斷地封裝首部與尾部,添加一些傳輸的資訊,確保能傳輸到目的地。

出棧的過程,資料接收方每層不斷地拆除首部與尾部,得到最終傳輸的資料。

上圖以HTTP協議為例,具體說明。

二、資料連結層實體層負責0、1位元流與物理設備電壓高低、光的閃滅之間的互換。

資料連結層負責將0、1序列劃分為資料幀從一個節點傳輸到臨近的另一個節點,這些節點是通過MAC來唯一標識的(MAC,物理位址,一個主機會有一個MAC位址)。

封裝成幀:把網路層資料包加頭和尾,封裝成幀,幀頭中包括源MAC位址和目的MAC位址。

透明傳輸:零比特填充、轉義字元。

可靠傳輸:在出錯率很低的鏈路上很少用,但是無線鏈路WLAN會保證可靠傳輸。

差錯檢測(CRC):接收者檢測錯誤,如果發現差錯,丟棄該幀。

三、網路層1、IP協議IP協定是TCP/IP協定的核心,所有的TCP,UDP,IMCP,IGMP的資料都以IP資料格式傳輸。

要注意的是,IP不是可靠的協議,這是說,IP協定沒有提供一種資料未傳達以後的處理機制,這被認為是上層協議:TCP或UDP要做的事情。

1.1IP地址在資料連結層中我們一般通過MAC地址來識別不同的節點,而在IP層我們也要有一個類似的位址標識,這就是IP位址。

32位元IP位址分為網路位元和位址位元,這樣做可以減少路由器中路由表記錄的數目,有了網路位址,就可以限定擁有相同網路位址的終端都在同一個範圍內,那麼路由表只需要維護一條這個網路位址的方向,就可以找到相應的這些終端了。

A類IP地址:0.0.0.0~127.0.0.0B類IP地址:128.0.0.1~191.255.0.0C類IP地址:192.168.0.0~239.255.255.01.2IP協議頭這裡只介紹:八位的TTL欄位。

這個欄位規定該資料包在穿過多少個路由之後才會被拋棄。

某個IP資料包每穿過一個路由器,該資料包的TTL數值就會減少1,當該資料包的TTL成為零,它就會被自動拋棄。

這個欄位的最大值也就是255,也就是說一個協議包也就在路由器裡面穿行255次就會被拋棄了,根據系統的不同,這個數位也不一樣,一般是32或者是64。

2、ARP及RARP協議ARP是根據IP位址獲取MAC位址的一種協議。

ARP(位址解析)協定是一種解析協定,本來主機是完全不知道這個IP對應的是哪個主機的哪個介面,當主機要發送一個IP包的時候,會首先查一下自己的ARP快取記憶體(就是一個IP-MAC位址對應表緩存)。

如果查詢的IP-MAC值對不存在,那麼主機就向網路發送一個ARP協定廣播包,這個廣播包裡面就有待查詢的IP地址,而直接收到這份廣播的包的所有主機都會查詢自己的IP位址,如果收到廣播包的某一個主機發現自己符合條件,那麼就準備好一個包含自己的MAC位址的ARP包傳送給發送ARP廣播的主機。

而廣播主機拿到ARP包後會更新自己的ARP緩存(就是存放IP-MAC對應表的地方)。

發送廣播的主機就會用新的ARP緩存資料準備好資料連結層的的資料包發送工作。

RARP協議的工作與此相反,不做贅述。

3、ICMP協議IP協定並不是一個可靠的協定,它不保證資料被送達,那麼,自然的,保證資料送達的工作應該由其他的模組來完成。

其中一個重要的模組就是ICMP(網路控制報文)協定。

ICMP不是高層協定,而是IP層的協議。

當傳送IP資料包發生錯誤。

比如主機不可達,路由不可達等等,ICMP協定將會把錯誤資訊封包,然後傳送回給主機。

給主機一個處理錯誤的機會,這也就是為什麼說建立在IP層以上的協議是可能做到安全的原因。

四、pingping可以說是ICMP的最著名的應用,是TCP/IP協議的一部分。

利用“ping”命令可以檢查網路是否連通,可以很好地説明我們分析和判定網路故障。

例如:當我們某一個網站上不去的時候。

通常會ping一下這個網站。

ping會回顯出一些有用的資訊。

一般的資訊如下:ping這個單詞源自聲納定位,而這個程式的作用也確實如此,它利用ICMP協議包來偵測另一個主機是否可達。

原理是用類型碼為0的ICMP發請求,受到請求的主機則用類型碼為8的ICMP回應。

五、TracerouteTraceroute是用來偵測主機到目的主機之間所經路由情況的重要工具,也是最便利的工具。

Traceroute的原理是非常非常的有意思,它收到到目的主機的IP後,首先給目的主機發送一個TTL=1的UDP資料包,而經過的第一個路由器收到這個資料包以後,就自動把TTL減1,而TTL變為0以後,路由器就把這個包給拋棄了,並同時產生一個主機不可達的ICMP資料包給主機。

主機收到這個資料包以後再發一個TTL=2的UDP資料包給目的主機,然後刺激第二個路由器給主機發ICMP資料報。

如此往復直到到達目的主機。

這樣,traceroute就拿到了所有的路由器IP。

六、TCP/UDPTCP/UDP都是是傳輸層協議,但是兩者具有不同的特性,同時也具有不同的應用場景,下面以圖表的形式對比分析。

面向報文面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。

因此,應用程式必須選擇合適大小的報文。

若報文太長,則IP層需要分片,降低效率。

若太短,會是IP太小。

面向位元組流面向位元組流的話,雖然應用程式和TCP的交互是一次一個資料塊(大小不等),但TCP把應用程式看成是一連串的無結構的位元組流。

TCP有一個緩衝,當應用程式傳送的資料塊太長,TCP就可以把它劃分短一些再傳送。

關於擁塞控制,流量控制,是TCP的重點,後面講解。

TCP和UDP協議的一些應用什麼時候應該使用TCP?當對網路通訊品質有要求的時候,比如:整個資料要準確無誤的傳遞給對方,這往往用於一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸檔的協議,POP、SMTP等郵件傳輸的協定。

什麼時候應該使用UDP?當對網路通訊品質要求不高的時候,要求網路通訊速度能儘量的快,這時就可以使用UDP。



請為這篇文章評分?