网络编程学习系列二 TCP与UDP

网络编程学习系列二 TCP与UDP

 

目录:

 什么是TCP套接字?

 什么是UCP套接字?

 什么时候,怎么选择?

在上节讲到我们会创建一个网络套接字,一般的套接字分为TCP类型和UDP类型,究竟这两种套接字有什么不同呢,还有就是什么时候应该选择TCP套接字,什么时候应该选择UDP套接字呢。

一 什么是TCP套接字?

   从计算机网络书上我们可以学到TCP的特性,TCP是一种提供面向连接,可靠的,基于字节流的运输层通信协议,它利用诸如超时重传,拥塞控制,丢弃重复包等策略来保证TCP服务的可靠性。采用TCP类型的套接字要求在交换数据之前,需要在本地套接字和远端套接字建立连接(connect),等连接建立后双方的通信就可以开始了。因为双方已经建立连接,所以在会话中病不需要包含有关地址信息,双方的连接本身就包含着特点的源和目的地。

   利用TCP套接字进行通信时要注意一点,我们的应用程序并不会意识到报文的边界,因为套接字提供的是字节流服务,所以我们在接受对方的数据时,一次读取可能并不会返回对方发送的所有数据,这可能需要多次读取才能实现。在一般的实现中,会在报文格式的开始部门设置我们发送消息的长度,通过这个数字我们就可以了解还有多少数据没有接受到。

    还是举美眉和帅哥的例子,TCP套接字犹如帅哥主动打电话美眉,双方一旦建立连接后就可以不停的交谈,在交谈的过程中,美眉有那句话没有听清可以要求帅哥重复一次。美眉在开始就会听帅哥不停的唠叨,她不知道什么时候能够停止,除非帅哥一开始就告诉她:我只说一句话。当美眉听完这一句话后就可以不听了,因为我只听你一句话。

二 什么是UCP套接字?

   UDP是一种无连接的运输层协议,提供面向事务的简单的不可靠信息传送服务,也就是当报文发送后,发送方并不保证报文一定会让对方收到。利用UDP套接字进行通信时,每次双方需要在消息中添加对方的地址,这样消息就会按照地址进行传送。

   UDP套接字并不会像TCP套接字那样需要注意报文的边界,每个消息都是单独的个体,这个消息可能会丢失,也可能并不会按顺序接受。

   再拿美眉和帅哥的例子进行讲解吧,帅哥决定写信到对面的美眉,信上会表明对方的地址,他可能会写好几封信分别寄给对方,而美眉有可能有的信没有收到,更有可能收到的信并不是按照帅哥邮寄的顺序。

三 什么时候,怎么选择

   由于TCP套接字和UDP套接字之间存在很大的差异,我们在选择的时候需要评估一下自己到底想要什么样的服务?TCP套接字会在建立连接有消耗,但在建立连接后可以可靠地进行数据传输,所以它适合有大数据量和对信息准确性高的传输。而UCP套接字则会会以消息投递的方式进行,这样在选择时,我们在针对某些点击服务或是对准确性要求不高的服务时可以选择UDP套接字。

你可能感兴趣的:(网络编程学习系列二 TCP与UDP)