1.TCP
-
粘包
TCP連接會啟用延遲傳送算法,在數據發送前緩存他們,短時間有多個數據發送,會緩沖到一起作一次發送,這樣可以減少IO消耗提高性能,一般在發送多條信息時需要處理粘包
同時,TCP如果發現丟包的話,會重新發送緩存里的對應信息- 多次發送之間間隔一個等待時間
- 關閉延遲傳送算法,每次send都不緩沖,直接發送
- 封包和拆包,在數據包發送前,在其前后放一些有特征的數據,收到數據的時候根據特征數據分割出各個數據包
可靠傳輸
每次發送數據包都帶有一個SYN序列號,每個包對方收到后要返回一個ACk應答包,會進行超時重傳,接收方會根據序列號來拼接數據流量控制
TCP頭里有window字段,為接收方還有多少緩沖區來接收數據,發送方就會根據接收放的處理能力來發送數據,避免接收方處理不過來慢啟動
當TCP開始在網絡中傳輸數據時,為了避免擁塞,不能夠一開始就發送大尺寸的數據包,只能從一個尺寸的包開始發送,在發送和數據被對方確認的過程中去計算對方的接收速度,來逐步增加每次發送的數據包量,直到達到一個閥值為止