TCP与UDP_三次握手_四次挥手

TCP vs UDP

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

TCP数据

在这里插入图片描述

具体可以通过Cisco Packet Tracer工具查看:

在这里插入图片描述

UDP数据

在这里插入图片描述

三次握手、四次挥手

为什么是3/4次?这牵扯到单工、双工通信的问题

TCP建立连接:表白
TCP释放连接:分手

TCP—建立连接—三次握手

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

解释:

  • 首先,启动服务器,让服务器进入监听状态(监听客户端的连接请求)。
  • 客户端向服务器发送同步连接请求:SYN=1;seq=x
    • SYN(同步标识位):将SYN设置为1,代表告诉服务器,我想跟你同步数据,也就是建立连接。
    • seq(序列号):还需要发送一个序列号seq=x给服务器。
  • 服务器给客户端返回接受同步连接请求:SYN=1;ACK=1;seq=y;ack=x+1
    • SYN(同步标识位):服务器返回SYN=1,代表告诉客户端,没问题,我可以和你同步。
    • ACK(确认标识位):ACK=1,代表确认同步,并且还给你发送了确认号。
    • ack=x+1:ack就是确认号;这个x就是客户端向服务器发送同步连接请求时发送的那个序列号。
    • seq=y:还需要发送一个序列号seq=y给客户端。
  • 客户端向服务器发送确认连接信息:ACK=1;seq=x+1;ack=y+1
    • ACK(确认标识位):ACK=1,代表确认同步,并且还给你发送了确认号。
    • ack=y+1:ack就是确认号;这个y就是服务器给客户端返回接受同步连接请求时返回的那个序列号。
    • seq=x+1:将序列号seq=x+1发送给服务器。

总结:

  • 客户端与服务器之间的每次“沟通”都会携带序列号(每一条消息都必须得有序列号)。
  • 序列号是不断增加的,可以用来标识这是自己发送出去的第几条信息。
  • 在建立连接时:确认号(ack)=对方发送的序列号(seq)+1
  • 当连接已经建立完毕,在传输数据时,确认号就不一定是对方发送的序列号+1了,确认号可以为其他值。

TCP三次握手—大白话

客户端给服务器发送一条消息:

  • 客户端知道自己的发送能力没问题
  • 但不知道自己的接收能力 以及 服务器的发送和接收能力有没有问题

服务器收到客户端发来的消息 并 给客户端发送一条消息:

  • 服务器知道自己的接收和发送能力没问题
  • 服务器知道客户端的发送能力没问题
  • 服务器不知道客户端的接收能力有没有问题

客户端接收到服务器发来的消息,再给服务器发送一条消息

  • 客户端知道自己的发送和接收能力都没问题
  • 知道服务器的接收和发送能力都没问题

此时客户端与服务器都知道了自己以及对方的发送和接收能力都没问题,那么就可以建立连接了。

TCP—释放连接—四次挥手

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

解释:

  • FIN(终止信号):FIN=1代表告诉对方,我想跟你断开连接。

总结:

  • 四次挥手释放连接时,客户端和服务器双方都需要向对方发送一次释放连接请求(双方都需要提出一次“分手”)并让对方确认。
  • 当然,第一次释放连接请求是由客户端向服务器发出的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML与CSS的初步解析及实践案例

目录 1,HTML概览与基本语法 基本结构: 头部标签: 常用标签与属性 CSS概述与基本语法 CSS选择器与属性 盒子模型与布局 实例展示 1,HTML概览与基本语法 HTML,即超文本标记语言,是网页的基础构建语言…

本地离线模型搭建指南-LLaMA-Factory训练框架及工具

搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

【面试】基本数据类型的包装类缓存

目录 1. 说明2. Integer类分析2.1 代码块2.2 字节码2.3 分析2.4 valueOf方法 1. 说明 1.在java中,基本数据类型的包装类(Integer、Byte、Character、Short、Long、Boolean)的某些值会被缓存。2.以提高性能并减少内存使用。3.这种缓存机制是自…

Rxjava2最全面的解析

说到区别,可能有的小伙伴会问,我没看过rxjava1。可以直接看rxjava2么。个人觉得不必要,因为 rxjava2.x 是按照 Reactive-Streams specification 规范完全的重写的,完全独立于 rxjava1.x 而存在,它改变了以往 rxjava1的…

如何看待鸿蒙HarmonyOS?

鸿蒙系统,自2019年8月9日诞生就一直处于舆论风口浪尖上的系统,从最开始的“套壳”OpenHarmony安卓的说法,到去年的不再兼容安卓的NEXT版本的技术预览版发布,对于鸿蒙到底是什么,以及鸿蒙的应用开发的讨论从来没停止过。…

