第2章:用電信號傳輸TCP/IP數據

1、協議棧的內部結構
由TCP、UDP、IP組成。其中,IP中包含ICMP和ARP協議。ICMP用於告知網絡包傳送過程中產生的錯誤及各種控制信息,ARP用於根據IP地址查詢相應的以太網MAC地址。

2、顯示套接字命令
netstat -ano
netstat:用於顯示套接字內容的命令。
-a:顯示通信、未通信所有狀態的套接字。
-n:顯示IP地址和端口號。
-o:顯示使用該套接字程序的PID。
備註:

  • 顯示多個IP地址是因爲安裝了多塊網卡,計算機本機顯示爲0.0.0.0,表示不綁定IP地址;通信對象顯示爲0.0.0.0表示還沒有開始通信,沒有綁定IP和端口號。此外,UDP協議的套接字不綁定對方IP和端口,因此爲*:*。
  • LISTENING表示等待對連接的狀態;ESTABLISHED表示完成連接並正在進行數據通信的狀態表。

3.什麼連接?
實際上就是通信交換控制信息,在套接字中記錄這些必要信息並準備收發數據的操作。

4.TCP頭部的控制位
URG:表示緊急指針字段有效。
ACK:acknowledge的縮寫,表示接收數據序號字段有效,一般表示數據已經被接收方收到。
PSH:表示通過flash操作發送的數據。
RST:表示強制斷開連接,用於異常中斷的情況。
SYN:發送方和接收方相互確認序列號,表示連接操作。
FIN:表示斷開連接·。

5.協議棧收發數據
一次將多少數據交給協議棧是由應用程序自己決定的,協議棧不能控制這一行爲。主要由兩個因素判斷:
(1)網絡包的數據長度。在緩衝區內等待長度差不多,這樣限定長度可以避免發送大量小包。
網絡包長度的兩個參數:MTU和MSS。
MTU:表示網絡包的最大長度,以太網中一般是1500字節,是包含頭部的總長度。
MSS:表示網絡包中所能容納的最大的數據長度,MTU減去頭部長度。
(2)時間。當發包頻率不高時,就無需等待長度達到限定,協議棧內有一個計時器,在限定時間內,如果不繼續發送數據,就直接將緩衝區的網絡包發送出去。
總結:時間優先還是數據長度優先?長度優先,網絡效率會高,但是會因爲等待填滿緩衝區而產生延遲,反之,依然有問題,所以這很矛盾,二者不可平衡,這就需要協議棧的開發者決定。

6.使用滑動窗口管理ACK
(1) 滑動窗口理解:滑動窗口就是在發送方發送數據,等待接收方接收數據返回響應ACK的時間過程中,繼續向接收方源源不斷的發包,節省時間。
(2)優點:節省時間
(3)缺點:由於接收方需要計算ACK號,組裝數據塊等返回給發送方,這些操作沒完成下一個包就到了,可能會導致緩存溢出,包就進不來了。
(4)解決辦法:接收方會告訴發送方自己最多接收多少數據,然後發送方根據這個值對數據發送操作進行判斷,最大數據量稱爲”窗口大小“(一般和緩衝區的大小一致)。

7.TCP/IP包 包含的信息
(1)MAC頭部(用於以太網協議):包含MAC地址
(2)IP頭部(用於IP協議):包含IP地址
解釋:IP頭部中包含要訪問服務器的IP地址,IP協議可以根據這一地址查找包的傳輸方向,從而找到下一個路由器的位置。接下來IP協議會委託以太網協議將包傳輸過去。IP協議會查找下一個路由器的以太網地址,並將地址寫入MAC頭部,這樣,以太網協議就知道要將這個包發送到哪個路由器上。重複經過路由器,最後到達目的地。
**疑問:**是怎麼判斷包向哪裏傳輸的呢,集線器就派上用場了,集線器會有一張表(用於以太網協議的表),可根據以太網頭部的目的信息查出相應的傳輸方向。

8.IP和以太網收發包操作流程
TCP委託給IP(委託過程就是TCP在數據塊的前面加上TCP頭部,然後整個傳遞給IP模塊),然後IP模塊添加IP頭部和MAC頭部信息,接下來,封裝好的包會被交給網絡硬件,此時收到的是0、1組成的數字信息,然後網絡硬件將數字信號轉換成電信號或者光信號,並通過光纖發出去,然後這些信號會到達集線器、路由器等轉發設備,再由轉發設備一步一步送達接收方。返回的響應路徑相反。
在這裏插入圖片描述
總結:
類比:TCP類似爲老闆,下發任務,IP爲領導,負責項目分配,其他爲工人,完成任務。
目的地址是TCP執行連接操作時從應用程序獲得的,IP不會自行判斷,即使應用程序指定錯了,IP模塊也只能照做,責任由應用程序承擔。

9.網絡重傳機制:
TCP連接在對方未確認之前,發過的包都會保存在緩衝區中,如果對方沒有迴應,那麼就重新發包專業術語”重傳網絡包“。如果發生網絡中斷或者服務器宕機,無論怎麼重傳都是無效的,此時TCP會嘗試幾次重傳無效後強制結束通信,並嚮應用程序報錯。

10.半雙工和全雙工:
全雙工:收發操作同時進行。
半雙工:同一時間只有發送數據或者接收數據的其中一個操作。

11.集線器的種類:
(1)中繼式集線器:信號可以擴散到整個網絡。
(2)交換式集線器:只會到達指定的設備。

12.TCP、IP爲什麼後來看成一個整體了?:
嚴格來說,TCP模塊和IP模塊負責各自的範圍,TCP模塊負責TCP頭部,IP模塊負責IP頭部。但是當TCP模塊接到包後,需要查詢IP頭部中接收方和發送方的IP地址來查找向相應的套接字,這就屬於越權了。如果避免越權,應該進行明確的劃分,但是這樣的話,IP和TCP模塊之間的交互過程成本很高,程序運行效率會下降。所以後來當作整體看待,更靈活。

以下爲注意內容:
(1)TCP連接ACK的等待是比較靈活的,做成了動態計算的效果,根據網絡包平均往返時間調整ACK的等待時間。解決了ACK相應慢,多餘重傳浪費資源的問題。
(2)通過ARP協議根據IP地址來查詢MAC地址。
(3)查詢MAC地址時需要ARP,MAC地址的寫法:00-80-C8-2D-82-EA或者00:80:C8:2D:82:EA

發佈了17 篇原創文章 · 獲贊 55 · 訪問量 4439
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章