1. 程式人生 > >學習python課程第二十八天

學習python課程第二十八天

 一.  什麼是粘包現象 :

 

  須知: 只有TCP有粘包現象,UDP永遠不會粘包. 這是socket收發訊息的原理導致的.

 

  

 

  對於TCP協議傳送端可以是一K一K地傳送資料,而接收端的應用程式可以兩K兩K地提走資料,當然也有可能

  一次提走3K或6K資料,或者一次只提走幾個位元組的資料,也就是說,應用程式所看到的資料是一個整體,或

  說是一個流(stream),一條訊息有多少位元組對應用程式是不可見的,因此TCP協議是面向流的協議,這也是

  容易出現粘包問題的原因。

  UDP是面向訊息的協議,每個UDP段都是一條訊息,應用程式必須以訊息為單位提取資料,不能一次提取任

  意位元組的資料,這一點和TCP是很不同的。怎樣定義訊息呢?可以認為對方一次性write/send的資料為一個

  訊息,需要明白的是當對方send一條資訊的時候,無論底層怎樣分段分片,TCP協議層會把構成整條訊息

  的資料段排序完成後才呈現在核心緩衝區。