”TCP連線“究竟是什麼意思?

洞拐洞拐發表於2017-09-23

我們經常聽到"建立TCP連線","伺服器的連線數量有限"等,但仔細一想,連線究竟是個什麼東西,是和電話一樣兩端連起一根線?似乎有點抽象不是麼?

1. 久違的分組交換網路

似乎這個概念只有在學校裡學計算機網路才能接觸到,但不過今天的話題其實和它離不開關係。我們知道最早的電話網路是以很容易理解的形式存在的,就是單純的一根線加兩端的裝置,裝置之間所溝通的所有資訊都通過一根特定的電纜來回傳輸,如下圖:

”TCP連線“究竟是什麼意思?

這樣的連線是我們特別好理解的,搭起兩邊的線,就是一個連線嘛!但是,我們討論的是計算機網路!(嚴肅臉),計算機網路中兩個裝置節點是如何通訊?

”TCP連線“究竟是什麼意思?

計算機網路採取分組交換技術,什麼意思呢?就是我有【一塊資料】要發給對方小蒼,那我會把這【一塊資料】分成N份【單位資料】,分別發出去,而每份【單位資料】走哪條路是不一定的,但是這些【單位資料】總要全部達到小蒼手裡,小蒼再根據【單位資料】裡記錄的序號拼接起來,組成完整的【一塊資料】。這就是分組的意思所在。

2. 協議和協議實現

上面不小心把TCP的大體實現給說了,實際上在具體的應用中,光有大體思路是不行的,還有很多細節問題,需要兩個裝置之間提前約定好協議,才能協同完成通訊。舉個例子:A向B發了10份【單位資料】,而B其實只收到9份【單位資料】,怎麼辦?

TCP協議大家都應該是知道的,但協議只是想法,真正起作用的是在路由節點和裝置節點上的協議軟體,是執行在裝置上的具體執行者,它根據協議指導,對具體資料進行控制和操作。這兒就不往下展開了。

認識到協議和協議軟體這一點非常重要,因為連線的限制恰恰就是受軟體在裝置中資源分配的影響的。

3. 連線的真面目

上面說的第一種電話網路,如果兩個裝置搭設了一條線,那麼兩個電話就一定確定對方線上,因為他倆獨享一條實時存在的線。但計算機網路的連線呢?

這裡不深究TCP,僅僅用來說明連線

向上面的圖一樣(圖裡不深究TCP,僅僅用來說明連線大體過程),其實他們倆並不能確保對方就是線上,只是通過幾番確認,認為對方一直會在。而如果確認了對方存在,那麼就會為以後的對話通訊分配記憶體、CPU處理時間等資源,每個裝置都會在本地去維持這麼一個狀態,來告訴自己是有一個連線的,這些裝置所花的資源和維護的狀態,就是連線。而整個網路是不會記錄有著一條連線的,所以說連線只是記錄在各個裝置的一個狀態資訊。

那麼,到現在我們知道了,連線其實並不是所謂的有一根電線連起兩個裝置,而是兩方確認了一下對方的存在後,自己在本地記錄的狀態。那麼下面可以討論一下以前迷惑重重的概念了。

4. 為什麼伺服器都有連線數量的限制?

這裡只做討論。我認為是有兩點:

  • 物理頻寬的限制,決定了一個時間段內發起連線的資料包不會超過某個數,造成了裝置的連結數量的限制。
  • 維持連線需要分配記憶體等資源,裝置的資源有限,決定了一定有個最大連線數的極限。

5. 待續

通過連線往外延伸的話題不少,先到此為止吧,有時間再補。

相關文章