简述:
TCP/IP 的学习过程中不可避免两个协议TCP与UDP协议,同时也不可避免这句话“TCP面向连接,UDP面向无连接”,同样困扰了我好久,接下来说说我的理解。
详述:
假设服务器S给客户端C的回送数据(理解不一定对,谨慎参考)
首先UDP的数据报发送机制是只管发送,S只要知道C的IP,然后就开始发送数据,并且不需要确定发送过的数据是否被正确接收,而C只需要接收S发来的数据即可,不需要确定是否完整的接收到了S发送的所有的数据,如果需要完整性确认可以交给应用层。正式因为这种简单的无确认发送与无确认接收使得发送的UDP数据报中不需要其他复杂的认证字段,只需要IP与端口即可。我跟你通话,不管你听不听,反正我要说,我们之间没有建立一种平等的对话方式,我们之间是相对独立的个体,只要我知道我要给你说话,你就不得不听,至于认不认真听那是你的事,这里注意,我们之间是没有达成通话的共识的。而TCP在S发送数据之前需要与C进行协商,C你要不要和我通话,然后C会回应自己的想法,同时C和S会协商一种标识来标识彼此的身份,并且在实际发送数据实体的时候会携带这些协商好的标识,而所谓的连接其实就是这些标识所形成的一种宏观上联系,也就是所谓的面向连接。
总结:
UDP无连接,每个数据报相对独立,每一次数据报的发送都不需要关心上一个数据报的发送情况,有点单相思的意思。TCP则在发送之前双发协商,并产生一些标识,之后在发送数据报的时候携带这些标识,这些标识则形成了双方宏观上的一种联系,这些标识就是双方有连接的证明,而UDP是没有这些证明的。