ftp用的是tcp还是udp_一文搞懂TCP和UDP的区别

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇。TCP/IP协议集包括了超文本传输协议(HTTP)、文本传输协议(FTP)、远程登录协议(Telnet)、internet协议(IP)、internet控制信息协议(IMCP)等,而今天要讲的传输控制协议(TCP)和用户数据报协议(UDP)正是运行在协议簇的传输层。

59145a454acca1ab9aeb1a44fcd34b88.png

一 TCP和UDP的区别

连接性

TCP是面向连接的协议,在收发数据前必须和对方建立可靠的连接,建立连接的3次握手、断开连接的4次挥手,为数据传输打下可靠基础;UDP是一个面向无连接的协议,数据传输前,源端和终端不建立连接,发送端尽可能快的将数据扔到网络上,接收端从消息队列中读取消息段。

可靠性

TCP提供可靠交付的服务,传输过程中采用许多方法保证在连接上提供可靠的传输服务,如编号与确认、流量控制、计时器等,确保数据无差错,不丢失,不重复且按序到达;UDP使用尽可能最大努力交付,但不保证可靠交付。

报文首部

TCP报文首部有20个字节,额外开销大;UDP报文首部只有8个字节,标题短,开销小。

1236edeb4b2e5827c8b937b4fb8ff8b2.png

f601d51e8765c1c34682d017918a6c3e.png

报文传输

TCP协议面向字节流,将应用层报文看成一串无结构的字节流,分解为多个TCP报文段传输后,在目的站重新装配;UDP协议面向报文,不拆分应用层报文,只保留报文边界,一次发送一个报文,接收方去除报文首部后,原封不动将报文交给上层应用。

吞吐量控制

TCP拥塞控制、流量控制、重传机制、滑动窗口等机制保证传输质量;UDP没有。

双工性

TCP只能点对点全双工通信;UDP支持一对一、一对多、多对一和多堆垛的交互通信。

二 TCP和UDP的编程步骤

ade1b10c3e40bbf23503f118f11bcc0e.png

949459a8ef54886e8878bbd836a4e05e.png

从上面TCP、UDP编程步骤可以看出,UDP 服务器端不需要调用监听(listen)和接收(accept)客户端连接,而客户端也不需要连接服务器端(connect)。UDP协议中,任何一方建立socket后,都可以用sendto发送数据、用recvfrom接收数据,不必关心对方是否存在,是否发送了数据。

三 TCP和UDP的使用场景

为了实现TCP网络通信的可靠性,增加校验和、序号标识、滑动窗口、确认应答、拥塞控制等复杂的机制,建立了繁琐的握手过程,增加了TCP对系统资源的消耗;TCP的重传机制、顺序控制机制等对数据传输有一定延时影响,降低了传输效率。TCP适合对传输效率要求低,但准确率要求高的应用场景,比如万维网(HTTP)、文件传输(FTP)、电子邮件(SMTP)等。

UDP是无连接的,不可靠传输,尽最大努力交付数据,协议简单、资源要求少、传输速度快、实时性高的特点,适用于对传输效率要求高,但准确率要求低的应用场景,比如域名转换(DNS)、远程文件服务器(NFS)等。

原文出自公众号:Java旅途
原文链接: https:// mp.weixin.qq.com/s/OzRW mHSK8Xy867lzpEUaVA
### 全面深入理解 TCP/IP 协议 #### 一、TCP/IP 协议概述 TCP/IP 是一种用于实现计算机之间通信的协议集,支持不同类型的网络设备之间的互连互通。该协议最初由美国国防部高级研究计划局 (ARPA) 开发,旨在创建一个可靠的分布式网络系统[^3]。 #### 二、TCP/IP 四层模型详解 TCP/IP 模型分为四个层次:应用层、传输层、网际层以及链路层。每一层都有特定的功能服务: - **应用层**:负责处理应用程序间的交互逻辑,常见的有 HTTP, FTP SMTP 等协议; - **传输层**:提供端到端的数据传送服务,主要包含两个子协议——面向连接的 TCP 及无连接的 UDP; - **网际层**:也称为 IP 层,负责路由选择包转发功能,确保数据能够跨越多个网络到达目标地址; - **链路层**:管理物理介质上的帧交换过程,涉及 MAC 地址寻址机制等[^2]。 #### 三、TCP 首部结构分析 TCP 报头包含了源端口、目的端口号、序列号等多个字段来保证可靠性的特性。具体来说, | 字段名称 | 含义 | |--------------|------------------------------------------------------------| | Source Port | 发送方使用的端口号 | | Destination Port | 接收方监听的服务端口号 | | Sequence Number | 当前字节流中的第一个字节编号 | | Acknowledgment Number | 下一个期望收到的数据位置 | | Data Offset | 表示头部长度 | | Reserved | 保留位 | | Flags | 控制标志(URG/ACK/PUSH/RST/SYN/FIN),用于指示特殊操作 | | Window | 告知对方窗口大小 | | Checksum | 对整个报文进行校验 | | Urgent Pointer | 如果设置了 URG,则此指针指向紧急数据的第一个字节 | 这些信息共同作用于建立稳定高效的会话连接并保障数据完整传递给上层应用[^1]。 #### 四、三次握手与四次挥手流程说明 为了建立起一条完整的双向通讯路径,在客户端发起请求之前需要经历所谓的 "三次握手" 过程;而在结束对话时则需执行 “四次挥手”。以下是具体的步骤描述: ##### 三次握手 1. 客户端向服务器发送带有 SYN 标志置为 1 的初始同步消息,并随机生成 ISN 序列号 X。 2. 服务器接收到后回复 ACK=Y+1 并附带自己的 ISN Y 给客户端确认已接收。 3. 最终客户再次回应 ACK=X+1 来完成整个初始化阶段。 ##### 四次挥手 当任意一方想要终止当前链接关系时, 1. 主动关闭方向发出 FIN 请求表示不再发送更多数据。 2. 被动关闭方返回 ACK 承认断开指令已被接受。 3. 若被动侧也有未完成的任务,则可继续发送剩余部分直至全部完成后同样提出FIN申请。 4. 主动关闭者最后给予肯定答复即完成了整个拆除动作。 以上就是关于TCP/IP协议较为详细的介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值