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

3_TCP/IP连接三次握手与断开四次挥手

c113ce9782612f350dc0ed54f6ef99ee.png

TCP/IP 通信是网络通信的基础协议,分为以下主要步骤:

1、建立连接(三次握手)

目的:保证双方建立可靠的通信连接。

过程

1>客户端发送 SYN:客户端向服务器发送一个 SYN(同步)标志位的包,请求建立连接。

2>服务器回应 SYN-ACK:服务器收到后,返回一个带有 SYN 和 ACK 标志位的包,表示同意连接并确认客户端的请求。

3>客户端发送 ACK:客户端收到 SYN-ACK 包后,发送一个 ACK 包确认,连接建立。

2、数据传输

目的:实现可靠的数据传递。

过程

1>分片:发送方将大数据拆分成小段(数据包),每个数据包有序号。

2>封装:在每个数据包中添加头部信息(源地址、目的地址、端口号等)。

3>传输:通过网络传输数据包,依赖 IP 协议进行路由和寻址。

4>确认:接收方每收到一个数据包,会通过 ACK 确认。如果数据包丢失或损坏,发送方重发。

5>排序与组装:接收方根据序号对数据包重新排序,组装为完整数据。

3、连接关闭(四次挥手)

目的:确保双方都完成数据传输,安全关闭连接。    

过程

1>发送 FIN:主动关闭的一方(如客户端)发送一个 FIN 包,表示没有数据要发送了。

2>收到 ACK:被动关闭的一方收到 FIN 后,返回一个 ACK,表示知道了。

3>被动方发送 FIN:被动关闭的一方在确认没有数据要发送后,也发送 FIN 包。

4>主动方发送 ACK:主动关闭的一方返回一个 ACK,连接正式关闭。

4、重要特性

可靠性:通过序号、确认机制、重传机制确保数据完整。

流量控制:利用窗口大小调整发送方速度,防止接收方过载。

拥塞控制:检测网络状况,动态调整发送速率,避免网络拥塞。

5、TCP/IP 模型分层

TCP/IP 协议遵循四层模型:

1>应用层:负责提供网络服务(如 HTTP、FTP、SMTP)。

2>传输层:提供端到端的数据传输(如 TCP 和 UDP)。

3>网络层:负责路由选择和寻址(如 IP 协议)。

4>网络接口层:处理数据链路层和物理层(如以太网协议)。

通过这些步骤,TCP/IP 协议能够实现可靠的网络通信,从而支持现代互联网应用。

下面是自己的调试,独家的~

材料如下:

主要是①连接 ②数据传输 ③断开    

051168161b489e23f448757f55f31f7f.png

为什么Send发送的字节是6呢 ?

0642f4a80fa9f61b44700a1d2cd1dd58.png

7fd8f563534366e718f0f155da9e5cb5.png

完成了一次理论到实践的升华~

欢迎关注:

其他网络相关:

2_linux下使用代码获取网卡信息

linux下使用代码设置ip

记一次网络无法ping通的排查

1_linux系统网络性能如何优化——几种开源网络协议栈比较

7_计算机网络五层体系结构

Modbus发送的报文何时等到应答

tcp通信测试报告单1——connect和send

libmodbus库的一些使用经历

6_协议与层次划分

5_计算机网络体系结构的形成

4_计算机网络在我国的发展_20241024

3_路由器分组交换知多少?20241009

2_互联网概述_20241007

1_计算机网络体系结构的形成_20241006

相关文章:

3_TCP/IP连接三次握手与断开四次挥手

