TCP、UDP协议

TCP与UDP协议的区别

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常用的传输层协议,它们之间有以下几点区别:

1. 连接性:
   - TCP是面向连接的协议,通过三次握手建立连接,提供可靠的数据传输,保证数据的顺序和完整性。
   - UDP是无连接的协议,不需要建立连接,不保证数据的可靠性和顺序性,适合实时性要求高的数据传输。

2. 数据传输方式:
   - TCP使用流式传输,将数据分割成小块并按顺序传输,保证数据的完整性。
   - UDP使用数据报传输,每个数据包独立传输,没有顺序要求,适合一次性传输少量数据。

3. 可靠性:
   - TCP提供可靠的数据传输,通过确认机制、重传机制、拥塞控制等方式确保数据的可靠性。
   - UDP不提供数据传输的可靠性,数据包可能丢失或乱序,需要应用层自行处理。

4. 消耗:
   - TCP的可靠性和复杂性导致的额外开销会消耗更多的网络资源,适合对数据完整性要求高的应用。
   - UDP的简单性和高效性使其消耗更少的网络资源,适合实时性要求高、数据丢失可以容忍的应用。

总的来说,TCP适用于对数据完整性和顺序性要求高的场景,如文件传输、网页访问等;而UDP适用于实时性要求高、数据量小、丢失可以容忍的场景,如音视频传输、在线游戏等。选择使用哪种协议取决于具体应用的需求。
 

TCP协议

TCP协议的三次握手
在tcp三次握手建立连接时,双方是怎么知道已经完成三次握手了的?

在TCP三次握手过程中,双方通过不同的状态来确认已经完成了三次握手。以下是双方如何知道三次握手已经完成的过程:

1. 客户端发送SYN包:客户端向服务器端发送一个SYN包,表示请求建立连接,并进入SYN_SENT状态。

2. 服务器端发送SYN-ACK包:服务器端接收到客户端发送的SYN包后,会向客户端发送一个SYN-ACK包,表示同意建立连接,并进入SYN_RECV状态。

3. 客户端发送ACK包:客户端收到服务器端发送的SYN-ACK包后,会向服务器端发送一个ACK包,表示确认建立连接,并进入ESTABLISHED状态。

在这个过程中,当服务器端收到客户端发送的ACK包后,双方就确认完成了三次握手,可以开始进行数据传输。
 

TCP是怎么知道发送的是(请求建立连接消息,还是确认连接、关闭连接等)

通过TCP协议头部中的“状态控制码”来标识


序号-sequence number:编号:TCP数挺包时大,分段(10段:1,2,3,4,10)
确认号:ackmowledge number。表示我服务器期望收到你的下一个包的序号
状态控制码(code control flag):标志位信号灯1--亮   0--灭===表示数据包的类型
ACK·acknowledge:确认位。=1,表示这个消遮是一个确认消息
RST-RESET:重置。=1,表示这个消息释放连接。TCP连接出错误主机服务器瑞,断开连接。请重新建立连接。
SYN:synchronous:同步,=1,表示这个消息是:1.一个发起连接的消息+2确认接收连接消息
FIN-Final:终止。=1,表示发送报文结束了完毕了,程放这个连接。--TCP四次挥手

四次挥手过程

 

  • 第一次挥手: Client端发起挥手请求,向Server端发送标志位是FIN报文段,设置序列号seq,此时,Client端进入`FIN_WAIT_1`状态,这表示Client端没有数据要发送给Server端了,但仍可以接收数据。
  • 第二次挥手:Server端收到了Client端发送的FIN报文段,向Client端返回一个标志位是ACK的报文段,ack设为seq加1,Client端进入`FIN_WAIT_2`状态。这个过程表示Server端告诉Client端,我确认并同意你的关闭请求。
  • 第三次挥手: Server端向Client端发送标志位是FIN的报文段,请求关闭连接,同时Client端进入`LAST_ACK`状态。
  • 第四次挥手: Client端收到Server端发送的FIN报文段,向Server端发送标志位是ACK的报文段,然后Client端进入`TIME_WAIT`状态。Server端收到Client端的ACK报文段以后,就关闭连接。此时,Client端等待2MSL的时间后依然没有收到回复,则证明Server端已正常关闭,那好,Client端也可以关闭连接了。

 

参考文章:一文彻底搞懂 TCP三次握手、四次挥手过程及原理 - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/511626.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转ChatGPT:Kimi测评(科研写作)

一、写在前面 ChatGPT作为一款领先的语言模型,其强大的语言理解和生成能力,让无数用户惊叹不已。然而,使用的高门槛往往让国内普通用户望而却步。 最近,一款由月之暗面科技有限公司开发的智能助手——Kimi,很火爆哦。…

VMware-16.0配置虚拟机网络模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为什么要配置网络?二、配置步骤1.检查VMware服务2.进入配置页面3.添加网络模式1.Bridge2.NAT3.Host-only 4.DHCP租约5.静态IP 三、使用总结 前言…

wife_wife【web 攻防世界】

