问题提出
SMTP是TCP,然而我之前想,POP3不是只有从本地代理“拉下来”嘛,会不会距离近一点,然后用UDP就会好一点呢?(我的想法是距离近,差错不容易出现),然而目前感觉这个距离未必是近,然后又想到了另外几个原因。
思考
DNS(UDP)
DNS是基于UDP协议实现的,原因有以下几个:
- DNS具有及时性(我访问网站一定是现在访问才会请求解析域名)
- DNS具有暂时性(我访问同一个网站一般DNS一次也就够了,以后就可以直接在本地的高速缓存中进行快速访问,因此不用建立连接)
- DNS具有小包性,用TCP20B的首部未免有些太浪费了。
SMTP(TCP)
针对于上面的几点,在SMTP中依次进行对比:
- SMTP具有延后性(邮件一般不要求瞬时访问,这是邮箱本身的性质决定的)
- SMTP具有持续性(邮件的传输不一定是一次传输就完事的,可能邮件附件很多,这时建立持久的连接会减少网络负载)
- SMTP具有大包性(邮件一般都比较大(可能有附件之类的))
总结
以上是DNS使用UDP的原因以及SMTP使用TCP的原因,那么实际上我之前提出的距离问题,在资料中并没有体现,不知道是不是这个距离对于差错的影响比较小。。。不过看来距离是不太影响这个UDP或者TCP的选择的,这个地方具体我也搞不太懂了,可能要看更深的资料才能解决,欢迎大家一起探讨。