首页 > 其他分享 >UDP协议和TCP协议

UDP协议和TCP协议

时间:2024-10-19 22:19:59浏览次数:10  
标签:协议 UDP ACK TCP 发送 数据包 连接

UDP协议:

        是一种无连接的、简单的传输层通信协议,它在IP协议(网络层)之上提供服务。

特点:

  1. 无连接:在数据传输前,发送方和接收方之间不需要建立连接,可以直接发送数据。

  2. 简单:UDP协议头只有8个字节,比TCP协议头简单,因此开销较小。

  3. 不保证可靠性:UDP不提供数据传输的可靠性保证,数据包可能会丢失、重复或乱序到达。

  4. 不进行拥塞控制:UDP不进行拥塞控制,即使网络条件不佳,也不会降低发送速率。

  5. 支持多播和广播:UDP支持发送数据到多个目的地,适用于多播和广播场景。

  6. 适用场景:由于UDP的简单性和低延迟,它适用于对实时性要求高的应用,如视频会议、在线游戏、实时视频流等。

  7. 端口号:UDP使用端口号来区分不同的服务或应用程序,每个UDP数据包都包含源端口和目的端口。

  8. 校验和:UDP提供可选的校验和功能,用于检测数据在传输过程中是否出现错误,但是否使用校验和由应用程序决定。

由于UDP不保证数据的可靠传输,因此在需要可靠传输的应用中,通常需要在应用层实现额外的机制来确保数据的完整性和顺序。例如,可以通过应用层的确认和重传机制来实现可靠性。 

TCP协议:

        是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP在IP协议(网络层)之上提供服务。

特点:

  1. 面向连接:在数据传输前,TCP需要在发送方和接收方之间建立一个连接,这个过程称为三次握手。

  2. 可靠性:TCP提供数据传输的可靠性保证,确保数据正确、完整地从源传输到目的地。

  3. 有序传输:TCP保证数据包按照发送顺序到达接收方。

  4. 拥塞控制:TCP通过滑动窗口机制和拥塞避免算法来控制数据的发送速率,以避免网络拥塞。

  5. 流量控制:TCP使用窗口大小来控制发送方的发送速率,以匹配接收方的处理能力。

  6. 数据校验:TCP对每个数据包进行校验和计算,以检测数据在传输过程中是否出现错误。

  7. 支持全双工通信:TCP允许数据在两个方向上同时传输,即全双工通信。

  8. 适用场景:由于TCP提供了可靠的数据传输,它适用于需要数据完整性和顺序的应用,如Web浏览、文件传输、电子邮件等。

  9. 端口号:TCP使用端口号来区分不同的服务或应用程序,每个TCP连接都包含一对端口号(源端口和目的端口)。

  10. 超时重传:如果TCP数据包在传输过程中丢失,TCP会进行超时重传。

  11. 数据分段:TCP将数据分割成较小的段进行传输,每个段都包含TCP头部和数据负载。

  12. 端到端通信:TCP提供端到端的通信,即数据直接从发送方的应用程序传输到接收方的应用程序。

  13. 状态管理:TCP维护一个复杂的状态机,用于管理连接的建立、数据传输和连接的终止。

由于TCP的这些特性,它通常用于那些对数据传输可靠性要求较高的应用场景。然而,TCP的这些特性也使得它的开销比UDP大,因此在对实时性要求高的应用中,UDP可能是更合适的选择。

