1.TCP协议
????????传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议通过建立连接、数据确认(编段号和确认号)和数据重传等机制,保证了数据的可靠性和顺序性。另外,TCP 还提供三次握手协议、拥塞控制机制,有助于流量控制、错误控制和拥塞控制,这使得TCP高度可靠。TCP适合传输对数据完整性和稳定性要求较高的数据。 常见协议有HTTP、HTTPS、FTP、SMTP。
1.1 功能
- 寻址/多路复用。TCP 端口决定了更高层的应用程序进程。较高层主要多路复用从各个进程接收的数据。此外,它在底层网络层协议的帮助下发送多路复用数据。
- 建立、管理和终止连接。不同网络上想要通信的设备必须遵循一组过程来设置它们之间的连接。通过这种连接,数据可以从一台设备传输到另一台设备。TCP 协议进一步管理已建立的连接。通信完成后,协议将终止此连接。
- 处理和包装数据。TCP 协议从更高层接收数据并将其打包到消息中,以进一步将其发送到目标 TCP 软件。驻留在接收端的软件解包数据并将其提供给目标计算机上的应用程序。
- 传输数据。打包的数据按照分层原则传输到其他设备上运行的 TCP 进程。
- 提供可靠性和传输质量服务。TCP 提供的服务允许应用程序将协议视为传输数据的可靠媒介。
- 提供流量控制和拥塞避免功能。该协议控制两个设备之间的数据流并处理拥塞。
1.2 特点
- 面向连接。TCP 要求在通信前先建立连接,并在通信结束后关闭连接。建立连接的方法是“三次握手”,关闭连接的方法是“四次挥手”,这种连接方式提供了可靠的通信机制,保证了数据传输的可靠性。
- 可靠传输。TCP 通过数据确认(编段号和确认号)和重传机制来保证数据传输的可靠性。当接收方收到数据包后,它会向发送方发送一个确认ACK信号。如果发送方在合理的往返时延(RTT,Round-Trip Time)内未收到确认信号,发送方会重传数据包。这种机制确保了数据无丢失、无重复和无损坏。
- 顺序控制。TCP 使用序列号对数据包进行标识,以便接收方按正确顺序重新组合数据流。TCP为了保证报文传输的可靠性,会给每个报文添加一个编段号,编段号保证了接收方按序接收组合数据。当接收方接收到数据包后,它会向发送方发送一个对应的确认号,告知发送发已收到这段报文。如果接收到的数据包序列号不正确,接收方将通知发送方重新发送数据包。
- 流量控制。TCP 使用滑动窗口机制进行流量控制。发送方窗口的大小决定了它可以同时发送的数据量,接收方窗口的大小决定了它可以同时接收的数据量。通过调整发送方的发送速率,以适应接收方的接收效率,防止接收方缓冲区(Receive Buffer)溢出,这种机制可以避免网络拥塞并确保通信的稳定性。
- 拥塞控制。TCP 通过拥塞控制机制来防止网络拥塞。当网络出现拥塞时,TCP会通过降低发送速率来减轻网络负担,从而缓解拥塞,保持整体网络的稳定性。它使用一系列算法(如慢启动、拥塞避免、快重传和快恢复)来动态地调整发送速率,以避免网络拥塞并确保通信质量。
- 点对点连接。每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。
- 面向字节流。TCP 是面向字节流的协议,不像UDP那样每个报文单独传输,而是在不保留报文边界的情况下以字节流的方式进行传输。发送方将数据划分为小的数据块,接收方接收到数据后再根据需要重组这些数据块。所谓字节流指的是以传输过程中流入进程和流出进程的字节序列,虽然传输过程中是一个一个数据报,但这只是为了方便传输,接收方接收到数据后会重新装配这些数据。? ?
- 全双工通信。TCP 支持全双工通信,允许双方在连接建立后可同时发送和接收数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)。
1.3 优缺点
优点:
- 面向连接,稳定性强、可靠性高、顺序性强;
- 流量控制和拥塞控制,避免接收方过载和网络拥塞;
缺点:
- 传输速度慢、效率低。TCP在传输数据之前,需要进行三次握手建立连接,传输完成后还要进行四次挥手断开连接,因此传输速度相对较慢。而且在传输过程中,还要考虑确认机制,重传机制和拥塞机制等,这都会消耗一定时间,使得传输效率略低,所以TCP不适合实时性要求高的场景;
- 只能点对点通信,不支持多播和广播;
- 占用系统资源高。传输过程中,TCP协议需要维护连接状态和传输控制信息,会消耗部分系统资源;
- 易被攻击。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击;
- 不适合大规模数据传输。TCP协议在传输大规模数据时,容易导致网络拥塞和数据丢失。
1.4 适用场景
????????适用于对数据传输可靠性要求较高的场景,如网页浏览、文件传输、收发邮件、远程登录、数据库访问等。
2.UDP协议
????????用户数据报协议(UDP,User Datagram Protocol)是 TCP/IP 模型传输层的无连接协议,提供面向事务的简单而不可靠信息传送服务。它只是一个包装器协议,便于给应用程序提供一种无需建立连接就可以发送封装的 IP 数据包的方法。它既不建立连接,也不检查目标计算机是否已准备好接收,只负责将数据发送给目标计算机,UDP能传输的数据报最大是64K(包含UDP首部)。所以UDP既不保证数据的传递(可能会丢包),也不重传丢失的数据包,相对不太可靠,但是,与TCP相比,它传输数据的速度更快,常用于传输音频、视频、多媒体数据流等数据,常用于音频和多媒体应用。常见协议有NTP、DHCP、TFTP、DNS。
2.1 特点
- 面向无连接。UDP 协议在通信之前不需要建立连接,也不需要维护连接(发送结束时没有连接可释放),数据报直接发送给目标主机,并且不会对数据报文进行任何拆分和拼接操作,从而降低了通信的延迟;
- 不可靠传输。UDP 协议不保证数据传输的可靠性、完整性和顺序性,也不提供重传机制,数据报在传输过程中可能会丢失、重复、乱序等,容易导致网络拥塞;
- 支持多播和广播。UDP协议不仅支持一对一的传输方式,还支持将数据报同时发送给多个主机,可以用于多播和广播。
- 面向报文。UDP 协议对应用程序传递给它的数据既不合并,也不拆分,而是保留这些报文的边界,将每条数据封装成独立的数据报进行传输,每个数据报都是独立的实体,不会进行拆分和重组。
- 快速高效。UDP 协议相对简单,头部开销小(仅8个字节),没有建立连接和维护连接的开销,UDP会尽最大努力去传输和接受数据,传输效率较高。
2.2 优缺点
优点:
- 传输速度快、实时性高。由于UPD无需建立连接,且不提供可靠性保证,所以UDP传输速度相对较快;
- 漏洞少,相对安全;
- 开销小。UDP不需要维护连接状态和数据确认,占用较少的网络资源。
缺点:
2.3 适用场景
????????由于UDP协议的简单性,开销相对较小,传输效率较高,所以常用于一些对数据传输的实时性要求较高,但对数据完整性要求不严格的应用场景。如实时通信(音频、视频会议/通话和实时游戏)、流媒体(音频、视频实时播放)、DNS解析、多播和广播。
3.TCP&UDP的区别
| TCP | UDP |
连接方式 | 面向连接 | 无连接 |
传输方式 | 面向字节流传输 | 面向报文传输 |
传输效率 | 速度相对略慢、效率略低 | 快速 |
传输可靠性 | 可靠传输 | 不可靠传输 |
连接数量 | 只能一对一通信 | 支持一对一、一对多、多对一和多对多交互通信 |
报文大小 | 首部最小20字节,最大60字节 | 首部开销小,仅8字节 |
数据顺序 | 保证有序 | 不保证有序 |
流量控制 | 有 | 无 |
拥塞控制 | 有 | 无 |