大佬的wp:WEB:Wife_wife-CSDN博客 知识点: prototype是new class 的一个属性,即__proto__指向new class 的prototype属性__proto__如果作为json代码解析的话会被当成键名处理,但是如果是在类中的话则会被当成子类的原型 如let o…

OpenCV 4.9基本绘图

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV使用通用内部函数对代码进行矢量化 下一篇:OpenCV系列文章目录(持续更新中......) ​目标 在本教程中,您将学习如何&am…

如何对Webpack进行优化

目录 1.优化-提取css代码 1.1. 插件 mini-css-extract-plugin 1.2. 步骤: 1.3. 注意 1.4. 好处 1.5. 练习 2. 优化-css代码提取后压缩 2.1. 问题引入 2.2. 解决 2.3. 步骤 3. Webpack打包less代码 3.1. 加载器 less-loader 3.2. 步骤 3.3. 注意&#xf…

【Redis 知识储备】应⽤数据分离架构 -- 分布系统的演进(2)

应⽤数据分离架构 随着系统的上线,我们不出意外地获得了成功。市场上出现了⼀批忠实于我们的⽤⼾,使得系统的访问量逐步上升,逐渐逼近了硬件资源的极限,同时团队也在此期间积累了对业务流程的⼀批经验。⾯对当前的性能压⼒&#x…

Android Studio学习8——点击事件

在xml代码中绑定 在java代码中绑定 弹出一个toast 随机,数组

基于Docker for Windows部署ChatGPT-Next-Web

基于Docker for Windows部署ChatGPT-Next-Web 项目地址安装Docker for Windows部署项目参数讲解参数示例 运行 项目地址 https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 安装Docker for Windows 官网地址:https://www.docker.com/ 下拉找到Download 选择W…

篮球竞赛预约平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)篮球馆,篮球赛,竞赛项目,赛事预约

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

数据库系统概论(超详解!!!) 第三节 关系数据库标准语言SQL(Ⅳ)

1.集合查询 集合操作的种类 并操作UNION 交操作INTERSECT 差操作EXCEPT 参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同 查询计算机科学系的学生及年龄不大于19岁的学生。SELECT *FROM StudentWHERE Sdept CSUNIONSELECT *FROM StudentWHERE Sage&l…

go之web框架gin

介绍 Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果您需要性能和良好的生产力,您一定会喜欢 Gin。 安装 go get -u github.com/gin-gonic/g…

SpringBoot | Spring Boot“整合Redis“

目录: 1. Redis 介绍2. Redis 下载安装3. Redis “服务开启”和“连接配置”4. Spring Boot整合Redis的“前期准备” :① 编写实体类② 编写Repository 接口③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) 作者简介…

Golang | Leetcode Golang题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; func longestPalindrome(s string) string {if s "" {return ""}start, end : 0, 0for i : 0; i < len(s); i {left1, right1 : expandAroundCenter(s, i, i)left2, right2 : expandAroundCenter(s, i, i 1)if ri…

使用fusesource的mqtt-client-1.7-uber.jar,mqtt发布消息出去,接收端看到的是中文乱码,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

安全架构设计理论与实践相关知识总结

一、安全架构概述 常见信息威胁介绍&#xff1a; 1. 信息泄露&#xff1a;信息被泄露或透露给某个非授权实体 2. 破坏信息完整性&#xff1a;数据被非授权地进行增删改查货破坏而受到损失 3. 拒绝服务&#xff1a;对信息会其他资源的合法访问被无条件的组织 4. 非法使用&#x…

Linux网络编程二(TCP图解三次握手及四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)

文章目录 1、TCP三次握手(1) 第一次握手(2) 第二次握手(3) 第三次握手 2、TCP四次挥手(1) 一次挥手(2) 二次挥手(3) 三次挥手(4) 四次挥手 3、TCP滑动窗口4、TCP状态时序图5、多进程并发服务器6、多线程并发服务器 1、TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协…

【单】Unity _RPG项目中的问题

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a; ⭐…

数字乡村创新之路:科技引领农村实现高质量发展

随着信息技术的快速发展&#xff0c;数字乡村建设已成为推动农村高质量发展的重要引擎。数字乡村通过科技创新&#xff0c;不仅改变了传统农业生产方式&#xff0c;也提升了乡村治理水平&#xff0c;为农民带来了更加便捷的生活。本文将从数字乡村的内涵、科技引领农村高质量发…

自贡市第一人民医院:超融合与 SKS 承载 HIS 等核心业务应用,加速国产化与云原生转型

自贡市第一人民医院始建于 1908 年&#xff0c;现已发展成为集医疗、科研、教学、预防、公共卫生应急处置为一体的三级甲等综合公立医院。医院建有“全国综合医院中医药工作示范单位”等 8 个国家级基地&#xff0c;建成高级卒中中心、胸痛中心等 6 个国家级中心。医院日门诊量…

57 npm run build 和 npm run serve 的差异

前言 npm run serve 和 npm run build 的差异 这里主要是从 vue-cli 的流程 来看一下 我们经常用到的这两个命令, 他到传递给 webpack 打包的时候, 的一个具体的差异, 大致是配置了那些东西? 经过了那些流程 ? vue-cli 的 vue-plugin 的加载 内置的 plugin 列表如下, 依次…