UDP协议和TCP协议的区别:

  1. 连接性

    • TCP:面向连接的协议,数据传输前需要建立连接,通过三次握手过程。
    • UDP:无连接的协议,数据传输前不需要建立连接,直接发送数据。
  2. 可靠性

    • TCP:提供可靠的数据传输服务,确保数据包正确、完整地到达目的地。
    • UDP:不保证数据传输的可靠性,数据包可能会丢失、重复或乱序到达。
  3. 有序性

    • TCP:保证数据包按发送顺序到达。
    • UDP:不保证数据包的顺序,接收方可能需要自行处理乱序问题。
  4. 拥塞控制

    • TCP:具有拥塞控制机制,通过调整发送速率来避免网络拥塞。
    • UDP:不进行拥塞控制,发送速率由发送方决定。
  5. 流量控制

    • TCP:通过窗口大小机制进行流量控制,以匹配接收方的处理能力。
    • UDP:不进行流量控制。
  6. 数据校验

    • TCP:对每个数据包进行校验和计算,以检测数据在传输过程中的错误。
    • UDP:提供可选的校验和功能,但是否使用由应用程序决定。
  7. 数据传输方式

    • TCP:面向字节流的协议,数据被分割成多个段进行传输。
    • UDP:面向数据报的协议,每个数据报独立传输。
  8. 效率

    • TCP:由于需要建立连接、维护连接状态、进行错误检测和重传等,开销较大,效率相对较低。
    • UDP:协议头简单,开销小,效率相对较高。
  9. 适用场景

    • TCP:适用于需要可靠传输的应用,如Web浏览、文件传输、电子邮件等。
    • UDP:适用于对实时性要求高的应用,如视频会议、在线游戏、实时视频流等。
  10. 错误处理

    • TCP:如果数据包丢失,TCP会进行超时重传。
    • UDP:如果数据包丢失,通常由应用层处理,UDP本身不进行重传。
  11. 端口号

    • TCP 和 UDP:都使用端口号来区分不同的服务或应用程序。
  12. 状态管理

    • TCP:维护复杂的状态机,管理连接的建立、数据传输和连接的终止。
    • UDP:没有状态管理,每个数据报独立处理。

总的来说,TCP提供了一个可靠的、面向连接的通信服务,而UDP提供了一个简单、快速但不可靠的通信服务。选择哪种协议取决于应用程序的具体需求。

TCP协议的三次握手和四次挥手:

        TCP(传输控制协议)使用三次握手来建立一个连接,以及四次挥手来终止一个连接。这些过程确保了数据的可靠传输和连接的正确释放。

三次握手(建立连接)

  1. SYN(同步)

    • 客户端发送一个带有SYN(同步序列编号)标志位的TCP段到服务器,以初始化一个连接。这个SYN段还包含客户端的初始序列号(ISN),用于标识从客户端到服务器的数据流。
  2. SYN-ACK(同步-确认)

    • 服务器收到SYN段后,如果同意建立连接,则会发送一个SYN-ACK段作为响应。这个段包含服务器的初始序列号,并且对客户端的SYN段进行确认(ACK)。
  3. ACK(确认)

    • 客户端收到服务器的SYN-ACK段后,会发送一个ACK段作为最后的确认。这个ACK段对服务器的SYN段进行确认。

完成这三次握手后,TCP连接就成功建立了,数据可以开始在客户端和服务器之间传输。

四次挥手(终止连接)

  1. FIN(结束)

    • 当客户端决定关闭连接时,它发送一个带有FIN标志位的TCP段到服务器,表示客户端已经没有数据要发送了。
  2. ACK(确认)

    • 服务器收到FIN段后,发送一个ACK段作为响应,确认收到了客户端的FIN段。
  3. FIN(结束)

    • 服务器在发送完所有剩余数据后,也会发送一个带有FIN标志位的TCP段到客户端,表示服务器也没有数据要发送了。
  4. ACK(确认)

    • 客户端收到服务器的FIN段后,发送一个ACK段作为最后的确认。

完成这四次挥手后,TCP连接就被正确地终止了。需要注意的是,TCP连接是全双工的,因此每个方向的关闭都需要单独的FIN和ACK段。

为什么需要三次握手和四次挥手?

  • 三次握手

    • 确保双方的发送和接收能力都是正常的。
    • 防止失效的连接请求突然又传送到了服务器端,从而产生错误。
  • 四次挥手

    • 确保双方都能完全关闭连接,并且释放所有资源。
    • 因为TCP是全双工的,所以每个方向都需要单独关闭。

