計算機網絡整理七

1TCP/IP模型 

 

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

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

 

 

 

2 網絡接口層 

物理層負責0、1 bit流與物理設備電壓高低、光的閃滅之間的互換。數據鏈路層負責將0、1序列劃分爲數據幀從一個節點傳輸到臨近的另一個節點,這些節點是通過MAC來唯一標識的(MAC,物理地址,一個主機會有一個MAC地址)。

 

  • 封裝成幀: 把網絡層數據報加頭和尾,封裝成幀,幀頭中包括源MAC地址和目的MAC地址。

  • 透明傳輸: 0bit填充轉義字符。

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

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

 

 

3網絡層 

 

1. IP協議

IP協議是TCP/IP協議的核心,所有的TCP,UDP,IMCP,IGMP的數據都以IP數據格式傳輸。要注意的是,IP不是可靠的協議,這是說,IP協議沒有提供一種數據未傳達以後的處理機制,這被認爲是上層協議:TCP或UDP要做的事情。

 

在數據鏈路層中我們一般通過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.0

 

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層以上的協議是可能做到安全的原因。

 

 

4ping 

 

ping可以說是ICMP的最著名的應用,是TCP/IP協議的一部分。利用“ping”命令可以檢查網絡是否連通,可以很好地幫助我們分析和判定網絡故障。

ping利用ICMP協議包來偵測另一個主機是否可達。原理是用類型碼爲0的ICMP發請求,收到請求的主機則用類型碼爲8的ICMP迴應。

ping程序用來計算間隔時間,並計算有多少個包被送達。用戶就可以判斷網絡大致的情況。我們可以看到, ping給出來了傳送的時間和TTL的數據。

 

 

 

5TCP/UDP 

 

TCP/UDP都是是傳輸層協議,但是兩者具有不同的特性,同時也具有不同的應用場景。

1. UDP(面向報文)

面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。因此,應用程序必須選擇合適大小的報文。若報文太長,則IP層需要分片,降低效率。若太短,會是IP太小。

2. TCP(面向字節流)

面向字節流的話,雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序看成是一連串的無結構的字節流。TCP有一個緩衝,當應用程序傳送的數據塊太長,TCP就可以把它劃分短一些再傳送。

 

 

6TCP連接的建立和終止 

 

1. 三次握手

TCP是面向連接的,無論哪一方向另一方發送數據之前,都必須先在雙方之間建立一條連接。在TCP/IP協議中,TCP協議提供可靠的連接服務,連接是通過三次握手進行初始化的。三次握手的目的是同步連接雙方的序列號和確認號並交換 TCP窗口大小信息。

第一次握手: 建立連接。客戶端發送連接請求報文段,將SYN位置爲1,Sequence Number 爲x;然後,客戶端進入SYN_SEND狀態,等待服務器的確認;

第二次握手: 服務器收到SYN報文段。服務器收到客戶端的SYN報文段,需要對這個SYN報文段進行確認,設置Acknowledgment Number 爲x+1(Sequence Number+1);同時,自己還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述所有信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;

第三次握手: 客戶端收到服務器的SYN+ACK報文段。然後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢以後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。

 

2.四次揮手

當客戶端和服務器通過三次握手建立了TCP連接以後,當數據傳送完畢,肯定是要斷開TCP連接的啊。那對於TCP的斷開連接,這裏就有了神祕的“四次分手”。

 

第一次分手: 主機1(可以是客戶端,也可以是服務器端),設置Sequence Number,向主機2發送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示主機1沒有數據要發送給主機2了;

第二次分手: 主機2收到了主機1發送的FIN報文段,向主機1回一個ACK報文段,Acknowledgment Number爲Sequence Number加1;主機1進入FIN_WAIT_2狀態;主機2告訴主機1,我“同意”你的關閉請求;

第三次分手: 主機2向主機1發送FIN報文段,請求關閉連接,同時主機2進入LAST_ACK狀態;

第四次分手: 主機1收到主機2發送的FIN報文段,向主機2發送ACK報文段,然後主機1進入TIME_WAIT狀態;主機2收到主機1的ACK報文段以後,就關閉連接;此時,主機1等待2MSL後依然沒有收到回覆,則證明Server端已正常關閉,那好,主機1也可以關閉連接了。

 

 

7TCP流量控制 

 

 

如果發送方把數據發送得過快,接收方可能會來不及接收,這就會造成數據的丟失。所謂流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收。

利用滑動窗口機制可以很方便地在TCP連接上實現對發送方的流量控制。

 

當發送方收到接受窗口 win = 0 時,這時發送方停止發送報文,並且同時開啓一個定時器,每隔一段時間就發個測試報文去詢問接收方,打聽是否可以繼續發送數據了,如果可以,接收方就告訴他此時接受窗口的大小;如果接受窗口大小還是爲0,則發送方再次刷新啓動定時器。

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