计算机网络之网络传输,三次握手和四次挥手
网络传输通过高低电压
流 基本类型数组 低电压转高电压,通过网卡
传输模式:
全双工:互相传输且能同时传输
半双工:互相传输但是不能同时传输
单工:单向传输,(键盘,显示器)
单根导线的电压不能同时存在,相反电压会抵消,相同会串联成同一信号
一根网线中有多根导线
交换设备:路由器、交换机、核心交换等,电压信号不能同时存在,会产生干扰,需要在交换设备中先存储起来,然后逐个发送给其他接收方,需要排队轮流发送,会导致网络延迟
设备部署
目的ip 目标设备地址 来源ip 来源设备ip 目的端口号 来源端口号 响应内容 响应时间 超时重发 过期时间 CRC校验码 数据过大需要拆分 序号 总大小 计算机网络协议 借助socket套接字 TCP协议,保证准确无误传输信息,速度慢
建立传输连接的过程
出厂设置设备地址,每一台设备都不一样,都有唯一的一个设备地址
距离越远,网络延迟越高,距离越近,网络延迟越低
三次握手(面试重点)
计算机网络中的“三次握手”是指建立TCP连接的重要步骤,即双方都发送数据包以确认彼此的存在并建立连接。
具体来说,“三次握手”是指以下三个步骤:
- 第一次握手:客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。这个过程中,j是一个随机数,通过看服务器返回的j+1是否正确,判断第一次握手服务器是否正确响应。
- 第二次握手:服务器确认客户的SYN包,同时发送ACK包(ack = j+1)作为回应;自己也发送一个SYN包(syn=k),共两个包,此时服务器进入SYN_RECV状态。这个过程中,k也是一个随机数,用于看客户端返回的k+1是否正确,判断第二次握手客户端是否正确响应。
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。这个过程中,握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
四次挥手
四次挥手过程(four-way handshake)是TCP(传输控制协议)中建立连接和释放连接的重要过程。具体步骤如下:
- 第一次挥手:客户端发送一个FIN报文(FIN=1)给服务器,表示要关闭连接。此时,客户端进入FIN-WAIT-1状态,服务器收到报文后,发送一个ACK报文(ACK=1,确认号ack=u+1,序号seq=v)给客户端,表示已收到连接释放请求,此时客户端进入FIN-WAIT-2状态,服务器进入CLOSE-WAIT状态。
- 第二次挥手:服务器发送一个FIN报文(FIN=1)给客户端,表示要关闭连接。此时,服务器进入LAST-ACK状态,等待客户端的确认。客户端收到报文后,发送一个ACK报文(ACK=1,seq=u+1,ack=w+1)给服务器,表示已收到连接释放请求,此时服务器进入TIME-WAIT状态。
- 第三次挥手:客户端发送一个ACK报文(ACK=1,seq=u+1,ack=w+1)给服务器,表示已收到服务器的连接释放请求。此时,客户端进入TIME-WAIT状态。
- 第四次挥手:服务器发送一个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协议:
- 面向连接:在传输数据之前需要先建立连接,传输完成后释放连接。
- 可靠性高:TCP提供了确认、重传、数据排序等机制,保证数据的可靠性。
- 慢启动:TCP连接建立后,会逐渐增加数据传输的速率,防止网络拥塞。
- 吞吐量高:TCP支持窗口调整和流控制,可以根据网络状态进行调整,提高数据传输效率。
- 主要应用场景:每个UDP包都是独立的,并且可能会在传输过程中丢失、重复、乱序。因此,UDP适用于需要快速传输数据,而对数据可靠性要求不高的应用场景。
UDP协议:
- 无连接:不需要在传输数据之前建立连接,简单、快速。
- 简单性:由于UDP是无连接的协议,所以它在进行数据传输时不需要建立连接,也不需要进行数据的确认和重传等操作,因此相对来说比较简单、快速。
- 效率高:由于UDP不需要进行数据的确认和重传等操作,因此它的传输效率相对较高。
- 主要应用场景:对于一些对实时性要求比较高的应用,如实时视频流、游戏等,使用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 感觉就是清…...

Python 3 使用 read()、readline()、readlines() 函数 读取文件
1 样例文件 example.txt 春晓 孟浩然〔唐代〕 春眠不觉晓,处处闻啼鸟。 夜来风雨声,花落知多少。 2 分别使用 read()、readline()、readlines() 函数 2.1 # read() -------- 一次性读取所有文本,以字符串的形式返回结果。 # read() ----…...

勒索解密后oracle无法启动故障处理----惜分飞
客户linux平台被勒索病毒加密,其中有oracle数据库.客户联系黑客进行解密【勒索解密oracle失败】,但是数据库无法正常启动,dbv检查数据库文件报错 [oraclehisdb ~]$ dbv filesystem01.dbf DBVERIFY: Release 11.2.0.1.0 - Production on 星期一 11月 27 21:49:17 2023 Copyrig…...

Leetcode144. 二叉树的前序遍历-C语言
文章目录 题目介绍题目分析解题思路1.创建一个数组来储存二叉树节点的值2.根据二叉树的大小来开辟数组的大小3.边前序遍历边向创建的数组中存入二叉树节点的值 完整代码 题目介绍 题目分析 题目要求我们输出二叉树按前序遍历排列的每个节点的值。 解题思路 1.创建一个数组来…...

dmesg命令在软件测试中的实际应用
简介:当你想要了解 Linux 系统在启动时究竟发生了什么?或者当硬件设备不工作时,如何进行调试?这就是 dmesg 命令的用武之地。本文将介绍 dmesg 的基本功能,并深入探讨其在软件测试中的实际应用。 历史攻略:…...

【渗透】记录阿里云CentOS一次ddos攻击
文章目录 发现防御 发现 防御 流量清洗 使用高防...

前端面试提问(3)
1、js两个数相加会不会丢精度? 可能会遇到精度丢失的问题。JavaScript 使用的是 IEEE 754 浮点数标准,即一种二进制表示法,有时不能准确地表示十进制小数。如果你需要进行精确的十进制数值计算,可以使用一些处理精确数值的库&…...

fl studio21.2最新汉化中文完整版网盘下载
fl studio 21中文版是Image-Line公司继20版本之后更新的水果音乐制作软件,很多用户不太理解,为什么新版本不叫fl studio 21或fl studio2024,非得直接跳到21.2版本,其实该版本是为了纪念该公司22周年,所以该版本也是推出…...

差分数组相关知识点以及刷题
差分数组 差分数组是什么? **举例:**对于数组考虑数组 a[1,3,3,5,8],对其中的相邻元素两两作差(右边减左边),得到数组 [2,0,2,3]。然后在开头补上 a[0],得到差分数组: d[1,2,0…...

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据
使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据 该项目介绍了如何在 PL 中的 HDL 与 FPGA 中的处理器上运行的嵌入式 C 之间传输数据的基本结构。 介绍 鉴于机器学习和人工智能等应用的 FPGA 设计中硬件加速的兴起,现在是剥开几层“云雾”并讨论 HDL 之间来回传…...

uniapp地图基本使用及解决添加markers不生效问题?
uniapp地图使用 App端 通过 nvue 页面实现地图 文章目录 uniapp地图使用效果图templatejs添加 marker使用地图查看位置移到到当前位置 效果图 template <template><view class"mapWrap"><!-- #ifdef APP-NVUE --><map class"map-containe…...