一.理解TCP和UDP
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常见的传输层协议,用于在计算机网络中提供可靠的数据传输。
1.TCP:
- 连接导向:TCP是一种面向连接的协议,通信双方在数据传输前需要先建立可靠的连接。
- 可靠性:TCP提供可靠的数据传输,通过使用序列号、确认应答、超时重传等机制来确保数据的完整性和可靠性。
- 流量控制与拥塞控制:TCP通过流量控制和拥塞控制来调节发送端的数据发送速率,以避免网络拥堵或丢包现象。
- 有序性:TCP保证数据按照发送顺序到达目标端,不会发生乱序问题。
- 面向字节流:TCP将数据视为连续的字节流进行传输,没有消息边界的概念。
TCP适用于对数据完整性和可靠性要求较高的应用场景,如文件传输、电子邮件、网页浏览等。
2.UDP:
- 无连接:UDP是一种无连接的协议,通信双方在数据传输时不需要先建立连接。
- 不可靠性:相比TCP,UDP不提供数据的可靠性保证,数据可能会丢失、乱序或重复。
- 无拥塞控制:UDP不对数据发送速率进行调节,因此可能会造成网络拥堵和丢包现象。
- 无序性:UDP没有保证数据按照发送顺序到达目标端的机制,数据可能会乱序到达。
- 面向报文:UDP将数据视为独立的报文进行传输,保留了消息的边界。
UDP适用于对实时性要求较高、数据丢失可容忍或应用自身提供可靠性机制的应用场景,如音频/视频流传输、在线游戏等。
需要根据具体应用需求选择使用TCP还是UDP。TCP提供可靠的有序数据传输,适合对数据完整性要求较高的场景;而UDP提供了更低的延迟和更高的实时性,适用于对实时性要求较高、数据丢失可容忍的场景。
TCP/IP协议栈
二.实现基于TCP的服务器端/客户端
1.TCP服务器端的默认函数调用顺序
2.TCP客户端的默认函数调用顺序