你的位置:首页 > 操作系统

[操作系统]设计网络代码


 

协议本身是一个运和地在UDP之上定制协议,我之所以决定使用定制协议有许多原因。首先,当前这个任务看起来足够简单,因此与尝试改进一个现在协议相比,直接构建一个定制协议会更容易。其次,定制协议可以将开销减少到最小并尽可能地提高性能。最后,这本身就是一个很好的教学练习。

 

TCP是一个流协议,每次查看网页,检查邮件或者下载文件时使用的就是TCP协议。从本质上讲,TCP会在两个计算机之间建立了一个双向管道,并尽其所能地掩盖其底层网络的不可靠性和不确定性。

 

UDP会爆露很多不确定性。它使用一个校验和来确保不会传输一个被破坏了的数据,但它并不会做任何尝试来掩盖出现问题。如果一个路由器决定丢掉一个数据包,那么这个数据永远也不会被接收到。如果一个较早的数据包被延迟,以至于较晚到达,数据的接收就会乱序。

 

使用UDP的原因,这是因为UDP使用的资源更少,而且能的供更好的性能。本质上TCP是基于连接的,所以对于应用要通信的每一个远程设备都必须建立并维持连接,而如果计划支持大量此设备,开销就会非常大。另外,TCP还可能速度更慢,比如数据包丢包时。此时,TCP会尝试修复,但是恢复要花费时间。与之不同,UDP只是跳过丢包,继续发送后续的更新。如果你追求性能,而且能够应对丢失烽据,那么UDP是上 选。