TCP与UDP

问题来源

今天学习尚硅谷关于网络的视频的时候,并且发现现在很多网络编程基于TCP/UDP协议,在面试的时候也会被问题。所以,理解TCP/UDP协议,并且弄清楚它的使用场景是有意义的一件事情。

TCP协议的定义

TCP协议,全中文名为传输控制协议,它和UDP协议都属于TCP/IP协议簇,http就是基于TCP/IP协议的,且TCP/UDP协议都运行在数据的传输层

UDP协议的定义

UDP协议,用户数据报协议

区别

连接性

TCP是面向连接的协议,收发数据前必须和对方建立可靠的连接,数据传输前建立连接的3次握手、数据传输后断开连接的4次挥手【这可以在后面做深入研究,代码层面】,为数据传输打下可靠基础,其会监听端口;

UDP是面向无连接的协议,数据传输前,源端和终端不建立连接,发送端尽可能快的将数据扔到网络上,接收端从队列中读取消息段。

可靠性

TCP提供了可靠交互的服务,传输过程中采用许多方法保证连接上提供可靠的传输服务,如编号确认、流量控制、计时器等,确保数据无差错,不丢失,不重复,且按序到达;

UDP提供尽可能最快的交付,但不保证可靠交付。

报文传输

TCP面向字节流,将应用层传过来的报文看成一串无结构的字节流,分解成多个TCP报文传输后,在目的站重新装配;

UDP协议面向报文,不拆分应用报文,只保留报文边界,一次发送一个报文,接收方除去报文头部后,原封不动将报文交给上层应用。

吞吐控制

TCP阻塞控制、流量控制、重传机制、滑动窗口等机制保证传输质量;

UDP没有

双工性

TCP只能点对点双工通信

UDP支持一对一、一对多、多对多交互通信

以下是TCP/UDP编程步骤

 

 

从TCP和UDP的编程步骤可以总结出以下:

UDP不需要调用监听(listen)和接收(accept)客户端连接,而客户端也不需要连接服务器端,UDP中任何一方只要建立socket就可以用sendto发送数据、用recvfrom接收数据,并不关心对方是否存在,是否发送了数据。

TCP/UDP的使用场景

 TCP:万维网(www)、文件传输(FTP)、电子邮件(SMTP)

 UDP:实时通信

PS:有一个问题,就是直播,用的是TCP还是UDP协议呢?查了一下资料,发现是使用基于TCP的框架包的,但是从原理来讲,好像UDP更加的适合

posted @ 2020-09-15 22:47  洛飞  阅读(260)  评论(0编辑  收藏  举报