计算机网络之网络传输,三次握手和四次挥手
网络传输通过高低电压
流 基本类型数组 低电压转高电压,通过网卡
传输模式:
全双工:互相传输且能同时传输
半双工:互相传输但是不能同时传输
单工:单向传输,(键盘,显示器)
单根导线的电压不能同时存在,相反电压会抵消,相同会串联成同一信号
一根网线中有多根导线
交换设备:路由器、交换机、核心交换等,电压信号不能同时存在,会产生干扰,需要在交换设备中先存储起来,然后逐个发送给其他接收方,需要排队轮流发送,会导致网络延迟
设备部署
目的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 感觉就是清…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
