TCP和UDP

TCP 和 UDP 的区别 前言 UDP TCP TCP 的三次握手 TCP 四次挥手 累计确认 顺序问题和丢包问题 流量控制的问题 拥塞控制的问题 总结及面试问题 前言 前端的面试中经常问的 TCP 和 UDP 的区别,网上也有好多内容,比如 TCP 和 UDP 的区别 TCP 是面向连接的,UDP 是面向无连接的 UDP程序结构较简单 TCP 是面向字节流的,UDP 是基于... 阅读详情

TCP(传输控制协议)

1. 特点

• 面向连接:通信前需要建立连接,通信后需要释放连接。
• 可靠传输:通过确认机制、重传机制、流量控制和拥塞控制确保数据可靠传输。
• 有序传输:数据按发送顺序到达接收方。
• 面向字节流:将数据视为无结构的字节流,不保留消息边界。
• 适用场景:对可靠性要求高的应用,如 HTTP、FTP、SMTP 等。


2. TCP 三次握手(建立连接)

三次握手用于确保客户端和服务器双方都准备好通信。

过程:
  1. 第一次握手(SYN=1, seq=x)
    • 客户端向服务器发送 SYN 报文,请求建立连接,并随机生成一个初始序列号 x。
    • 客户端进入 SYN_SENT 状态。

  2. 第二次握手(SYN=1, ACK=1, seq=y, ack=x+1)
    • 服务器收到 SYN 报文后,向客户端发送 SYN+ACK 报文,确认客户端的请求,并随机生成一个初始序列号 y。
    • 服务器进入 SYN_RCVD 状态。

  3. 第三次握手(ACK=1, seq=x+1, ack=y+1)
    • 客户端收到 SYN+ACK 报文后,向服务器发送 ACK 报文,确认服务器的响应。
    • 双方进入 ESTABLISHED 状态,连接建立完成。

图示:
Client                            Server
  |                                 |
  |        SYN, seq=x               |
  | ----------------------------->  |
  |                                 |
  |      SYN+ACK, seq=y, ack=x+1    |
  | <-----------------------------  |
  |                                 |
  |        ACK, seq=x+1, ack=y+1    |
  | ----------------------------->  |
  |                                 |

3. TCP 四次挥手(释放连接)

四次挥手用于确保双方都同意关闭连接。

过程:
  1. 第一次挥手(FIN=1, seq=u)
    • 客户端向服务器发送 FIN 报文,请求关闭连接。
    • 客户端进入 FIN_WAIT_1 状态。

  2. 第二次挥手(ACK=1, seq=v, ack=u+1)
    • 服务器收到 FIN 报文后,向客户端发送 ACK 报文,确认客户端的关闭请求。
    • 服务器进入 CLOSE_WAIT 状态,客户端进入 FIN_WAIT_2 状态。

  3. 第三次挥手(FIN=1, seq=w, ack=u+1)
    • 服务器向客户端发送 FIN 报文,请求关闭连接。
    • 服务器进入 LAST_ACK 状态。

  4. 第四次挥手(ACK=1, seq=u+1, ack=w+1)
    • 客户端收到 FIN 报文后,向服务器发送 ACK 报文,确认服务器的关闭请求。
    • 客户端进入 TIME_WAIT 状态,等待 2MSL(最大报文段生存时间)后关闭连接。
    • 服务器收到 ACK 报文后,立即关闭连接。

图示:
Client                            Server
  |                                 |
  |        FIN, seq=u               |
  | ----------------------------->  |
  |                                 |
  |        ACK, seq=v, ack=u+1      |
  | <-----------------------------  |
  |                                 |
  |        FIN, seq=w, ack=u+1      |
  | <-----------------------------  |
  |                                 |
  |        ACK, seq=u+1, ack=w+1    |
  | ----------------------------->  |
  |                                 |

4. TCP 的优缺点

• 优点:可靠、有序、支持流量控制和拥塞控制。
• 缺点:建立和释放连接开销大,传输效率较低。


UDP(用户数据报协议)

1. 特点

• 无连接:通信前无需建立连接,直接发送数据。
• 不可靠传输:不保证数据可靠到达,不提供确认、重传、排序机制。
• 面向报文:保留消息边界,每次发送一个完整的报文。
• 高效传输:开销小,传输速度快。
• 适用场景:对实时性要求高、允许少量数据丢失的应用,如视频流、语音通话、DNS 等。


2. UDP 的优缺点