物联网系统运维——移动电商服务器单点部署,web服务器部署,Nginx Web服务介绍,Nginx性能,部署,架构,及实验:安装并设置Nginx(重点)

一.web服务器介绍 Web服务器一般指网站服务器,是指驻留于因特网上提供某种特定类型计算机的程序,Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览,可以放置数据文件,让全世界下…

力扣SQL50 游戏玩法分析 IV 子查询

Problem: 550. 游戏玩法分析 IV 👨‍🏫 参考题解 这个SQL查询的目的是计算每个玩家在登录后的第二天参与活动的比例。查询使用了子查询和左连接来实现这一目的。下面是查询的详细解释,包括每个部分的作用和注释: -- 计算每个玩…

Leetcode 3192. Minimum Operations to Make Binary Array Elements Equal to One II

Leetcode 3192. Minimum Operations to Make Binary Array Elements Equal to One II 1. 解题思路2. 代码实现 题目链接:3192. Minimum Operations to Make Binary Array Elements Equal to One II 1. 解题思路 这一题的话就是一个动态规划,我们使用两…

【K8S运维】整理常见使用命令

*特别提醒: 文件复制类的命令,执行命令等需要谨慎确定命令执行后的效果,否则一旦出错就不可逆!!! 命令概览 序号使用场景命令格式使用样例命令使用说明1查询集群节点有多少kubectl get nodes2查询集群运行哪些podkub…

文华财经多空精准买卖点止损止盈数值主图指标公式源码

文华财经多空精准买卖点止损止盈数值主图指标公式源码&#xff1a; DD:EVERY(H>HV(H,20),1); KK:EVERY(L<LV(L,20),1); D:DD&&SUM(DD,BARSLAST(KK))1; K:KK&&SUM(KK,BARSLAST(DD))1; Y:1; DRAWCOLORKLINE(Y&&ISDOWN,COLORYELLOW,0); DRAW…

【原创】springboot+mysql海鲜商城设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Vue的Router?一个小demo秒了

效果展示 正文 登录页 <template><div><div class"login"><h3>图书管理系统</h3><div class"user"><span>账号&#xff1a;</span><input type"text" v-model"user" /></…

193.回溯算法:组合总和(力扣)

代码解决 class Solution { public:vector<int> res; // 当前组合的临时存储vector<vector<int>> result; // 存储所有符合条件的组合// 回溯函数void backtrcing(vector<int>& nums, int target, int flag, int index) {// 如果当前组合的和超过了…

C++:字符串string类使用

C字符串和C字符串的对比 (1)C语言严格说没有字符串的概念&#xff0c;C字符串其实就是字符数组或字符指针 (2)C和之后的java等都有字符串&#xff0c;本质是一个class (3)C字符串的优势是标准库自带可用于字符串的各种处理算法和方法 (4)C实际开发中建议使用C字符串而不是沿用…

高可用电商支付架构设计方案

高可用电商支付架构设计 在现代电商业务中&#xff0c;支付过程是其中至关重要的一环&#xff0c;一个高可用、安全稳定的支付架构不仅可以提高整个系统的可靠性和扩展性&#xff0c;降低维护成本&#xff0c;还可以优化用户体验&#xff0c;增加用户黏性。 本文将提出一种高…

121.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件读取与发送界面设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Vue 路由跳转时携带参数怎么写?(持续完善中...)

Vue前端中由A页面跳转至B页面&#xff0c;需要携带参数&#xff0c;应该怎么样实现呢&#xff1f; 一、参数为id A页面&#xff1a; // 点击跳转链接&#xff0c;并携带id至B页面 const toViewNewsDetail (value) > {const path /newsPublish/newsDetail;router.push({…

Kubernetes之Service详解

本文尝试从Service暴露服务方式、Service控制器实现原理、使用规范等方面对Kubernetes 中的Service进行详细介绍。 一、Kubernetes 中的pod有哪些暴露服务的方式 各种 Kubernetes 中暴露服务的方式都有其独特的优缺点&#xff0c;根据具体的使用场景和需求&#xff0c;选择合…

在Windows10中使用Vim

服务器没有图形界面&#xff0c;但是numpy包又需要调用图形界面接口&#xff0c;这样就导致了错误&#xff0c;搞得我只好先回windows开发。看来当年 Ubuntu桌面版也不算是多此一举啊。 这么多ide我还是喜欢vim&#xff0c;因为它真的太简单了。咱们这个老年机启动的也非常快&…

【jenkins1】gitlab与jenkins集成

文章目录 1.Jenkins-docker配置&#xff1a;运行在8080端口上&#xff0c;机器只要安装docker就能装载image并运行容器2.Jenkins与GitLab配置&#xff1a;docker ps查看正在运行&#xff0c;浏览器访问http://10....:8080/2.1 GitLab与Jenkins的Access Token配置&#xff1a;不…