TCP和UDP面试经常被问到,一些初学者也经常问我这种问题,由于TCP协议和UDP协议是基于三次“对话”,解释起来很费劲,所以在这里详细的描述一下自己对TCP协议和UDP协议的理解,如有不妥之处,望指正。
首先是TCP,全称Transmission control protocol,是基于连接的协议,也就是说,这个协议的前提条件就是必须建立稳定的联系才能走协议方法。一个TCP协议必须经过三次对话建立,其中的过程比较复杂,基于本人也是做的前端开发的程序员,所以就简单的打个比方:
Long long ago,服务器A想给服务器B发送一个avi文件,然后通过QQ小窗口抖动联系服务器B,“嗨,我这里有份avi文件,你要不要?”;
PS:这是第一次对话,服务器A给服务器B发送请求数据包。
服务器B回复:“好啊,好啊,你什么时候发,我的大刀已经饥渴难耐了”;
PS:这是第二次对话,服务器B同意连接请求,要求同步。
服务器A回复:“我现在就给你发,你收好,嘿嘿”;
PS:这是第三次对话,服务器A确认同步并发出数据包。
经过这三次“对话”,服务器A才可以和服务器B发送数据。
据悉,现在的主流的聊天软件都是用的TCP协议
接下来是UDP,全称User Data protocol,是于TCP协议相对应的协议,UDP是面向非连接的协议,它不与对方建立连接,而是直接把数据包发送过去,UDP使用于一次只传送少量数据、对可靠性要求不高的应用环境,没有建立连接的过程,所以通信效果高,但也正因为如此,它的可靠性不如TCP协议高。
TCP协议和UDP协议的区别:
1、TCP协议是面向连接的协议,UDP是面向非连接的协议
2、TCP要比UDP更可靠、更安全
3、在传输大量数据的时候一般用TCP,小数据传输用的是UDP
4、UDP要比TCP要快。
一个深圳的可爱小朋友,问我这样的一个问题“FTP、TCP和UDP有什么联系?”。我只想说,FTP是文本传输协议,剩下的自己理解吧。
浅知拙见,如有纰漏瑕疵,欢迎指针。