TCP和UDP

1.基本概念:

        TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是两种常见的网络通信协议,属于传输层协议,负责在网络设备之间传输数据。它们各有特点,适用于不同的应用场景。

2.TCP 特点:

  • 面向连接:在传输数据前,TCP必须建立连接(三次握手)。发送数据时,接收方必须确认收到,双方维持通信状态。
  • 可靠传输:TCP通过序列号、确认号、超时重传等机制保证数据的可靠性。丢失的数据会被重传,确保数据按顺序到达。
  • 流量控制:TCP使用流量控制机制,确保发送方不会向接收方发送超过其处理能力的数据量。
  • 拥塞控制:TCP会动态调整发送速率以避免网络拥塞。
  • 应用场景:适用于对数据传输可靠性要求高的场景,如网页浏览(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP)。

3.UDP 特点:

  • 无连接:UDP不建立连接,发送数据前不需要与接收方进行握手。数据报文直接发送到目标主机。
  • 不保证可靠性:UDP不提供确认机制,发送方发送数据后不关心接收方是否收到,数据可能会丢失或乱序。
  • 低开销、速度快:由于UDP没有TCP的连接建立、确认和重传机制,数据传输速度更快,适合实时性强的应用。
  • 应用场景:适用于对实时性要求高、数据丢失不会造成重大影响的场景,如视频流(如直播、视频会议)、在线游戏、DNS查询等。

4.TCP和UDP的区别:   

        (1).连接方式

        TCP:面向连接。在传输数据之前,TCP需要通过三次握手建立连接,保证双方之间有稳定的通信通道。数据传输完成后,还需要四次挥手来关闭连接。

        UDP:无连接。UDP不需要建立连接,发送数据时不与接收方事先协商,数据直接发送。

        (2).可靠性:

        TCP:可靠的协议。它提供错误检查、数据重传、数据包排序和流量控制机制,确保数据不会丢失且按照正确的顺序到达。

        UDP:不可靠的协议。它不保证数据包能否成功到达,也不保证数据包的顺序。数据可能丢失、重复或到达顺序不对。

        (3).数据传输方式:

        TCP:面向字节流的传输。数据以字节流的方式发送,传输过程中数据是连续的,TCP会将数据分割为小块传输。

        UDP:面向数据报的传输。UDP以独立的报文(Datagram)的形式传输数据,每个数据报是独立的单元。

        (4).数据传输效率:

        TCP:由于需要建立连接、维护连接状态、数据确认和重传机制,TCP的数据传输效率相对低,但可靠性高。

        UDP:由于无需建立连接、没有确认机制,UDP的数据传输效率高,适合实时性要求高的应用,但可靠性低。

        (4).流量控制和拥塞控制

        TCP:具有流量控制和拥塞控制机制,确保不会因为网络拥塞导致数据丢失,并根据网络状况动态调整传输速率。

        UDP:没有流量控制和拥塞控制。发送方以自己的速度发送数据,接收方必须自己处理接收到的数据,不会进行速率调整。

        (5).适用场景:

        TCP:适用于对数据完整性、可靠性要求较高的场景,如文件传输、网页浏览、邮件传输等。

        UDP:适用于实时性要求高,且对数据丢失容忍度较高的场景,如视频流、语音通话、在线游戏、DNS查询等。

5.TCP请求携带什么可以保证可靠性:

        (1).三次握手(Three-Way Handshake):TCP在发送数据之前通过三次握手建立连接,确保发送方和接收方都准备好通信,并且交换了初始的序列号。这个过程确保了连接的可靠性,并确认双方的通信能力。

        (2).序列号:用序列号标识每一个发送的数据段,保证数据能够按照正确的顺序到达接收方。

        (3).确认号:每个数据包发送后,接收方会返回一个确认号(ACK),告知发送方已接收到的数据字节

        (4).校验和:用于检查数据在传输过程中是否出现错误或损坏。

        (5).窗口大小:用于控制发送方发送数据的速度,接收方会根据自己的处理能力和网络状况动态地调整窗口大小,以保证数据能够及时传输。

        (6).重传机制:TCP使用超时重传机制来保证数据可靠传输。如果发送方在设定的时间内没有收到接收方的确认(ACK),则会重新发送该数据包。这确保了丢失的包可以重新发送并最终被接收。

        (7).四次挥手(Four-Way Handshake):TCP通过四次挥手来优雅地关闭连接,确保双方都确认数据传输已经结束,避免数据丢失或连接中断。

6.TCP粘包问题怎么解决:        

        (1).设置消息边界:在发送数据时,在消息末尾加上特殊字符或特殊标记作为消息边界。

        (2).固定长度协议:定义固定长度的数据包。每个消息的长度都是固定的,接收方每次按照规定的长度读取数据。例如,规定每个消息的长度为512字节,则接收方每次读取512字节,按次处理。

        (3).在消息头部添加长度字段:在每个数据包的头部添加一个长度字段,明确表示后续数据的长度。接收方在读取时,首先读取头部长度字段,依据长度字段读取对应长度的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值