话说,UDP比TCP快吗?
相信就算不是八股文老手,也会下意识的脱口而出:"是"。
这要追问为什么,估计大家也能说出个大概。
但这也让人好奇,用UDP就一定比用TCP快吗?什么情况下用UDP会比用TCP慢?
我们今天就来聊下这个话题。
使用socket进行数据传输
作为一个程序员,假设我们需要在A电脑的进程发一段数据到B电脑的进程,我们一般会在代码里使用socket进行编程。
socket就像是一个电话或者邮箱(邮政的信箱)。当你想要发送消息的时候,拨通电话或者将信息塞到邮箱里,socket内核会自动完成将数据传给对方的这个过程。
基于socket我们可以选择使用TCP或UDP协议进行通信。
对于TCP这样的可靠性协议,每次消息发出后都能明确知道对方收没收到,就像打电话一样,只要"喂喂"两下就能知道对方有没有在听。
而UDP就像是给邮政的信箱寄信一样,你寄出去的信,根本就不知道对方有没有正常收到,丢了也是有可能的。
这让我想起了大概17年前,当时还没有现在这么发达的网购,想买一本《掌机迷》杂志,还得往信封里塞钱,然后一等就是一个月,好几次都怀疑信是不是丢了。我至今印象深刻,因为那是我和我哥攒了好久的钱。。。
回到socket编程的话题上。
创建socket的方式就像下面这样。
fd = socket(AF_INET, 具体协议,0);
注意上面的"具体协议",如果传入的是SOCK_STREAM