1.UDP是面向无连接的,TCP是面向连接的。由于安全性、有序性、数据大小等因素的考虑,这两者在应用上各自有着各自的领域。而楼主所说的”创建虚拟链路“就是为了实现TCP的面相连接性(通过三次握手来实现)。这样就保证了通过TCP连接进行的通信的安全可靠有序性。而UDP不需要创建虚拟链路是因为它是面向无连接的
2.关于两者是怎样分别传输的,这个就整个过程来说就太大了,从传输层、网络层、物理链路层、物理层,这个在考研的时候理解是理解了但不好总结,其中个人感觉对于咱们开发来讲把传输层与应用层的主要协议弄明白了就行了,比如传输层的TCP、UDP通信(这个java封装的简直不能再简单了:整个套接字编程搞定完了!)然后就是HTTP协议,刚开始没必要大片大片的记忆协议的内容,可以边利用代码实现边学习,而且可以学习一下思科的关于网络基础的课程(电驴上有下!)然后用嗅探器分析几个数据包应该很快就能理解了。
3.TCP与UDP都是以传输层的报文格式交给下一层封装的。只不过两者的报文头(即封装从应用层交给的数据)大大不一样。TCP比UDP要复杂。TCP主要适合于可靠性更重要的场合,比如文件传输FTP、超文本协议HTTP、远程登录TELNET等。而UDP的应用主要包括小文件传送协议(TFTP)、DNS、SNMP和实时协议(RTP)。身边的例子,像咱们写的QQ聊天,建立连接用的是TCP,因为要确保连接的可靠性,而传送数据(特别是语音聊天)可以使UDP发送数据包。 |