1.TCP
-
粘包
TCP連接會(huì)啟用延遲傳送算法尝江,在數(shù)據(jù)發(fā)送前緩存他們哑子,短時(shí)間有多個(gè)數(shù)據(jù)發(fā)送饶套,會(huì)緩沖到一起作一次發(fā)送岳枷,這樣可以減少IO消耗提高性能芒填,一般在發(fā)送多條信息時(shí)需要處理粘包
同時(shí)呜叫,TCP如果發(fā)現(xiàn)丟包的話,會(huì)重新發(fā)送緩存里的對(duì)應(yīng)信息- 多次發(fā)送之間間隔一個(gè)等待時(shí)間
- 關(guān)閉延遲傳送算法殿衰,每次send都不緩沖朱庆,直接發(fā)送
- 封包和拆包,在數(shù)據(jù)包發(fā)送前闷祥,在其前后放一些有特征的數(shù)據(jù)娱颊,收到數(shù)據(jù)的時(shí)候根據(jù)特征數(shù)據(jù)分割出各個(gè)數(shù)據(jù)包
可靠傳輸
每次發(fā)送數(shù)據(jù)包都帶有一個(gè)SYN序列號(hào),每個(gè)包對(duì)方收到后要返回一個(gè)ACk應(yīng)答包凯砍,會(huì)進(jìn)行超時(shí)重傳箱硕,接收方會(huì)根據(jù)序列號(hào)來(lái)拼接數(shù)據(jù)流量控制
TCP頭里有window字段,為接收方還有多少緩沖區(qū)來(lái)接收數(shù)據(jù)悟衩,發(fā)送方就會(huì)根據(jù)接收放的處理能力來(lái)發(fā)送數(shù)據(jù)剧罩,避免接收方處理不過(guò)來(lái)慢啟動(dòng)
當(dāng)TCP開(kāi)始在網(wǎng)絡(luò)中傳輸數(shù)據(jù)時(shí),為了避免擁塞局待,不能夠一開(kāi)始就發(fā)送大尺寸的數(shù)據(jù)包,只能從一個(gè)尺寸的包開(kāi)始發(fā)送菱属,在發(fā)送和數(shù)據(jù)被對(duì)方確認(rèn)的過(guò)程中去計(jì)算對(duì)方的接收速度钳榨,來(lái)逐步增加每次發(fā)送的數(shù)據(jù)包量,直到達(dá)到一個(gè)閥值為止