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

计算机网络之网络传输,三次握手和四次挥手

网络传输通过高低电压

流 基本类型数组 低电压转高电压,通过网卡

传输模式:

全双工:互相传输且能同时传输

半双工:互相传输但是不能同时传输

单工:单向传输,(键盘,显示器)

单根导线的电压不能同时存在,相反电压会抵消,相同会串联成同一信号

一根网线中有多根导线

交换设备:路由器、交换机、核心交换等,电压信号不能同时存在,会产生干扰,需要在交换设备中先存储起来,然后逐个发送给其他接收方,需要排队轮流发送,会导致网络延迟

设备部署

目的ip 目标设备地址 来源ip 来源设备ip 目的端口号 来源端口号 响应内容 响应时间 超时重发 过期时间 CRC校验码 数据过大需要拆分 序号 总大小 计算机网络协议 借助socket套接字 TCP协议,保证准确无误传输信息,速度慢

建立传输连接的过程

出厂设置设备地址,每一台设备都不一样,都有唯一的一个设备地址

距离越远,网络延迟越高,距离越近,网络延迟越低

三次握手(面试重点)

计算机网络中的“三次握手”是指建立TCP连接的重要步骤,即双方都发送数据包以确认彼此的存在并建立连接。

具体来说,“三次握手”是指以下三个步骤:

  1. 第一次握手:客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。这个过程中,j是一个随机数,通过看服务器返回的j+1是否正确,判断第一次握手服务器是否正确响应。
  2. 第二次握手:服务器确认客户的SYN包,同时发送ACK包(ack = j+1)作为回应;自己也发送一个SYN包(syn=k),共两个包,此时服务器进入SYN_RECV状态。这个过程中,k也是一个随机数,用于看客户端返回的k+1是否正确,判断第二次握手客户端是否正确响应。
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。这个过程中,握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。

四次挥手

四次挥手过程(four-way handshake)是TCP(传输控制协议)中建立连接和释放连接的重要过程。具体步骤如下:

  1. 第一次挥手:客户端发送一个FIN报文(FIN=1)给服务器,表示要关闭连接。此时,客户端进入FIN-WAIT-1状态,服务器收到报文后,发送一个ACK报文(ACK=1,确认号ack=u+1,序号seq=v)给客户端,表示已收到连接释放请求,此时客户端进入FIN-WAIT-2状态,服务器进入CLOSE-WAIT状态。
  2. 第二次挥手:服务器发送一个FIN报文(FIN=1)给客户端,表示要关闭连接。此时,服务器进入LAST-ACK状态,等待客户端的确认。客户端收到报文后,发送一个ACK报文(ACK=1,seq=u+1,ack=w+1)给服务器,表示已收到连接释放请求,此时服务器进入TIME-WAIT状态。
  3. 第三次挥手:客户端发送一个ACK报文(ACK=1,seq=u+1,ack=w+1)给服务器,表示已收到服务器的连接释放请求。此时,客户端进入TIME-WAIT状态。
  4. 第四次挥手:服务器发送一个ACK报文(ACK=1,seq=w+1,ack=u+1)给客户端,表示已收到客户端的确认报文。此时,服务器进入CLOSE状态,完成四次挥手过程。

在四次挥手过程中,两次握手用于建立连接,两次握手用于关闭连接。同时,TCP协议为了防止已失效的连接请求报文段突然又传送到了服务端而错误地建立一个虚假的连接(也就是半开连接),所以TCP协议要求每个连接都必须经过建立连接和释放连接的过程。

响应 响应时间 超时重发 过期时间 超过响应时间后会超时重发,在发的过程中如果该信号超过过期时间得到的信号会被丢弃不再转发

太阳风暴,电压磁场爆炸,被迫切割磁感线,产生电流,电压发生改变,导致传播中断或者传播信号发生改变

校验码,关联数据

CRC校验码

数据包大小有限制,如果数据包太大,需要转发很久才能转发下一个,其他信号就暂时不能转发,导致断网,因此数据太大还需要拆开

全部接收完才会开始组装,因为存在超时重发,接受的顺序不一定正确,因此还需要有一个数据包的总大小,来判断当前数据包是否全部接收完成,因此文件下载时,下载没完成时不能查看,因为没有接收完还没组装

视频加载技术,就是将大视频分割成小视频,下一个播放一个

断网后没有传完的文件需要重新传输,因为不知道缺的是哪一个小片段没传

断点续传技术是指在文件传输过程中,当传输中断时,可以通过记录已传输的部分和相关信息,使传输在中断处继续进行的技术。它可以解决网络不稳定或其他中断情况下的文件传输问题。

socket套接字工具类,提供发送接受消息功能,它是计算机之间进行通信的一种约定或一种方式。通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

任何语言都有socket,底层网络传输都是socket,用来解析协议数据

正常通信,不做处理是不安全的

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是互联网协议(IP)中两种主要的传输层协议,它们的特点和应用场景如下:

TCP协议:

  1. 面向连接:在传输数据之前需要先建立连接,传输完成后释放连接。
  2. 可靠性高:TCP提供了确认、重传、数据排序等机制,保证数据的可靠性。
  3. 慢启动:TCP连接建立后,会逐渐增加数据传输的速率,防止网络拥塞。
  4. 吞吐量高:TCP支持窗口调整和流控制,可以根据网络状态进行调整,提高数据传输效率。
  5. 主要应用场景:每个UDP包都是独立的,并且可能会在传输过程中丢失、重复、乱序。因此,UDP适用于需要快速传输数据,而对数据可靠性要求不高的应用场景。

UDP协议:

  1. 无连接:不需要在传输数据之前建立连接,简单、快速。
  2. 简单性:由于UDP是无连接的协议,所以它在进行数据传输时不需要建立连接,也不需要进行数据的确认和重传等操作,因此相对来说比较简单、快速。
  3. 效率高:由于UDP不需要进行数据的确认和重传等操作,因此它的传输效率相对较高。
  4. 主要应用场景:对于一些对实时性要求比较高的应用,如实时视频流、游戏等,使用UDP协议可以更好地保证数据的实时性和流畅性。同时,对于一些对数据可靠性要求不高的应用,如网络爬虫、日志记录等,使用UDP协议也可以降低实现的复杂性和成本。

相关文章:

计算机网络之网络传输,三次握手和四次挥手

