TCP、UDP、TCP与UDP的区别及联系

目录

TCP和UDP区别

1.连接

TCP 面向连接的,传输数据前先要建立连接。

UDP 是不需要连接,即刻传输数据。

2.交互个数

TCP 是一对一通信。

UDP 支持一对一、一对多、多对多的通信

3.可靠性

TCP 有重传机制、滑动窗口机制、流量控制、拥塞控制,数据可以可靠传输。

UDP 是尽最大努力交付,不保证可靠交付。

4.传输方式

TCP 是流式传输,面向字节流。

UDP 是一个包一个包的发送,面向报文。

5.适用场景

TCP适用于要可靠传输的场景,比如文件传输

UDP适用于对可靠性要求不高的实时应用,比如视频会议,直播等

怎么实现一个可靠的UDP传输

在应用层实现:

  1. 数据报文编号:为每个发送的数据报文分配一个唯一的序列号,能够有序传输。
  2. 确认机制:接收方收到数据报后,发送一个确认消息回给发送方,确认消息包含接收到的数据报的序列号。
  3. 超时重传:发送方在发送数据报后启动一个定时器。如果在定时器超时之前没有收到确认,就重传数据报。
  4. 滑动窗口:使用滑动窗口机制来控制数据的发送速率和重传机制。窗口大小可以根据网络条件动态调整。
  5. 流量控制:根据接收方的处理能力调整发送速率,防止接收方被大量数据淹没。
  6. 拥塞控制:监测网络拥塞情况,并相应地调整数据发送速率,以减少丢包和网络拥塞。
  7. 数据完整性校验
  8. 错误恢复

TCP详解

TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它是互联网协议套件的核心组成部分之一,与IP(互联网协议)共同工作,为应用程序提供可靠的端到端通信服务。以下是TCP协议的一些关键特性和概念:

面向连接:

TCP在数据传输之前需要建立一个连接,这通过三次握手过程完成。数据传输结束后,通过四次挥手过程释放连接。

可靠性:

TCP确保数据正确无误地从源传输到目的地。它通过序列号、确认应答(ACKs)、超时重传等机制来实现。

有序传输:

TCP为发送的数据分配序列号,接收方根据这些序列号按正确的顺序重新组装数据。

拥塞控制:

为了防止网络拥塞,TCP使用慢启动、拥塞避免、快重传和快恢复等算法来控制数据的发送速率。

流量控制:

TCP通过滑动窗口机制来控制发送方的数据流量,以适应接收方的处理能力。

最大报文段长度(MSS):

TCP在建立连接时协商MSS,即单个报文段中数据的最大长度,以优化传输效率。

校验和:

每个TCP报文段都包含一个校验和字段,用于检测数据在传输过程中是否出现错误。

多路复用:

一个TCP连接可以承载多个应用程序的数据流,这些数据流在接收方被正确地交付给相应的应用程序。

报文结构:

TCP报文段包括源端口号、目的端口号、序列号、确认号、数据偏移、控制位(如SYN、ACK、FIN等)、窗口大小、校验和、选项和填充以及数据载荷。

控制位:

TCP报文段中的控制位定义了不同的控制功能,如SYN(同步序列编号)、ACK(确认应答)、FIN(结束连接)等。

端口号:

端口号用于区分同一IP地址上的不同服务或进程,源端口和目的端口号共同确定了TCP连接。

TCP协议的这些特性使其成为现代网络通信中不可或缺的一部分,特别是在需要可靠数据传输的应用场景中,如Web浏览(HTTP)、文件传输(FTP)、邮件传输(SMTP)等。然而,TCP的这些特性也带来了一定的开销,因此在某些对实时性要求较高的应用中,可能会选择使用UDP(用户数据报协议)作为替代。

UDP详解

UDP(用户数据报协议,User Datagram Protocol)是一种无连接的传输层协议,它在IP网络中提供一种简单的方式来发送封装的IP数据报。与TCP不同,UDP不保证数据报的可靠传输,但它具有较低的开销和较高的效率。以下是UDP的一些关键特性:

无连接:

UDP不建立连接。它允许应用程序直接发送数据报到目的地,无需事先建立连接。

简单性:

UDP的报文结构相对简单,只包含最基本的头部信息,如源端口、目的端口、长度、校验和等。

不保证可靠性:

UDP不提供数据报的重新发送机制,如果数据报在传输过程中丢失或出错,UDP不会尝试恢复。

无序传输:

UDP不保证数据报的顺序到达。如果需要顺序,应用程序必须自行实现排序机制。

无拥塞控制:

UDP没有拥塞控制机制。即使网络拥塞,UDP应用仍然可以继续发送数据,这可能导致网络拥塞进一步加剧。

支持多播和广播:

UDP支持多播和广播传输,允许同时向多个目的地发送相同的数据报。

低延迟:

由于缺乏复杂的连接建立和拥塞控制机制,UDP通常提供较低的延迟。

校验和:

UDP提供了一个可选的校验和字段,用于检测数据报在传输过程中的错误。接收方可以验证校验和,以确定数据报是否损坏。

适用场景:

由于UDP的简单性和低延迟特性,它适用于那些可以容忍一定数据丢失,但需要快速传输的应用,如实时视频会议、在线游戏、DNS查询等。

端口号:

与TCP一样,UDP使用端口号来区分同一IP地址上的不同服务或进程。

报文结构:

UDP报文由头部和数据两部分组成。头部包括源端口、目的端口、长度和校验和。

UDP的这些特性使其成为一种灵活的传输层协议,适用于那些对实时性要求高但可以容忍一定数据丢失的应用。然而,开发者在使用UDP时需要自行实现必要的可靠性和顺序控制机制,以确保应用程序的正确性。

相关推荐
njnu@liyong1 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
kaixin_learn_qt_ing3 小时前
了解RPC
网络·网络协议·rpc
Hacker_LaoYi5 小时前
【漏洞分析】DDOS攻防分析(四)——TCP篇
网络·tcp/ip·ddos
爱吃水果蝙蝠汤5 小时前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
嵌入式大圣5 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp
loong_XL6 小时前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx
hkNaruto10 小时前
【P2P】【Go】采用go语言实现udp hole punching 打洞 传输速度测试 ping测试
golang·udp·p2p
从后端到QT11 小时前
boost asio 异步服务器
服务器·网络·tcp/ip
手心里的白日梦12 小时前
网络计算器的实现:TCP、守护进程、Json、序列化与反序列化
网络·tcp/ip·json
言成言成啊12 小时前
TCP与UDP的端口连通性
网络协议·tcp/ip·udp