• 优点:传输效率高,延迟低,适合实时应用。
• 缺点:不可靠,不保证数据顺序和完整性。


TCP 和 UDP 的对比

特性TCPUDP
连接方式面向连接无连接
可靠性可靠传输不可靠传输
传输效率较低较高
数据顺序保证顺序不保证顺序
报文边界面向字节流面向报文
适用场景HTTP、FTP、SMTP 等视频流、语音通话、DNS 等

总结

• TCP:适合对可靠性要求高的应用,如文件传输、网页浏览等。
• UDP:适合对实时性要求高的应用,如视频流、在线游戏等。

TCP 和 UDP的区别 总结一下TCP和UDP的区别。 阅读详情

相关推荐

深度理解 UDP 和 TCP(图文详解)

UDP协议和TCP协议详解,包括格式、含义、TCP的十种机制(包括三次握手四次挥手)以及两者的区别

m0_52019666的博客 2866

TCP和UDP详解

本文是计算机网络的学习,详细讲解了TCP和UDP的工作原理、各自的特点,以及三次握手和四次挥手。之后的学习内容将持续更新!!!

qq15035899256的博客 2万+

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

废话不多讲,跟紧我,开启你的SpringCloud初体验 首先回顾微服务的基本组成: [图片 here] 生产者:提供服务 消费者:消费服务 服务注册/发现中心:服务注册,发现,监控 所以,首先明白springcloud微服务的架构基础:生产者(client),消费者(client),服务注册/发现中心(server)

叶巨岩的博客 8万+

TCP和UDP的区别

TCP TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。 UDP UDP 是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。 ...

想握住此生辽阔 3万+

半导体关键系统之RMS浅谈

这种系统还要求设备在设备上的配方发生变化时通知工厂主机,并需要与EAP(Equipment Automation Process)联结,旨在实时管控自动化系统所用配方与用户当初的设定是否匹配,从而使得自动化系统所用的配方更加趋于安全。例如,制药行业中的药品生产管理系统(GMP),它对药品的生产过程进行严格控制,包括原材料的采购、生产工艺流程、质量控制等方面。这些系统通常与企业的生产系统集成,能够对产品的配方进行精细化管理,包括配方的设计、试验、验证、生产等环节。

阿拉伯梳子的专栏 6155

记录:MCGS和正弦变频器通讯

触摸屏实现对变频器:启动、停止、频率设定、频率读取、电压读取、电流读取。通讯方式Modbus RTU。

m0_61837027的博客 1026

UDP和TCP协议

摘要:UDP和TCP是主要的传输层协议,具有显著差异。TCP通过三次握手建立可靠连接,采用确认应答、超时重传、滑动窗口等机制确保数据传输的可靠性,适合需要高可靠性的场景。UDP无连接、不可靠但高效,适合实时性要求高的应用。TCP面向字节流,支持全双工通信;UDP面向数据报。此外,TCP通过流量控制、拥塞控制等机制优化性能,而UDP需在应用层实现可靠性。异常情况下,TCP能自动处理连接中断,而UDP无此功能。理解这些差异有助于根据需求选择合适的协议。

aklnhg的博客 1675

Rockchip平台Android相机HAL3开发实战:从配置到调试全流程解析

本文深入解析了Rockchip平台Android相机HAL3的开发全流程。从理解AAL与PSL核心架构、解析关键配置文件(如camera3_profiles.xml和Tuning文件),到搭建编译环境、进行增量部署,并提供了系统日志分析、V4L2调试等高级问题排查技巧,为开发者提供了一套从配置到调试的实战指南。

docker7nomad的博客 844

TCP和UDP 总结

TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式 2.网络数据大多为短消息 3.拥有大量Client 4.对数据安全性无特殊要求 5...

在此立一个IT职业上的flag:https://github.com/Zeb-D/my-review 1万+

SerDes系列之 SSC扩频时钟技术

扩频时钟,又称展频(SSC-Spread Spectrum Clocking),当前PCIE、DDR、USB等几乎所有的高速接口都支持SSC的功能。电子工程师在日常的电气测试中经常与之接触,在电磁传导和辐射发射验证过程中,经常需要使用到芯片的SSC功能,它的物理表现形式,就是信号的比特率会在一个很小的范围内浮动,多见于周期性变化的时钟信号。

一只豌豆象的博客 3441

视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)

