TCP、UDP概念

菜鸟级理解,可能有误,参考即可

TCP相对于UDP最大的特点是面向连接、字节流和可靠传输

  使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。

TCP是双工的,即双方的数据的读写可以通过一个进行。完成数据交换之后,通信双方都必须断开连接释放资源。

  TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接协议UDP则非常适合于广播和多播。

  TCP模块发送出的TCP报文段的个数和应用程序执行的写操作次数之间没有固定的数量关系。

  当接收端收到一个或多个TCP报文段后,TCP模块将它们携带的应用程序数据按照TCP报文段的序号(见后文)依次放入TCP接收缓冲区中,并通知应用程

序读取数据。接收端应用程序读缓冲区的大小。因此,应用程序执行的读操作次数和TCP模块接收到的TCP报文段个数也没固定的数量关系。发送端执行的写操

作次数之间没有任何数量关系,这就是字节流的概念:应用程序对数据的发送和接收是没有边界限制的。UDP则不然, 发送端应用程序每执行一次写操作,UDP

模块就将其封装成一个UDP数据并发送之。接收端必须及时针对没执行一次写操作(通过recvfrom系统调用),否则就会丢包(这经常发生在较慢的服务器上了

=某某人说UDP比TCP更快,效率要好的原因)。并且,如果用户没有指定足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。

                                TCP字节流图

 

 

                                UDP数据报图

 

 

  总结:TCP传输是可靠的。首先,TCP协议采用发送应答机制,即发送端发送的每个TCP报文段都必须得到接收方的应答,才认为这个TCP报文段传输成功。

其次,TCP协议采用超时重转机制,发送端在发送出一个TCP报文段之后启动定时器,如果在定时时间内未收到应答,它将重新发该报文段。最后,因为TCP报

文段最终是以IP数据报发送的,而IP数据报到达接收端可能乱序。重复,所以TCP协议还会对接收到的TCP报文段重排、整理,再交付给应用层。UDP协议则和

IP协议一样,提供不可靠服务。它们都需要上层协议来处理数据确认和超时重转。

  

 

  

posted @ 2020-12-15 15:52  BK-rewrite  阅读(132)  评论(0)    收藏  举报