上网就是一个信息不断交换的过程,关键在于怎么交换。而在IP分组的网络中,主机在传输数据前,不与目的主机预先建立特定的道路,这是一种不可靠的机制。就像两个小孩想要交换玩具,既不知道谁要给谁,又不知道怎么给。这种不可靠的信息传输方式既不能保证信息的按时到达,又不能保证安全性,甚至造成损坏,乱序和丢失。为了保证网络的可靠性,于是就出现了TCP和UDP两种协议。
在TCP/IP模型中,传输层位于网际层与应用层之间,网际层就像整个游乐场,而应用层就像每个要交换玩具的小孩。数据通信由应用层中的用户进程发起,并通过网际层设备,如路由器和交换机等,将数据报从发送端主机传输到接收端主机,而传输层则进一步实现进程与进程之间的通信,也就是有实际需求的孩子之间的连接。
UDP是一种无连接但实时性高的数据报协议,在数据发送前不需要提前建立连接,而是把重点放在数据报的传输服务上,可以更高效的传输数据,但可靠性无法保证。就像一个淘气的孩子想给另一个小孩玩具,但只是看了一下方向,认为对方能接到就扔了过去,这种发送方不管接收方的行为虽然不稳定,但胜在速度快,所以适用于发送小尺寸的数据或者无需给出应答的网络,如广播,即时通信软件和音视频流媒体。
而TCP是一种面向协议的,具有流量控制和可靠传输等功能的传输层协议,TCP协议规定,用户进程在数据开始传输前,必须通过三次握手建立TCP连接,并在数据传输结束后释放TCP连接,同时通过使用自动重传请求的滑动窗口机制,提供流量控制和可靠传输功能。这种方式能保证数据无丢失,无误,无失序,无重到达。就像一个特别谨慎的孩子,他先找到接收玩具的孩子,与对方相识相知,然后把玩具送到对方手上,并反复确认你是不是已经拿到了,拿好了没有,拿好了我可就要松手了。这种谨慎的方式虽然速度不快,但可以适用于对传输质量要求较高,需要传输可靠数据以及传输大量数据的通信场景,比如通信软件的账户登录和支付相关功能。