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

news/2024/11/15 0:22:54/

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.ppmy.cn/news/1470942.html

相关文章

RabbitMQ消息队列 安装及基本介绍

一.MQ介绍 Message Queue (MQ)是一种跨进程的通信机制,用于在系统之间进行传递消息。MQ作为消息中间件,可以进行异步处理请求,从而减少请求响应时间和解耦 1.1 应用场景 1.1.1 系统之间通过MQ进行消息通信&#xff0…

linux 如何判断磁盘是HDD还是SSD

本文主要是判断磁盘是 HDD 还是不上 HDD,只用于直通盘的判断,raid盘不在内 方法一、 使用lsblk 命令判断 # 仅查看物理盘的名称、空间大小、SSD(0)? HDD(1)?, 设备供应商以及状态。 [integraTorsctyunos ~]$ lsblk -d -o NAME,SIZE,ROTA,VENDOR,STATE…

为什么能通过文本分析情感?

通过文本分析情感,通常称为情感分析(Sentiment Analysis)或意见挖掘(Opinion Mining),是自然语言处理(NLP)的一个分支。这项技术能够识别和提取文本中的主观信息(对呀&am…

clickhouse学习笔记(四)库、表、分区相关DDL操作

目录 一、数据库操作 1、创建数据库 2、查询及选择数据库 3、删除数据库 二、数据表操作 1、创建表 2、删除表 3、基本操作 ①追加新字段 ②修改字段类型或默认值 ③修改字段注释 ④删除已有字段 ⑤移动数据表(重命名) ⑥清空表 三、默认值…

Python 围棋

效果图 完整代码 源码地址:Python 围棋 # 使用Python内置GUI模块tkinter from tkinter import * # ttk覆盖tkinter部分对象,ttk对tkinter进行了优化 from tkinter.ttk import * # 深拷贝时需要用到copy模块 import copy import tkinter.me…

CSS背景属性:打造丰富视觉效果的背景设计

在网页设计中,背景是创建视觉吸引力和设置页面基调的重要元素。CSS提供了多种背景属性来控制元素的背景样式,包括颜色、图像、尺寸、位置和重复方式。本文将详细介绍CSS中的背景属性,包括background简写属性以及background-color、background…

Windows系统下安装RabbitMQ详细步骤

声明:原文参考链接出自: 如何在Windows系统下安装RabbitMQ_rabbitmq windows安装-CSDN博客 https://zhuanlan.zhihu.com/p/693160757 一、RabbitMQ安装软件资源准备 因为RabbitMQ是Erlang语言开发的,因此安装Erlang环境在进行安装RbbitMQ的…

FW Activity跳转动画源码解析(一)

文章目录 跳转动画实际操作的是什么?窗口怎么知道应该执行什么动画,是透明,还是平移,还是缩放,旋转? 跳转动画实际操作的是什么? startActivity调用之后进行页面跳转,会有一系列的涉及到ActivitStar,ActivityTask,ActivityManager等类的操作,最终在执行动画会调用到Surface…