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

【计算机网络】lab7 TCP协议

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

目录

1. 实验目的

2. 实验环境

3. 实验过程

3.1 Capture a Trace 捕获

3.2 Inspect the Trace 检查捕获

3.3 TCP Segment Structure

3.4 TCP三次握手

3.5 TCP四次挥手

 3.6 TCP数据传输 

4. 问题回答

5. 自我探索

6. 总结 


本系列重点针对山东大学-软件学院-计算机网络实验的任务。

希望通过实验,一方面加强大家对理论知识的认识,另一方面提升大家的动手能力。

也希望我的博客能够给学弟学妹们的学习提供一些帮助。

1. 实验目的

  1. 熟悉使用wireshark软件进行抓取TCP数据包 ;
  2. 分析抓取到的TCP数据包,掌握TCP数据包结构、TCP数据包各字段的含义;
  3. 掌握TCP连接建立和释放的步骤;
  4. 掌握TCP数据传输过程;

2. 实验环境

· wireshark;· wget :获取web资源。
· Browser:本次实验用web浏览器获得页面作为工作负载,查找、获取页面。

3. 实验过程

3.1 Capture a Trace 捕获

1.使用一个中等大小的资源URL,且是HTTP(非HTTPS):提供的资源URL(http://p4.qhimg.com/bdm/0_0_100/t010fae11f356641191.jpg)

2.命令行下载资源
使用 wget 命令来下载该资源。输入以下命令:

wget http://p4.qhimg.com/bdm/0_0_100/t010fae11f356641191.jpg

这条命令会使用 HTTP 协议从指定的 URL 下载该 JPEG 图片。

3. 打开 Wireshark 并设置过滤器:

在 Wireshark 中,设置一个过滤器以捕获与该 URL 相关的 TCP 流量。您可以使用以下过滤器:

tcp and host p4.qhimg.com

该过滤器会显示所有与 p4.qhimg.com 主机进行 TCP 通信的网络包。

4. 开始捕获数据包

  • 打开 Wireshark。
  • 选择合适的网络接口进行数据包捕获。
  • 在 Wireshark 的过滤框中输入 tcp and host p4.qhimg.com,然后按回车键应用过滤器。
  • 点击“开始捕获”按钮,Wireshark 将捕获和显示所有与 p4.qhimg.com 的 TCP 连接相关的数据包。

  

3.2 Inspect the Trace 检查捕获

选取一个TCP报文,检查结果如下:

  

可以知道:

  • source port 源端口 2B:很有可能是80,因为web服务器的端口号是80;
  • destination port 目的端口 2B:source port 和 destination port是TCP在IP地址以外添加的地址。
  • sequence number 序号4B:保证TCP可靠性传输的关键,记录第一个有效负载字节在字节流中的位置;
  • acknowledge number 确认号 4B:每一个ACK对应一个确认号,指明下一个期待收到的字节序号,同时表明该序号之前的所有数据都已经正确接收。只有当ACK位=1时有效。建连时SYN报文的ACK位=0;
  • TCP header length TCP首部长度 4b:TCP header 有多少个4B,例如这个TCP数据包的TCP header length显示为0101,说明这个TCP header长度为5(0101)*4 = 20B。TCP报文默认大小为20B。
  • flags 标志位 6b:CWR、ECE用于IP header的ECN字段;
  •         URG:标志紧急指针是否有效;
  •         ACK标志确认号是否有效;
  •         PSH提示接收端应用程序立即将接收缓冲区数据取走;
  •         RST处理异常连接,告知连接不一致的一方连接还没有建立好要求重新建连,RST=1复位报文段
  •         SYN用于同步,SYN=1 称为同步报文段;(1、2握手)
  •         FIN通知对方要关闭连接,FIN=1称为结束报文段。(1、3挥手)
  • window size 窗口大小 2B:流量控制,发送方发送大量数据时,接收方利用滑动窗口进行缓冲。
  • checksum 校验和 2B:和UDP检验相同;
  • options选项:建连时用于协调双方支持的内容;

3.3 TCP Segment Structure

在跟踪中间的任何地方选择一个协议列为TCP的长包。在中间面板中展开TCP协议部分(通过使用“+”扩展器或图标)。除HTTP响应的第一个HTTP GET包和最后一个HTTP响应包外,所有的报文都应该被列为TCP。选择一个长数据包可以确保我们看到的是从服务器到你的计算机的下载数据包。查看协议层,在TCP块之前看到一个IP块。这是因为TCP段是在IP中携带的。下表是TCP部分的各字段解释。  

  

3.4 TCP三次握手

记sequence number为Seq;acknowledge number为Ack;

  • 第一次握手:客户端发送一个SYN同步报文段(SYN=1的TCP数据包,包含初始序列号Seq=J),请求与服务器建立连接;
  • 第二次握手:服务器发送SYN+ACK段(SYN=ACK=1的TCP数据包,序列号Seq=K,确认号Ack=J+1),确认号=J+1表明前J+1之前的0~J都已经正确接收,已经接收了客户端发来的SYN段;
  • 第三次握手:客户端发送一个ACK段给服务器(ACK=1,Ack=K+1),表示已经正确接收服务器发来的SYN+ACK段;

具体图如下:

 在WireShark中如下:

3.5 TCP四次挥手

四次挥手的过程:

  • 第一次挥手:客户端发送结束报文段(FIN=1,Seq=U)给服务器。
  • 第二次挥手:服务器收到第一次挥手的数据包之后,向客户端发送确认报文(ACK=1,Seq=V,Ack=U+1),允许断开连接;
  • 第三次挥手:服务器发送确认报文之后,继续发送结束报文段(FIN=1,ACK=1,Seq=V,Ack=U+1)给客户端;
  • 第四次挥手:客户端接收到FIN结束报文段之后,发送确认报文(ACK=1,Seq=U+1,Ack=W+1)给服务器,告知服务器已经接收到结束报文。

服务器接收到这条ACK确认报文之后,释放TCP连接的相关资源(缓存和变量),客户端等待一段时间之后,释放处于客户端的缓存和变量。
等待一段时间TIME-WAIT:① 保证第四次挥手。客户端不确认第四次挥手时发送给服务器的ACK确认报文是否顺利到达服务器。如果没有顺利到达,服务器会重新进行第三次挥手,直到正确接收客户端第四次挥手的ACK确认报文段。所以不可以立即释放客户端资源,这会导致服务器重新进行的第三次挥手失败。② 防止新连接中出现旧连接的报文段。四次挥手完成之后,不代表之前通过这个连接发送的所有数据都已经处理完了,有些可能在网络中传输。如果立即释放资源,然后再在用一对源端口、目的端口建立TCP连接,可能导致上一次连接中遗留在网络中的报文在新连接中到达,会被当成是新连接的数据进行处理,这就产生了错误。所以需要等待2MSL时长,确保旧连接的报文都从网络中消失。
四次挥手:TCP是全双工的,当客户端要关闭连接时,服务器要发送的数据不一定发完了,所以第二、三次挥手都是服务器完成的,第二次确认知道要关闭连接,第三次告知客户端服务器数据也发送完毕可以断开;CLOSE-WAIT等待服务器发送完数据;第四次挥手返回ACK报文段完才进入TIME-WAIT。因为结束时涉及数据有没有传送完这个问题,所以不同于建立连接时只用三次握手。

 3.6 TCP数据传输 

在wireshark里面点击统计-IO图标。弹出界面如下:  

接下来依次进行以下操作

  1.  间隔选择1分钟
  2. Y轴单位改为Bits
  3. Display Filter:填入tcp.srcport==80
  4. 点击“+”,在新的条目的Display Filter里面填入tcp.dstport==80。最终得到两条线,青色的表示下载速率,红色的表示上传速率,如下所示: 

4. 问题回答

问题1:在SYN数据包上,TCP包含了哪些选项字段以供跟踪。
答:ACK字段和SYN字段。

问题2:当TCP连接正常的时候,下载方向的粗略数据速率(以包/秒或位/秒为单位)是多少?

答:大约是50000bps

问题3:内容占下载率的百分比是多少?展示你的计算。

答:使用tcp.srcport==80 进行过滤,找到任意一个中间位置的大型包。可以看到,总的数据量为1514B=12112bits。而TCP携带的内容占1460B。所以内容占下载率的96.43%。

问题4:由于ACK报文,上传方向的粗略速率(比特/秒)是多少?
答:缩放坐标轴后可以看到,速率大约为21.7Kbps。

问题5:如果最近从服务器接收到的TCP段的序列号是X,那么下一个传输的TCP段携带的ACK号是什么?

答:下一个报文ACK号是X加上这个报文的长度segment length。

5. 自我探索

TCP拥塞控制:拥塞窗口cwnd(congestion window):发送方维护一个状态变量(即拥塞窗口),大小取决于网络的拥塞程度且动态变化。发送方自己的发送窗口=拥塞窗口;如果要考虑接收方的接受能力,发送窗口可能<拥塞窗口。
原则:只要网络没有出现拥塞(发送方没有按时收到ACK确认报文),就增大窗口;若出现拥塞减少拥塞窗口。

探索TCP可靠性机制:
1. 超时重传机制:超过时间还未收到ACK则重新发送。
2. 校验和:校验和错误时重传。
3. 序列号:序列号能够确认缺少了哪个位置的数据,保证按序到达,同时筛除重复数据。
4. 确认应答机制:ACK标志位=1时,检查Ack=U+1,说明前U个数据包都正确接收。

SACK: TCP的一个选项,允许TCP单独确认非连续片段,用于告知真正丢失的包,只重传丢失的片段。options字段中:SACKpermitted 当发送序列中某个数据包丢失,可通过SACK报文通知发送方这个丢了,发送方于是重新传丢失的包,而不是全部重发。

6. 总结 

本文到这里就结束啦~~
如果觉得对你有帮助,辛苦友友点个赞哦~

相关文章:

【计算机网络】lab7 TCP协议

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…...

Monorepo设置:新手指南

Monorepo是一种项目代码管理方法&#xff0c;指在单个代码仓库中管理多个项目&#xff0c;有助于简化代码共享、版本控制、构建和部署的复杂性&#xff0c;并提供更好的可重用性和协作性。 简单理解&#xff1a;所有项目都在一个代码仓库中 &#x1f4e6;&#xff0c;但这并不意…...

HTTP 请求与响应的结构

一、引言 在当今数字化的时代&#xff0c;网络通信如同空气一般无处不在&#xff0c;而HTTP协议则是网络世界中最为重要的基石之一。当我们在浏览器中输入一个网址&#xff0c;轻松浏览网页、观看视频、下载文件或是进行在线购物等操作时&#xff0c;背后HTTP协议都在默默地发…...

计科高可用服务器架构实训(防火墙、双机热备,VRRP、MSTP、DHCP、OSPF)

一、项目介绍 需求分析&#xff1a; &#xff08;1&#xff09;总部和分部要求网络拓扑简单&#xff0c;方便维护&#xff0c;网络有扩展和冗余性&#xff1b; &#xff08;2&#xff09;总部分财务部&#xff0c;人事部&#xff0c;工程部&#xff0c;技术部&#xff0c;提供…...

Soildworks的学习【2025/1/12】

右键空白处&#xff0c;点击选项卡&#xff0c;即可看到所有已调用的选项卡&#xff1a; 点击机械小齿轮选项卡&#xff0c;选择文档属性&#xff0c;选择GB国标&#xff1a; 之后点击单位&#xff0c;选择MMGS毫米单位&#xff1a; 窗口右下角有MMGS&#xff0c;这里也可以选择…...

ORACLE-表空间和分区控制

--查询最后更新的统计信息时间 SELECT table_name, last_analyzed FROM dba_tables WHERE table_name 表名; --更新统计信息 -----按分区 BEGIN DBMS_STATS.GATHER_TABLE_STATS( ownname > XI_SF, -- 模式名称 tabname > 表名, -- 表名称 partnam…...

C# 与 Windows API 交互的“秘密武器”:结构体和联合体

一、引言 在 C# 的编程世界里&#xff0c;当我们想要深入挖掘 Windows 系统的底层功能&#xff0c;与 Windows API 打交道时&#xff0c;结构体和联合体就像是两把神奇的钥匙&#x1f511; 它们能够帮助我们精准地操控数据&#xff0c;实现一些高级且强大的功能。就好比搭建一…...

【数字化】华为-用变革的方法确保规划落地

导读&#xff1a;华为在数字化转型过程中&#xff0c;深刻认识到变革的必要性&#xff0c;并采用了一系列有效的方法确保转型规划的有效落地。华为认为&#xff0c;数字化转型不仅仅是技术层面的革新&#xff0c;更是企业运作模式、流程、组织、文化等深层次的变革。数字化转型…...

SpringData-Redis缓存

Spring Framework是领先的全堆栈Java/JEE应用程序框架。它提供了一个轻量级容器和一个通过使用依赖注入、AOP和可移植服务抽象实现的非侵入性编程模型。 NoSQL存储系统为传统RDBMS提供了一种横向可扩展性和速度的替代方案。就实现而言&#xff0c;键值存储代表NoSQL空间中最大…...

大语言模型兵马未动,数据准备粮草先行

​从OpenAI正式发布ChatGPT开始&#xff0c;大型语言模型&#xff08;LLM&#xff09;就变得风靡一时。对业界和吃瓜群众来说&#xff0c;这种技术最大的吸引力来自于理解、解释和生成人类语言的能力&#xff0c;毕竟这曾被认为是人类独有的技能。类似CoPilot这样的工具正在迅速…...

跳表和Mysql联合索引的最左原则和索引下推的优化

文章目录 跳表&#xff08;Skip List&#xff09;关键特性跳表的结构示意图跳表的查询效率为什么 MySQL 不使用跳表而使用 B 树&#xff1f;跳表的实际应用场景 总结 MySQL 联合索引的最左匹配原则最左匹配原则的规则示例&#xff1a;创建联合索引查询示例及索引使用情况设计联…...

Android切换语言不退出App

1.需求 实现用户选择语言&#xff08;未点击下一步&#xff09;&#xff0c;更新当前界面UI&#xff0c;点击下一步后&#xff0c;更新App的语言&#xff0c;并进行保存。 实现目标&#xff1a; 1.设置App的语言&#xff0c;本地进行保存 2.updateResources更新本地语言配置…...

Unity编程与游戏开发-编程与游戏开发的关系

游戏开发是一个复杂的多领域合作过程,涵盖了从创意构思到最终实现的多个方面。在这个过程中,技术、设计与美术三大核心要素相互交织,缺一不可。在游戏开发的过程中,Unity作为一款强大的跨平台游戏引擎,凭借其高效的开发工具和庞大的社区支持,成为了很多游戏开发者的首选工…...

【Git】问题汇总

在push的时候显示 protocol error: bad line length 8192 我在本地创建了一个gogs服务器&#xff0c;现在正在上传代码&#xff0c;但是出现了上述的这个问题。 解决方法 设置本地http.postBuffer&#xff08;待验证&#xff09; 方法一&#xff1a;全局配置 git config --g…...

搭建docker私有化仓库Harbor

Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…...

修改sshd默认配置,提升安全

对于Linux服务器&#xff0c;特别是暴露在公网的服务器&#xff0c;会经常被人扫描、探测和攻击。包括通过ssh访问登录攻击。对此&#xff0c;对默认的sshd配置进行调整&#xff0c;提升安全。 下面以CentOS 7.9为例说明&#xff1a; 一、常见安全措施 以root用户编辑vim /e…...

formik 的使用

礼记有言&#xff1a;独学而无友&#xff0c;则孤陋而寡闻 让我们一起了解更多便捷方法&#xff0c;缩短开发时间去摸鱼&#xff0c;嘿嘿。 框架&#xff1a;react 在写表单的时候&#xff0c;我不太喜欢把验证写的很繁琐&#xff0c;这里讲介绍&#xff0c;验证表单的非常好用…...

【学习笔记】理解深度学习的基础:机器学习

1. 机器学习基础 1.1 机器学习的定义与重要性 定义&#xff1a;深度学习是机器学习的一种特定形式。为了深入理解深度学习&#xff0c;必须牢固掌握机器学习的基本原理。机器学习算法是一种能够从数据中学习的算法&#xff0c;通过经验E在任务T上提高性能度量P&#xff08;Mi…...

Docker 基础知识

背景 传统的linux的环境部署 命令多步骤多安装版本多使用docker的话,一个命令就可以全部搞定安装linux 之前安装过,所以直接使用的开罩进行复制的如果之前配置过静态地址,需要改成IPV4静态地址访问安装docker 参考连接:https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBk…...

pyqt鸟瞰

QApplication‌是Qt框架中的一个类&#xff0c;专门用于管理基于QWidget的图形用户界面&#xff08;GUI&#xff09;应用程序的控制流和主要设置。QApplication类继承自QGuiApplication&#xff0c;提供了许多与GUI相关的功能&#xff0c;如窗口系统集成、事件处理等。 QAppli…...

Linux syslog 运行机制

Busybox的syslogd认识与使用 syslogd 的基本工作原理&#xff1a; syslogd 是一个系统日志守护进程&#xff0c;它接收来自各种进程和系统服务的日志消息&#xff0c;并根据配置将这些消息存储到不同的日志文件中。 syslogd日志记录器由两个守护进程&#xff08;klogd&#x…...

ZYNQ初识10(zynq_7010)UART通信实验

基于bi站正点原子讲解视频&#xff1a; 系统框图&#xff08;基于串口的数据回环&#xff09;如下&#xff1a; 以下&#xff0c;是串口接收端的波形图&#xff0c;系统时钟和波特率时钟不同&#xff0c;为异步时钟&#xff0c;&#xff0c;需要先延时两拍&#xff0c;将时钟同…...

day38 tcp 并发 ,linux下的IO模型----IO多路复用

TCP 并发 由于tcp协议只能实现一对一的通信模式。为了实现一对多&#xff0c;有以下的的处理方式 1. 多进程 开销大 效率低 2. 多线程 创建线程需要耗时 3. 线程池 多线程模型创建线程耗时问题&#xff0c;提前创建 4. IO多路复用 在不创建进程和线程的前提下&#xff0c;对…...

el-date-picker 禁用一个月前、一个月后(当天之后)的时间 datetimerange

文章目录 功能需求今天是 2025-01-09示例1示例2 代码 Vue2 功能需求 时间范围选择器&#xff0c;最大时间选择尺度为一个月。 今天是 2025-01-09 示例1 选择 2025-01-02 日 禁用未来日期&#xff08;2025-01-09之后日期&#xff09; 禁用上月2号&#xff08;31日之前&#…...

ES6的高阶语法特性

一、模板字符串的高级用法 1.1.模板字符串的嵌套 模板字符串的嵌套允许在一个模板字符串内部再嵌入一个或多个模板字符串。这种嵌套结构在处理复杂数据结构或生成具有层级关系的文本时非常有用。 1. 嵌套示例 假设我们有一个包含多个对象的数组&#xff0c;每个对象都有名称、…...

数据在内存的存储

数据类型介绍 前面我们已经学习了基本的内置类型&#xff1a; char //字符数据类型 1字节 打印%c short //短整型 2字节 打印%hd int //整形 4字节 打印%d long long int //长整型 4/8字节 打印%ld l…...

【微服务】面试题 6、分布式事务

分布式事务面试题讲解 一、问题背景与解决方案概述 因微服务项目涉及远程调用可能引发分布式事务问题&#xff0c;需解决。主流解决方案有阿里 Seata 框架&#xff08;含 XA、AT、TCC 模式&#xff09;和 MQ。 二、Seata 框架关键角色 事务协调者&#xff08;TC&#xff09;&…...

VMware中Ubuntu如何连接网络?安排!

一、设置NAT模式 1、关闭Ubuntu虚拟机&#xff1a; 确保Ubuntu已经完全关机&#xff0c;而不是挂起或休眠状态。 2、编辑虚拟网络设置&#xff1a; 在VMware主界面点击“编辑”菜单&#xff0c;选择“虚拟网络编辑器”。 如果需要&#xff0c;选择VMnet8 (NAT模式)并点击“更改…...

最近在盘gitlab.0.先review了一下docker

# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上&#xff0c;实例是别的同事搭建的。最近又又又想了解一下&#xff0c;而且已经盘了一些了&#xff0c;所以写写记录一下。因为这个事儿没太多的进度压力&#xff0c;索性写到哪儿算哪儿&#xff0c;只要是新了解到的…...

TCP封装数据帧

void *send_data(void *arg) //这是一个发送数据的线程 {int sockfd init_tcp_cli("192.168.0.148",50000) //传ip和port&#xff0c;port 50000是因为大概前五万都被其它服务所占用&#xff0c;50000后是私人ipif(sockfd < 0){return NULL;}unsigned char …...

基于Springboot+Vue的仓库管理系统

开发一个基于Spring Boot和Vue的仓库管理系统涉及到前端和后端的开发。本文呢&#xff0c;给出一个简单的开发步骤指南&#xff0c;用于指导初入的新手小白如何开始构建这样一个系统&#xff0c;如果**你想直接学习全部内容&#xff0c;可以直接拉到文末哦。** 开始之前呢给小…...

工厂人员定位管理系统方案(二)人员精确定位系统架构设计,适用于工厂智能管理

哈喽~这里是维小帮&#xff0c;提供多个场所的定位管理方案&#xff0c;如需获取工厂人员定位管理系统解决方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信我们哦~撒花 在上一篇文章中&#xff0c;我们初步探讨了工厂人员定位管理系统的需求背景以及定位方…...

机器学习特征重要性之feature_importances_属性与permutation_importance方法

一、feature_importances_属性 在机器学习中&#xff0c;分类和回归算法的 feature_importances_ 属性用于衡量每个特征对模型预测的重要性。这个属性通常在基于树的算法中使用&#xff0c;通过 feature_importances_ 属性&#xff0c;您可以了解哪些特征对模型的预测最为重要…...

Go学习:多重赋值与匿名变量

目录 1. 变量的多重赋值 1.1 基本语法格式 1.2 交换变量值 2. 匿名变量的使用 1. 变量的多重赋值 1.1 基本语法格式 go语言中&#xff0c;可以将多个赋值语句 合并成 一句&#xff0c;比如&#xff1a; a : 10 b : 20 c : 30//a,b,c三个变量的赋值语句可以…...

解读Linux Bridge中的东西流向与南北流向

解读Linux Bridge中的东西流向与南北流向 在现代云计算和虚拟化环境中&#xff0c;网络流量的管理和优化变得越来越重要。Linux Bridge作为Linux内核提供的一个强大的二层交换机工具&#xff0c;在虚拟化和容器化应用中扮演着至关重要的角色。本文将深入探讨Linux Bridge中的两…...

spring mvn 国际化配置

目录 国际化配置测试测试自定义一个MessageSource类型的beanSpringApplicationUtil工具类MessageUtls工具类配置 国际化原理ResourceBundleMessageSource 国际化配置测试 测试 测试&#xff1a; 自定义一个MessageSource类型的bean import org.springframework.context.Mess…...

Windows下Dll在Unity中使用的一般方式

Windows下Dll在Unity中使用的一般方式 Unity中虽然已经有广泛的库和插件&#xff0c;但是相较于C的库生态而言&#xff0c;还是有一定的差距&#xff1b;因此本篇博文记录Windows下将C函数打包成动态链接库在Unity中使用的一般方法。 环境 Visual Studio 2019 &#xff0c; Uni…...

SQLite PRAGMA

SQLite的PRAGMA命令是一种特殊的命令&#xff0c;用于在SQLite环境中控制各种环境变量和状态标志。PRAGMA值可以被读取&#xff0c;也可以根据需求进行设置【0†source】。 PRAGMA命令的语法格式如下&#xff1a; 要查询当前的PRAGMA值&#xff0c;只需提供该PRAGMA的名字&am…...

Linux:进程控制

1.fork()函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0…...

一些计算机零碎知识随写(25年1月)-1

我原以为世界上有技术的那批人不会那么闲&#xff0c;我错了&#xff0c;被脚本真实了。 今天正隔着画画呢&#xff0c;手机突然弹出几条安全告警通知。 急忙打开服务器&#xff0c;发现问题不简单&#xff0c;直接关服务器重装系统..... 首先&#xff0c;不要认为小网站&…...

spring mvc源码学习笔记之十

前面的文章介绍了用 WebApplicationInitializer 或者 AbstractAnnotationConfigDispatcherServletInitializer 来代替 web.xml 。 我们学 java web 的时候就知道&#xff0c;servlet 容器会自动加载 web.xml。 那么&#xff0c;疑问就来了&#xff0c;WebApplicationInitialize…...

网络安全-安全散列函数,信息摘要SHA-1,MD5原理

安全散列函数 单向散列函数或者安全散列函数之所以重要&#xff0c;不仅在于消息认证(消息摘要。数据指纹)。还有数字签名&#xff08;加强版的消息认证&#xff09;和验证数据的完整性。常见的单向散列函数有MD5和SHA 散列函数的要求 散列函数的目的是文件、消息或者其它数据…...

《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》

《解锁计算机视觉智慧&#xff1a;编程实现图片场景文字描述的开源宝藏》 一、MiniGPT-4&#xff1a;小模型撬动大视觉理解&#xff08;一&#xff09;项目概览&#xff08;二&#xff09;核心亮点&#xff08;三&#xff09;上手体验 二、ClipCap-Chinese&#xff1a;中文场景…...

vue封装axios请求

在vue项目中我们发送请求一般是使用axios 我们可以封装axios来避免冗余代码 首先引入axios npm install axios创建环境配置文件 NODE_ENV development VITE_APP_TITLE dev VITE_APP_BASE_API /test VITE_SERVE "http://127.0.0.1"上面是创建dev配置文件 也可以…...

【前端动效】原生js实现拖拽排课效果

目录 1. 效果展示 2. 效果分析 2.1 关键点 2.2 实现方法 3. 代码实现 3.1 html部分 3.2 css部分 3.3 js部分 3.4 完整代码 4. 总结 1. 效果展示 如图所示&#xff0c;页面左侧有一个包含不同课程&#xff08;如语文、数学等&#xff09;的列表&#xff0c;页面右侧…...

Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。

文章目录 前言1 创建conda环境安装Selenium库2 浏览器驱动下载&#xff08;以Chrome和Edge为例&#xff09;3 基础使用&#xff08;以Chrome为例演示&#xff09;3.1 与浏览器相关的操作3.1.1 打开/关闭浏览器3.1.2 访问指定域名的网页3.1.3 控制浏览器的窗口大小3.1.4 前进/后…...

AI华佗?港中大、深圳大数据研究院提出医疗推理大模型HuatuoGPT-o1

编辑 | 白菜叶 OpenAI o1 的突破凸显了通过增强推理能力来提高自然语言大模型&#xff08;LLM&#xff09;的应用潜力。然而&#xff0c;大多数推理研究都集中在数学任务上&#xff0c;而医学等领域尚未得到充分探索。 医学领域虽然不同于数学&#xff0c;但鉴于医疗保健的高…...

openEuler22.03系统使用Kolla-ansible搭建OpenStack

Kolla-ansible 是一个利用 Ansible 自动化工具来搭建 OpenStack 云平台的开源项目&#xff0c;它通过容器化的方式部署 OpenStack 服务&#xff0c;能够简化安装过程、提高部署效率并增强系统的可维护性。 前置环境准备&#xff1a; 系统:openEuler-22.03-LTS-SP4 配置&…...

uni-app无限级树形组件简单实现

因为项目一些数据需要树形展示&#xff0c;但是官网组件没有。现在简单封装一个组件在app中使用&#xff0c;可以无线嵌套&#xff0c;展开&#xff0c;收缩&#xff0c;获取子节点数据等。 简单效果 组件TreeData <template><view class"tree"><te…...

初学stm32 --- ADC单通道采集

目录 ADC寄存器介绍&#xff08;F1&#xff09; ADC控制寄存器 1(ADC_CR1) ADC控制寄存器 2(ADC_CR2) ADC采样时间寄存器1(ADC_SMPR1) ADC采样时间寄存器2(ADC_SMPR2) ADC规则序列寄存器 1(ADC_SQR1) ADC规则序列寄存器 2(ADC_SQR2) ADC规则序列寄存器 3(ADC_SQR3) AD…...