TCP/IP 通信是网络通信的基础协议,分为以下主要步骤: 1、建立连接(三次握手) 目的:保证双方建立可靠的通信连接。 过程: 1>客户端发送 SYN:客户端向服务器发送一个 SYN(同步&…...

【LC】3159. 查询数组中元素的出现位置

题目描述: 给你一个整数数组 nums ,一个整数数组 queries 和一个整数 x 。 对于每个查询 queries[i] ,你需要找到 nums 中第 queries[i] 个 x 的位置,并返回它的下标。如果数组中 x 的出现次数少于 queries[i] ,该查…...

《机器学习》——KNN算法

文章目录 KNN算法简介KNN算法——sklearnsklearn是什么?sklearn 安装sklearn 用法 KNN算法 ——距离公式KNN算法——实例分类问题完整代码——分类问题 回归问题完整代码 ——回归问题 KNN算法简介 一、KNN介绍 全称是k-nearest neighbors,通过寻找k个距…...

GAMES101:现代计算机图形学入门-作业五

作业五 这次作业给了许多脚本,我们现在可以把每个脚本的代码逐行细细分析一下。 main.cpp #include "Scene.hpp" #include "Sphere.hpp" #include "Triangle.hpp" #include "Light.hpp" #include "Renderer.hpp&quo…...

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞!!! 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探:鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…...

Spring AOP:this 调用当前类方法无法被拦截

问题复现 假设我们正在开发一个宿舍管理系统,这个模块包含一个负责电费充值的类 ElectricService,它含有一个充电方法 charge(): Service public class ElectricService {public void charge() throws Exception {System.out.println("E…...

K8S-LLM:用自然语言轻松操作 Kubernetes

在 Kubernetes (K8s) 的日常管理中,复杂的命令行操作常常让开发者感到头疼。无论是部署应用、管理资源还是调试问题,都需要记住大量的命令和参数。Kubernetes 作为容器编排的行业标准,其强大的功能伴随着陡峭的学习曲线和复杂的命令行操作。这…...

lua和C API库一些记录

相关头文件解释 lua.h:声明lua提供的基础函数,所有内容都有个前缀lua_; luaxlib.h:声明辅助库提供的函数,所有内容都有个前缀luaL_; lualib.h:声明了打开标准库的函数; 辅助库对…...

SpringSecurity中的过滤器链与自定义过滤器

关于 Spring Security 框架中的过滤器的使用方法,系列文章: 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity使用过滤器实现图形验证码》 1、Spring Security 中的过滤器链 Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过…...

Slate文档编辑器-Decorator装饰器渲染调度

Slate文档编辑器-Decorator装饰器渲染调度 在之前我们聊到了基于文档编辑器的数据结构设计,聊了聊基于slate实现的文档编辑器类型系统,那么当前我们来研究一下slate编辑器中的装饰器实现。装饰器在slate中是非常重要的实现,可以为我们方便地…...

本地Docker部署Flowise并实现远程构建LLM应用程序原型高效开发

文章目录 前言1. Docker安装Flowise2. Ubuntu安装Cpolar3. 配置Flowise公网地址4. 远程访问Flowise5. 固定Cpolar公网地址6. 固定地址访问 前言 相信很多对AI感兴趣的小伙伴都会觉得正在逐渐流行的工作流自动化和AI集成特别酷炫,没错,这些技术像“秘密武…...

多点通信、流式域套接字

一、广播 1.1广播的发送端模型&#xff1a; #include<myhead.h>#define BEN_IP "192.168.191.129" #define BEN_PORT 8888#define PORT 6666int main(int argc, const char *argv[]) {int oldfd socket(AF_INET,SOCK_DGRAM,0);if(oldfd -1){perror("soc…...

vue3使用video-player实现视频播放(可拖动视频窗口、调整大小)

1.安装video-player npm install video.js videojs-player/vue --save在main.js中配置全局引入 // 导入视频播放组件 import VueVideoPlayer from videojs-player/vue import video.js/dist/video-js.cssconst app createApp(App) // 视频播放组件 app.use(VueVideoPlayer)2…...

模块化和面向接口的设计:深入理解和应用

模块化和面向接口的设计&#xff1a;深入理解和应用 在面向对象编程中&#xff0c;模块化 和 面向接口设计 是两种非常重要的编程理念。它们能帮助开发人员构建更加清晰、可维护和易于扩展的系统。接下来&#xff0c;我们将详细解释这两种设计思想&#xff0c;并结合 Python 中…...

《SwiftUI 实现点击按钮播放 MP3 音频》

功能介绍 点击按钮时&#xff0c;应用会播放名为 yinpin.mp3 的音频文件。使用 AVAudioPlayer 来加载和播放音频。 关键点&#xff1a; 按钮触发&#xff1a;点击按钮会调用 playAudio() 播放音频。音频加载&#xff1a;通过 Bundle.main.url(forResource:) 加载音频文件。播…...

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...

MySQL如何执行.sql 文件:详细教学指南

在使用MySQL数据库过程中&#xff0c;我们经常需要执行包含SQL语句的.sql文件。这些文件通常用于数据库的备份和恢复或批量执行SQL脚本。本文将详细介绍如何在不同环境下执行MySQL的.sql文件。 前置准备 在开始之前&#xff0c;请确保以下条件已经满足&#xff1a; 已经安装…...

非周期性脑活动的动态重构支持癫痫患者的认知功能:一种神经指纹识别方法

摘要 颞叶癫痫(TLE)的特征是大脑活动模式发生大规模的变化&#xff0c;并且这种变化与患者的认知功能受损密切相关。本研究旨在使用神经指纹方法分析大脑活动的动态重构&#xff0c;以描绘TLE患者的个体特征及其认知功能相关性。本研究收集了68名TLE患者和34名对照组的10min静息…...

ZYNQ初识6(zynq_7010)clock时钟IP核

基于板子的PL端无时钟晶振&#xff0c;需要从PS端借用clock1&#xff08;50M&#xff09;晶振 接下去是自定义clock的IP核封装&#xff0c;为后续的simulation可以正常仿真波形&#xff0c;需要注意顶层文件的设置&#xff0c;需要将自定义的IP核对应的.v文件设置为顶层文件&a…...

使用MFC编写一个paddleclas预测软件

目录 写作目的 环境准备 下载编译环境 解压预编译库 准备训练文件 模型文件 图像文件 路径整理 准备预测代码 创建预测应用 新建mfc应用 拷贝文档 配置环境 界面布局 添加回cpp文件 修改函数 报错1解决 报错2未解决 修改infer代码 修改MFCPaddleClasDlg.cp…...

游戏模组框架:SMAPI构建个性化星露谷体验的全栈解决方案

游戏模组框架&#xff1a;SMAPI构建个性化星露谷体验的全栈解决方案 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 1 技术架构解析&#xff1a;SMAPI如何重塑游戏扩展能力 在独立游戏模组生态中&a…...

BLE 协议栈:HCI ISO 数据详解

BLE 协议栈&#xff1a;HCI ISO 数据详解前言一、定义1、HCI ISO 数据包&#xff08;ISO Data Packet&#xff09;二、ISO 数据包结构1、Host to Controller 格式2、Controller to Host 格式3、字节级格式表三、ISO Data Load 格式1、Host to Controller&#xff08;主机到控制…...

HsMod:革新性炉石传说增强工具,全方位提升游戏体验

HsMod&#xff1a;革新性炉石传说增强工具&#xff0c;全方位提升游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 一、你是否也面临这些游戏痛点&#xff1f; 当你兴致勃勃地开启…...

Python图书借阅管理系统实战

# 题目描述# 设计一个简单的图书借阅管理系统。系统初始包含若干本图书&#xff0c;每本图书的信息包括&#xff1a;# 书号&#xff08;字符串&#xff09;# 书名&#xff08;字符串&#xff09;# 作者&#xff08;字符串&#xff09;# 库存数量&#xff08;整数&#xff09;# …...

微信小程序与H5深度交互:实现扫码功能的无缝传递与数据回传

1. 微信小程序与H5交互的核心技术解析 微信小程序与H5页面的交互一直是移动开发中的热门话题。在实际项目中&#xff0c;我们经常需要在小程序内嵌H5页面&#xff0c;同时又要调用小程序原生功能。这种混合开发模式既能利用H5的跨平台特性&#xff0c;又能享受小程序的原生能力…...

MindSpore 环境配置完全指南呕

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知&#xff0c;本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台&#xff0c;有非常多的配置参数。详细的参数列表可以…...

从体素到三维模型:解析Volumetric Method在复杂场景重建中的核心算法

1. 什么是Volumetric Method&#xff1f;从体素到三维世界的魔法 第一次接触三维重建时&#xff0c;我被那些从照片变成立体模型的演示惊呆了。后来才知道&#xff0c;这背后藏着一种叫Volumetric Method的技术&#xff0c;它就像用乐高积木搭建世界——把空间切成无数小方块&a…...

二叉树层序遍历与高度计算详解

一、先解答上次的思考题Day12 已经给出练习答案&#xff0c;这里不再重复&#xff0c;我们直接进入层序遍历。二、今天学习目标理解层序遍历&#xff08;按一层一层打印&#xff09;用队列实现层序遍历&#xff08;BFS 思想&#xff09;递归 迭代两种方式求二叉树高度完整可运…...

无侵入式Allegro许可证使用数据采集方案

无侵入式Allegro许可证使用收数据方案拿这些个年我跟各种许可证打交道&#xff0c;从最开始的Named User整到并发许可、角色绑定&#xff0c;真是踩过不少坑。你要是想解决阿里云、Enovia、3DEXPERIENCE这伙软件的许可证管理问题&#xff0c;传统方法要么成本高&#xff0c;要么…...

Yii::$app->getAuthManager();的庖丁解牛

Yii::$app->getAuthManager() 是 Yii2 权限控制系统&#xff08;RBAC&#xff09;的唯一入口和核心代理。 它的本质是&#xff1a;通过服务定位器&#xff08;Service Locator&#xff09;模式&#xff0c;从全局应用容器中获取实现了 yii\rbac\ManagerInterface 接口的授权…...