UDP和TCP的选择

一直在思考一个我问题,http协议为什么用TCP而不用UDP。

1,一次http请求,ie发送请求->服务器处理ie的请求->ie接收到服务器的请求。

现在假设网络是连通的,不连通就讨论这个就没什么意义了。

TCP发送不成功就重传,这样的话如果不超时总能保证ie的请求被服务器接收,并且不会丢包保证传输无错误。

UDP发后不管,可能存在这样的情况,ie请求发送完了,服务器也接收到了,但是服务器接收到的信息存在缺失或者错误。

可想而知,如果发送给ie的信息有错误的话,ie解析的时候就会报错。

同样都是做完一件事情,基于TCP就没错误(保证成功),基于UDP就有可能存在错误。所以http还是用TCP的好,但不是说不能用UDP。而且UDP还有个劣势就是它的包体不能过大,过大就发送不了,如果你要发送大的文件就需要自己管理截包和组包,这个是比较麻烦的.(实际上一般UDP的包考虑掉必要的包头协议体,内容最好是不要超过1400字节)

但是UDP也有他的优势,就是速度(不需要三次握手,而且有发后不管的功能,是某些情况下异步通信的最好的模型)。

猜你喜欢

转载自javag.iteye.com/blog/225028