Android網絡編程(二):TCP/IP協議詳解

定義

TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)是指能夠在多個不同網絡間實現信息傳輸的協議簇。TCP/IP協議不僅僅指的是TCP 和IP兩個協議,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因爲在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱爲TCP/IP協議。

簡介

TCP/IP傳輸協議,即傳輸控制/網絡協議,也叫作網絡通訊協議。它是在網絡的使用中的最基本的通信協議。TCP/IP傳輸協議對互聯網中各部分進行通信的標準和方法進行了規定。並且,TCP/IP傳輸協議是保證網絡數據信息及時、完整傳輸的兩個重要的協議。TCP/IP傳輸協議是嚴格來說是一個四層的體系結構,應用層傳輸層網絡層數據鏈路層都包含其中。

TCP/IP協議是Internet最基本的協議,其中應用層的主要協議有Telnet、FTP、SMTP等,是用來接收來自傳輸層的數據或者按不同應用要求與方式將數據傳輸至傳輸層;傳輸層的主要協議有UDP、TCP,是使用者使用平臺和計算機信息網內部數據結合的通道,可以實現數據傳輸與數據共享;網絡層的主要協議有ICMP、IP、IGMP,主要負責網絡中數據包的傳送等;而網絡訪問層,也叫網路接口層或數據鏈路層,主要協議有ARP、RARP,主要功能是提供鏈路管理錯誤檢測、對不同通信媒介有關信息細節問題進行有效處理等。

TCP/IP模型與OSI模型各層的對照關係:
TCP/IP模型與OSI模型各層的對照關係
OSI七層模型
關於OSI模型可以參考Android網絡編程:網絡基礎知識

數據封裝

TCP/IP協議族按照層次由上到下,層層包裝。最上面的是應用層,這裏面有http,ftp,等等我們熟悉的協議。而第二層則是傳輸層,著名的TCP和UDP協議就在這個層次。第三層是網絡層,IP協議就在這裏,它負責對數據加上IP地址和其他的數據以確定傳輸的目標。第四層是數據鏈路層,這個層次爲待傳送的數據加入一個以太網協議頭,並進行CRC編碼,爲最後的數據傳輸做準備。
在這裏插入圖片描述

數據鏈路層

物理層負責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要做的事情。

IP所提供的服務大致可歸納爲兩類:

  • IP信息包的傳送。
  • IP信息包的分割與重組。
1.1、IP信息包傳送

IP是網絡之間信息傳送的協議,可將IP信息包從源設備(例如用戶的計算機)傳送到目的設備(例如某部門的www服務器)。爲了達到這樣的目的,IP必須依賴IP地址IP路由器兩種機制來實現。

1.1.1、IP地址

IP規定網絡上所有的設備都必須有一個獨一無二的IP地址,就好比是郵件上都必須註明收件人地址,郵遞員才能將郵件送到。同理,每個IP信息包都必須包含有目的設備的IP地址,信息包纔可以正確地送到目的地。同一設備不可以擁有多個IP地址,所有使用IP的網絡設備至少有一個唯一的IP地址。

1.1.2、IP路由

互聯網是由許多個網絡連接所形成的大型網絡。如果要在互聯網中傳送IP信息包,除了確保網絡上每個設備都有一個唯一的IP地址之外,網絡之間還必須有傳送的機制,才能將IP信息包通過一個個的網絡傳送到目的地。此種傳送機制稱爲IP路由。 [2]
各個網絡通過路由器相互連接。路由器的功能是爲IP信息包選擇傳送的路徑。換言之,必須依靠沿途各路由器的通力合作,才能將IP信息包送到目的地。在IP路由的過程中,由路由器負責選擇路徑,IP信息包則是被傳送的對象。

1.2、IP信息包的分割與重組

爲了能把一個IP報文放在不同的物理幀中,最大IP報文的長度就只能等於這條路徑上所有物理網絡的MTU的最小值。當數據報通過一個可以傳輸長度更大的幀的網絡時,把數據報的大小限制在互聯網上最小的MTU之下不經濟;如果數據報的長度超過互聯網中最小的MTU值的話,則當該數據報在穿越該子網時,就無法被封裝在一個幀中。

IP協議在發送IP報文時,一般選擇一個合適的初始長度。如果這個報文要經歷的中間物理網絡的MTU值比IP報文長度要小,則IP協議把這個報文的數據部分分割成若干個較小的數據片,組成較小的報文,然後放到物理幀中去發送。每個小的報文稱爲一個分段。分段的動作一般在路由器上進行。如果路由器從某個網絡接口收到了一個IP報文,要向另外一個網絡轉發,而該網絡的MTU比IP報文長度要小,那麼就要把該IP報文分成多個小IP分段後再分別發送。

重組是分段的逆過程,把若干個IP分段重新組合後還原爲原來的IP報文。在目的端收到一個IP報文時,可以根據其分段偏移和MF標誌位來判斷它是否是一個分段。如果MF位是0,並且分段偏移爲0,則表明這是一個完整的IP數據報。否則,如果分段偏移不爲0,或者MF標誌位爲1,則表明它是一個分段。這時目的地端需要實行分段重組。IP協議根據IP報文頭中的標識符字段的值來確定哪些分段屬於同一個原始報文,根據分段偏移來確定分段在原始報文中的位置。如果一個IP數據報的所有分段都正確地到達目的地,則把它重新組織成一個完整的報文後交給上層協議去處理。

1、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協議的工作與此相反,不做贅述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章