当前位置: 首页 > news >正文

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代表告诉对方,我想跟你断开连接。

总结:

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

相关文章:

  • 最新解决docker镜像无法下载问题
  • Redis的哨兵模式是?功能?(通俗易懂版)
  • 用 PID 优化拥塞控制
  • 存储无界限:MK米客方德SD NAND系列,小容量到大容量的全方位覆盖
  • 天软特色因子看板(2024.06 第8期)
  • 展讯-QMI8658和气压传感器驱动调试
  • Maven和JAVA_HOME的关系
  • 【ajax核心04】利用async、await解决显式promise链问题
  • Java中的大数据处理与分析架构
  • 头歌——机器学习——支持向量机案例
  • 解决Windows下移动硬盘无法弹出的问题:\$Extend\$RmMetadata\$TxfLog\$TxfLog.blf
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全非约束系约束系RBCD资源系Spooler利用
  • 由 Vault 支持的 KES 的 MinIO Operator
  • 【INTEL(ALTERA)】Nios® II EDS 是否在 Windows 10 上受支持?
  • ansible copy模块参选选项
  • 03Go 类型总结
  • Brief introduction of how to 'Call, Apply and Bind'
  • C# 免费离线人脸识别 2.0 Demo
  • java 多线程基础, 我觉得还是有必要看看的
  • Rancher-k8s加速安装文档
  • SpiderData 2019年2月23日 DApp数据排行榜
  • STAR法则
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • yii2权限控制rbac之rule详细讲解
  • 阿里云购买磁盘后挂载
  • 服务器从安装到部署全过程(二)
  • 工作中总结前端开发流程--vue项目
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 我的zsh配置, 2019最新方案
  • 译有关态射的一切
  • 赢得Docker挑战最佳实践
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • #define
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (6)STL算法之转换
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (十六)Flask之蓝图
  • (四)事件系统
  • (一)u-boot-nand.bin的下载
  • (转)c++ std::pair 与 std::make
  • (转)jQuery 基础
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET简谈设计模式之(单件模式)
  • .py文件应该怎样打开?
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @selector(..)警告提示
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [Android] Upload package to device fails #2720
  • [BJDCTF 2020]easy_md5
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [codevs1288] 埃及分数
  • [C语言]——函数递归
  • [FC][常见Mapper IRQ研究]