内核模块如何设置? 内核模块是可在运行时动态加载到内核或从内核卸载的代码块。以下是设置内核模块的步骤: 首先,编写内核模块代码。通常使用 C 语言编写,包含必要的头文件,如<linux/init.h>、<linux/module.h>等。在代码中,需要定义模块的初始化函数和清理函数。初始化函数在模块加载时被调用,用于进行模块的初始化工作,如注册设备、分配资源等。清理函数在模块卸载时被调用,用于释放资源、注销设备等。 例如: #include <li

大模型大数据攻城狮的专栏 2204

详解 TCP 和 UDP

本篇文章转载自公众号:网络技术平台 https://mp.weixin.qq.com/s/8iyxF1tT3JhyHKdyeF1uAg 目录 一、概述 二、初始传输层 2.1 TCP 2.2 UDP 2.3 TCP 和 UDP 的区别 三、端口号 3.1 标准端口号 3.2时序分配法 四、UDP 五、TCP 5.1 TCP特点 5.2 连接 5.3 序列号和确认应答 5.4 超时重发 5.5 连接管理 5.6 三次握手 5.7 四次挥手 5.8 单位段 5.9 ..

qq_41687938的博客 3897

华为面试手撕真题【判断是ipv4还是ipv6地址】

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。

MISAYAONE的博客 1万+

TCP 和 UDP

计算机网络的运输层非常类似于高速公路,高速公路负责把人或者物品从一端运送到另一端,而计算机网络的运输层则负责把报文从一端运输到另一端,这个端指的就是端系统。在计算机网络中,任意一个可以交换信息的介质都可以称为端系统,比如手机、网络媒体、电脑、运营商等。在运输层运输报文的过程中,会遵守一定的协议规范,比如一次传输的数据限制、选择什么样的运输协议等。运输层实现了让两个互不相关的主机进行逻辑通信的功能,看起来像是让两个主机相连一样。运输层协议是在端系统中实现的,而不是在路由器中实现的。

TMesh的博客 1290

lammps剪切模拟的三种实现方法

本文介绍了LAMMPS分子动力学模拟中三种剪切方法:fix deform全局盒子剪切、速度边界剪切和外力加载剪切。fix deform通过改变盒子形状实现均匀剪切,适合宏观力学参数计算;速度边界剪切通过固定边界原子施加速度模拟非均匀剪切,适合界面摩擦研究;外力加载剪切则通过施加恒定力研究材料屈服行为。文章详细说明了每种方法的适用场景、核心原理和关键命令,并强调应根据具体研究目标选择合适方法。这些方法为金属、聚合物等材料的剪切模拟提供了实用解决方案,可直接套用文中命令进行建模计算。

lammps_jiayou的博客 65

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议

TCP和UDP都是传输层协议,用于在网络上传输数据。它们都是在IP协议之上构建的协议,因此它们都需要IP地址和端口号来标识网络中的设备和应用程序。TCP和UDP是计算机网络中最常用的传输层协议。TCP是一种面向连接的协议,提供可靠的数据传输。UDP是一种无连接的协议,提供不可靠的数据传输。在Java中,可以使用Socket类和DatagramSocket类来实现TCP和UDP协议。TCP协议使用Socket类,UDP协议使用DatagramSocket类。

程序猿徐师兄的博客 1653

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TCP 和 UDP 的区别 TCP 和 UDP 详解

TCP 和 UDP 的区别 TCP 和 UDP 详解

anananajiushiwo的博客 1922

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

传输层的TCP和UDP

传输层的TCP和UDPTCP和UDP协议TCP报文段TCP的三次握手TCP的四次断开TCP的常用端口号及其功能UDP的常用端口号及其功能 TCP和UDP协议 TCP(Transmission Control Protocol)传输控制协议 UDP(User Datagram Protocol)用户数据报协议 TCP协议 ■TCP是面向连接的,可靠的进程到进程通信的协议 ■TCP提供全双工服务,即数据可在同一时间双向传输 TCP是面向连接的,可靠的进程到进程通信的协议,TCP提供全双工服务,即数据可在同一时间

IHBOS的博客 1217

udp和tcp的区别

在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)作为两种最基本的数据传输协议,各自扮演着不同的角色,共同支撑着互联网的多样性和复杂性。它们虽同根同源,却展现出截然不同的性格与特性,满足了不同场景下的数据传输需求。本文将深入探讨TCP与UDP之间的七大核心区别,以期为读者全面揭示这两种协议的本质与适用环境。

liveweb888的博客 908
上一篇: 基于go语言实现的聊天室
下一篇: cookie和session
Cxzzzzzzzzzz
博客等级 码龄4年 229粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值