网络传输通过高低电压 流 基本类型数组 低电压转高电压,通过网卡 传输模式: 全双工:互相传输且能同时传输 半双工:互相传输但是不能同时传输 单工:单向传输,(键盘,显示器&#…...

Azure Machine Learning - 在 Azure AI 搜索中创建全文查询

Azure AI搜索中如果要为全文搜索生成查询,本文提供了设置请求的步骤。 本文还介绍了查询结构,并说明了字段属性和语言分析器如何影响查询结果。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&a…...

基于YOLOv8深度学习的钢材表面缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...

深度学习常见回归分支算法逐步分析,各种回归之间的优缺点,适用场景,举例演示

文章目录 1、线性回归(Linear Regression)1.1 优点1.2 缺点1.3 适用场景1.4 图例说明 2、多项式回归(Polynomial Regression)2.1 优点2.2 缺点2.3 适用场景2.4 图例说明 3、决策树回归(Decision Tree Regression&#…...

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录 D - Tile Pattern 题目大意: 思路: 代码: D - Tile Pattern D - Tile Pattern (atcoder.jp) 题目大意: 给你一个n和q,n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况,q为查询次数…...

Google测试框架googletest简介与使用方法

环境准备(Ubuntu) 下载 git clone https://github.com/google/googletest.git 安装 cd googletest // 创建build目录 mkdir build cd build //编译安装 cmake .. make sudo make install 检查是否安装成功 ls /usr/local/lib// 存在以下文件则说明…...

进程的创建:fork()

引入 创建进程的方式我们已经学习了一个!在我们运行指令(或者运行我们自己写的可执行程序)的时候不就是创建了一个进程嘛?那个创建进程的方式称为指令级别的创建子进程! 那如果我们想要在代码中创建进程该怎么办呢? fork() for…...

Fabric:创建应用通道

搭建自定义网络可以参考文章: https://blog.csdn.net/yeshang_lady/article/details/134113296 1 创建通道 网络搭建完成之后,就可以开始创建通道了。Fabric V2.5.4中可以在不创建系统通道的情况下直接创建应用通道。 1.1 修改配置文件 先创建配置文…...

力扣每日一题(2023-11-30)

力扣每日一题 题目:1657. 确定两个字符串是否接近 日期:2023-11-30 用时:21 m 07 s 时间:11ms 内存:43.70MB 代码: class Solution {public boolean closeStrings(String word1, String word2) {if(word1.…...

内部类Lambda

静态内部类 /*** 静态成员是在类加载成字节码时就已经存在的,静态只能访问静态*/ public class Demo {public static void main(String[] args) {Outer.Inner.show();} }class Outer {int num1 10;static int num2 20;static class Inner {static void show() {Outer outer …...

设一棵二叉树中各结点的值互不相同,其先序遍历序列和中序遍历序列分别存于两个一维数组A[1...n]和 Bfl...n]中,试编写算法建立该二叉树的二叉链表。

题目描述:设一棵二叉树中各结点的值互不相同,其先序遍历序列和中序遍历序列分别存于两个一维数组A[1…n]和 B[1…n]中,试编写算法建立该二叉树的二叉链表。 分析: 对于一颗二叉树,知道其中序和先序序列就可以完全确定…...

什么是Daily Scrum?

Daily Scrum(每日站会),Scrum Master要确保这个会在每天都会开。这个会的目的就是检查正在做的东西和方式是否有利于完成Sprint目的,并及时做出必要的调整。 每日站会一般只开15分钟,为了让事情更简单些,这…...

逆波兰表达式求值[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个字符串数组tokens,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。 有效的算符为 ‘’、‘-’、‘*’ 和 ‘/’ 。 每个操作数(运算对象)都…...

Oracle连接和使用

5. Oracle连接和使用 5.1. sqlplus sqlplus作为甲骨文公司提供的一款本族工具产品,有着悠久的历史和积淀,它几乎伴随着Oracle数据库产生至今的整个生命周期,而且,还会继续和Oracle数据库产品相伴一直发展下去。该工具看似简单灵活的背后,却为广大用户使用Oracle数据库提…...

redis单线程为什么这么快

redis单线程为什么这么快 redis是使用的单线程来进行操作的,因为所有的数据都是在内存中的,内存操作特别快。而且单线程避免了多线程切换性能损耗问题 单线程如何处理并发客户端连接? redis利用epoll来实现IO多路复用,将连接信息和…...

工业机器视觉megauging(向光有光)使用说明书(五,轻量级的visionpro)

这个说明主要介绍抓线功能。 第一步,添加线工具,鼠标双击工具箱“抓线”,出现如下界面: 第二步,我们拉一条,“九点标定”到“抓线1”的线,和visionpro操作一样: 第三步,…...

【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛

文章目录 【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛A.星期几考试?C.信件D、乘除法E、不知道叫什么名字F.我要学会盾反!G.闪闪发光心动不已!H.不想想背景的gcdI.uu爱玩飞行棋J.火柴人小游戏K .有趣的BOSS 【LittleXi】2023年广东…...

【C语言:数据在内存中的存储】

文章目录 1.整数在内存中的存储1.1整数在内存中的存储1.2整型提升 2.大小端字节序2.1什么是大小端2.2为什么有大小端之分 3.整数在内存中的存储相关题目题目一题目二题目三题目四题目五题目六题目七 4.浮点数在内存中的存储4.1浮点数存的过程4.2浮点数取得过程 在这之前呢&…...

每日一练:阿姆斯特朗数

如果一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数。 例如 1^3 5^3 3^3 153。 1000 以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。...

fatal: remote error: upload-pack: not our ref (未解决问题)

PX4使用 git submodule update --init --recursive报错 fatal: remote error: upload-pack: not our ref解决办法参考:https://stackoverflow.com/questions/61163082/why-does-git-submodule-update-fail-with-fatal-remote-error-upload-pack-not-o 感觉就是清…...

Oak安全最佳实践:10个防范常见Web攻击的终极指南

Oak安全最佳实践:10个防范常见Web攻击的终极指南 【免费下载链接】oak A middleware framework for handling HTTP with Deno 🐿️ 🦕 项目地址: https://gitcode.com/gh_mirrors/oa/oak Oak是一个基于Deno的现代化中间件框架&#xf…...

DLSS Swapper:3步解锁游戏性能倍增的AI优化工具

DLSS Swapper:3步解锁游戏性能倍增的AI优化工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为PC游戏玩家设计的深度学习超级采样(DLSS)版本管理工具,通过智能环境诊断、…...

LABVIEW写入Excel的函数:应用程序目录、创建路径、写入带分隔符电子表格、for循环、条件结构、按名称解除捆绑、创建数组

...

电路板测试点设计与自动化测试实践

1. 测试点的本质作用在电子制造领域,测试点(Test Point)是电路板上那些看似多余的小圆点,但它们却是保证产品质量的关键设计。作为一名有十年经验的硬件工程师,我见过太多因为忽视测试点设计而导致量产失败的案例。测试…...

linux——消息队列进程间通信

ftok函数key_t ftok( char * fname, int id ) //系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。 参数: fname就时你指定的文件名(该文件必须是存在而且可以访问的)。 id是子序…...

JTAG接口原理、故障诊断与安全操作指南

1. JTAG接口基础解析作为一名从事FPGA开发多年的工程师,我经常需要与JTAG接口打交道。这个看似简单的四线接口,在实际工作中却经常给我们带来各种"惊喜"。今天我就结合自己踩过的坑,系统地讲讲JTAG那些事儿。JTAG(Joint Test Actio…...

AI编码狂飙,安全防线告急:运行时测试如何守住软件安全的生死线

2026年初,国内某头部电商平台爆发大规模用户数据泄露事件,溯源结果震惊整个行业:事件根源并非黑客的0day漏洞攻击,而是开发团队通过AI编码工具生成的一段会员权限校验代码。这段代码在语法层面完全合规,静态安全扫描全…...

2026 AI 智能体工程化深度解析:从词元逻辑到高可用链路构建

进入 2026 年,大语言模型(LLM)的竞争已从单纯的“模型智力”转向了“工程化落地能力”。对于开发者而言,AI 不再仅仅是一个对话框,而是一个能够自主调用工具、处理复杂逻辑的智能体(Agent)。在这…...

【游戏引擎之路】极速狂飙(一):5天打造跨平台Galgame播放器《Galplayer》——从脚本解析到电影式体验

1. 极速开发背后的技术选型 开发《Galplayer》最疯狂的地方在于,我只用了5天就完成了从零到可运行版本的开发。这听起来像天方夜谭,但合理的工具链选择让这一切成为可能。我选择了WPFPythonUnity这个"三件套"组合,每个工具都发挥了…...

WarcraftHelper技术解析:经典游戏现代化适配指南

WarcraftHelper技术解析:经典游戏现代化适配指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争霸3设计的…...