这些过程确保了TCP连接的可靠性和数据传输的完整性。

标签:协议,UDP,ACK,TCP,发送,数据包,连接
From: https://blog.csdn.net/jiaking_two/article/details/143085169

相关文章

  • 最高法--实际施工人未与发包人建立事实合同的,其不应受到发包人与总包之间仲裁协议的约
    198号指导性案例  (2018)湘06民特1号  中国工商银行股份有限公司岳阳分行与刘友良申请撤销仲裁裁决案裁判要点:实际施工人并非发包人与承包人签订的施工合同的当事人,亦未与发包人、承包人订立有效仲裁协议,不应受发包人与承包人的仲裁协议约束。实际施工人依据发包人与承包人......
  • USB协议详解第13讲(USB传输-控制传输及事务组成)
    1.前言前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,今天我们主要讲解控制传输三个阶段及事务组成。控制传输是一种特殊的传输方式,且传输过程相对复杂一些,但十分重要。当USB设备初次连接主机时,用控制传输......
  • USB协议详解第14讲(USB传输-同步传输及事务组成)
    1.前言前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,上一节我们讲了控制传输细节及事务组成,今天我们主要讲解同步传输及事务组成。同步传输用在数据量大、对实时性要求高的场合,例如音频设备、视频设备等,这......
  • Linux C语言TCP协议实战
    文章目录1.TCP简介2.搭建框图3.相关函数介绍3.1socket函数3.2bind函数3.3listen函数3.4accept函数3.5connect函数3.6send函数3.7recv函数3.8其他函数4.实战4.1一对一模型4.1.1server.c4.1.2client.c4.1.3终端结果4.2多进程模型4.2.1server.c4.2.2cl......
  • 【超详细】TCP协议
    TCP(TransmissionControlProtocol传输控制协议)传输层协议有连接可靠传输面向字节流为什么TCP是传输控制协议呢?我们以前所看到的write接口,都是把用户级缓冲区的数据拷贝到发送缓冲区中,然后数据就由TCP自主决定了,所以TCP是传输控制协议,控制了数据的传输那么TCP是如何控......
  • Get “https://registry-1.docker.io/v2/“: proxyconnect tcp: dial tcp: lookup pro
    docker通过代理配置上网无法pullanbox使用代理配置文件解决1.创建代理配置文件运行以下命令创建配置文件:sudomkdir-p/etc/systemd/system/docker.service.dsudotouch/etc/systemd/system/docker.service.d/http-proxy.conf2.编辑配置文件使用nano文本编辑器打......
  • udp协议进行传输
    一、单个用户的连接1.发送端importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;/*1:建立udp的socket服务2:将要发送的数据封装成数据包3:通过udp的socket服务,将数据包发送出4:关闭资源*/publicclassS......
  • tcp协议进行传输
    一、单个用户进行连接1.客户端importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importjava.util.Scanner;/*1:建立客户端的Socket服务,并明确要连接的服务器。2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该......
  • 一款能让产品兼容所有快充协议的快充取电芯片
    XSP06芯片简介XSP06是一款集成USBPowerDelivery(PD2.0/3.0)快充协议、QC2.0/3.0快充协议、华为FCP协议和三星AFC快充协议(兼容BC1.2)的USBType-C多功能取电芯片,支持从充电器/车充等电源上取电给产品供电应用场景 小家电、小型加热器智能家居、音响卷......
  • 从零开始精通RTSP之深入理解RTP协议
    一、RTP协议概述1.定义   RTP(RealTimeTransportProtocol)即实时传输协议,它是一种用于在IP网络上对多媒体数据进行实时传输的标准协议。在RTSP(RealTimeStreamingProtocol)的应用场景中,RTP起到了至关重要的作用,负责传输实际的音视频数据。2.协议结构   RTP头部......