在socket網(wǎng)絡(luò)程序中,TCP和UDP分別是面向連接和非面向連接的嗜逻。因此TCP的socket編程夺英,收發(fā)兩端(客戶端和服務(wù)器端)都要有成對的socket,因此狐赡,發(fā)送端為了將多個發(fā)往接收端的包撞鹉,更有效的發(fā)到對方,使用了優(yōu)化方法(Nagle算法)颖侄,將多次間隔較小鸟雏、數(shù)據(jù)量小的數(shù)據(jù),合并成一個大的數(shù)據(jù)塊览祖,然后進(jìn)行封包孝鹊。這樣,接收端穴墅,就難于分辨出來了惶室,必須提供科學(xué)的拆包機(jī)制。
對于UDP玄货,不會使用塊的合并優(yōu)化算法皇钞,這樣,實際上目前認(rèn)為松捉,是由于UDP支持的是一對多的模式夹界,所以接收端的skbuff(套接字緩沖區(qū))采用了鏈?zhǔn)浇Y(jié)構(gòu)來記錄每一個到達(dá)的UDP包,在每個UDP包中就有了消息頭(消息來源地址隘世,端口等信息)可柿,這樣,對于接收端來說丙者,就容易進(jìn)行區(qū)分處理了复斥。所以UDP不會出現(xiàn)粘包問題。
https://www.cnblogs.com/kex1n/p/6502002.html