TCP和UDP的区别

2019-12-15  本文已影响0人  就这些吗
TCP UDP
面向连接(一对一 双全工) 无连接(广播,可以一对一,也可以一对多)
保证数据的准确性 可能丢包
保证数据的顺序 不保证数据顺序
以流的形式传输 以数据包的形式传输

TCP是怎么保证可靠的数据传输的?

1.校验和 (简单来说就是可以通过这个值判断数据有没有出错)
2.
应答机制和序列号
(对每个数据包都进行了编号,收到都要应答)
3.超时重传(发送完数据包之后一段时间没收到应答,重新发送)
4.流量控制(防止发送太快,缓冲区不够导致丢包,可以告诉对面缓冲区大小,该发多大的包)
5.拥塞控制(慢开始,一开始传少量的数据看看网络情况,逐渐提高传输效率,如果传输出了问题,又会降低传输效率)

什么是流?什么是数据包?有什么不同?
tcp粘包问题
流:比如一次传输200KB,再来一次传输300KB ,可以只调用一次recvfrom函数就全部接受
数据包:发几次就要调用几次recvfrom函数

什么时候会发生粘包?
发送端发送的数据间隔较短,且数据量小
接收端处理缓冲区的速度小于接收的速度
怎么解决粘包?
在发送数据包的包头包含此次数据包大小的信息

上一篇 下一篇

猜你喜欢

热点阅读