网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全------全栈前沿技术持续深入学习

专栏跑道二

➡️24 Network Security -LJS

专栏跑道三

➡️MYSQL REDIS Advance operation

专栏跑道四

➡️HCIP;H3C-SE;CCIP------LJS[华为、华三、思科高级网络]

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]

专栏跑道六

➡️**数据结构与算法[考研+实际工作应用+C程序设计]**

专栏跑道七

➡️**RHCSA-LJS[Linux初级及进阶骚技能]**

上节回顾https://blog.csdn.net/weixin_74796680/article/details/143267333?spm=1001.2014.3001.5501

目录

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

[以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]](#以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现])

专栏跑道一

➡️网络空间安全------全栈前沿技术持续深入学习

专栏跑道二

[➡️ 24 Network Security -LJS](#➡️ 24 Network Security -LJS)

专栏跑道三

[➡️ MYSQL REDIS Advance operation](#➡️ MYSQL REDIS Advance operation)

专栏跑道四

➡️HCIP;H3C-SE;CCIP------LJS[华为、华三、思科高级网络]

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]​编辑​

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾https://blog.csdn.net/weixin_74796680/article/details/143267333?spm=1001.2014.3001.5501

[WireShark 抓包及常用协议分析](#WireShark 抓包及常用协议分析)

1.常见协议包

​编辑

​编辑

选择我们的网卡

​编辑

双击网卡之后就会自动进行抓包

​编辑

1.2混杂模式介绍

关闭和开启混杂模式方法

​编辑

[在程序的工具栏中点击" 捕获 "---》" 选项 "](#在程序的工具栏中点击“ 捕获 ”---》“ 选项 ”)

​编辑

[在选项设置界面中的" 输出 "设置栏的左下方勾选" 在所有接口上使用混杂模式 "](#在选项设置界面中的“ 输出 ”设置栏的左下方勾选“ 在所有接口上使用混杂模式 ”)

​编辑

这样就开启了。默认就是开启混杂模式。

[1.3WireShark 的过滤器使用](#1.3WireShark 的过滤器使用)

​编辑

下面我们打开浏览器访问以下百度。

​编辑

访问完成后点击停止抓包即可,我们不需要抓太多的数据包。

​编辑

可以看到有很多数据包但是我们怎么才能找到对应的数据包类型呢?

​编辑

[示例1:使用过滤器筛选 TCP 的数据包](#示例1:使用过滤器筛选 TCP 的数据包)

注意:

​编辑

[示例2:使用过滤器筛选 arp 的数据包](#示例2:使用过滤器筛选 arp 的数据包)

​编辑

[示例3:使用过滤器筛选 udp 的数据包](#示例3:使用过滤器筛选 udp 的数据包)

扩展:

​编辑

[示例4:使用过滤器筛选 http 的数据包](#示例4:使用过滤器筛选 http 的数据包)

[示例5:使用过滤器筛选 dns 的数据包](#示例5:使用过滤器筛选 dns 的数据包)

[示例6:筛选源地址是 192.168.1.53 或目的地址是 192.168.1.1](#示例6:筛选源地址是 192.168.1.53 或目的地址是 192.168.1.1)

[在终端 ping 192.168.1.1​编辑](#在终端 ping 192.168.1.1编辑)

然后修改筛选器条件为:

​编辑

and

​编辑

​编辑

[2.实战:使用 WireShark 对常用协议抓包并分析原理](#2.实战:使用 WireShark 对常用协议抓包并分析原理)

[2.1常用协议分析-ARP 协议](#2.1常用协议分析-ARP 协议)

[开始抓包---过滤 arp](#开始抓包---过滤 arp)

[使用 nmap 来基于 ARP 协议进行扫描](#使用 nmap 来基于 ARP 协议进行扫描)

[查看 Address Resolution Protocol (request) ARP 请求包内容:](#查看 Address Resolution Protocol (request) ARP 请求包内容:)

总结:

[2.2常用协议分析-ICMP 协议](#2.2常用协议分析-ICMP 协议)

打开一个终端

[先看请求包的内容我们可以看到这是个 4 层的协议包](#先看请求包的内容我们可以看到这是个 4 层的协议包)

[下面开始分析 ICMP 协议包:](#下面开始分析 ICMP 协议包:)

[ICMP 协议分析请求包](#ICMP 协议分析请求包)

​编辑

[ICMP 协议分析应答包](#ICMP 协议分析应答包)

​编辑

工作过程:

[本机发送一个 ICMP Echo Request 的包](#本机发送一个 ICMP Echo Request 的包)

[接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令](#接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令)

​编辑

[2.3常用协议分析-TCP 协议](#2.3常用协议分析-TCP 协议)

[首先是清空数据包然后筛选 tcp 开始抓包](#首先是清空数据包然后筛选 tcp 开始抓包)

​编辑

[模拟一下 tcp 会话建立,那最简单的方式是什么呢?](#模拟一下 tcp 会话建立,那最简单的方式是什么呢?)

[我们通过 Xshell 远程连接 Kali Linux 就会捕获到完整的 TCP3 次握手的链接。](#我们通过 Xshell 远程连接 Kali Linux 就会捕获到完整的 TCP3 次握手的链接。)

​编辑

​编辑

[查看 TCP 协议:](#查看 TCP 协议:)

[先来看第一个数据包 SYN 数据包](#先来看第一个数据包 SYN 数据包)

​编辑

打开标志位的详细信息

​编辑

分析第二个数据包

​编辑

[Flags 位信息](#Flags 位信息)

​编辑

​编辑

分析第三个数据包​编辑

这里三次握手过程就结束了。

​编辑

生成一个图表来观察数据交互的过程

​编辑

全工程分析如下:

[在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。](#在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。)

[第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态](#第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态)

[第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。](#第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。)

[第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。](#第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。)

[第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。](#第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。)

[2.4常用协议分析-HTTP 协议](#2.4常用协议分析-HTTP 协议)

打开一个终端输入下面命

​编辑

cur介绍

[可以看到我们抓到了 TCP 的 3 次握手 4 次断开](#可以看到我们抓到了 TCP 的 3 次握手 4 次断开)

​编辑

[第 4 个和第 6 个是我们的 HTTP 数据包](#第 4 个和第 6 个是我们的 HTTP 数据包)

​编辑

完整过程分析:

[第一步:我们我们发送了一个 HTTP 的 HEAD 请求](#第一步:我们我们发送了一个 HTTP 的 HEAD 请求)

[第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认](#第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认)

[第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常](#第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常)

[第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认](#第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认)

[发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。](#发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。)

​编辑

[3.实战:WireShark 抓包解决服务器被黑上不了网](#3.实战:WireShark 抓包解决服务器被黑上不了网)

拓展补充:

进行测试

实战抓包分析数据包

[开启抓包,过滤 icmp 协议](#开启抓包,过滤 icmp 协议)

[然后回到 WireShark 中查看数据包](#然后回到 WireShark 中查看数据包)

[如果把 TTL 值修改成 2 会有什么效果呢?](#如果把 TTL 值修改成 2 会有什么效果呢?)

恢复系统内核参数

[默认系统是没有安装 MTR 工具的我们手动安装一下](#默认系统是没有安装 MTR 工具的我们手动安装一下)

[示例:检测到达 xuegod.cn 所有节点的通信质量](#示例:检测到达 xuegod.cn 所有节点的通信质量)

[可以看到从我当前主机到目标主机[xuegod.cn ]之间经过 12 跳。](#可以看到从我当前主机到目标主机[xuegod.cn ]之间经过 12 跳。)


WireShark 抓包及常用协议分析

1.常见协议包

可能会产生一个报错信息,是不建议我们使用 root 用户运行。我们直接点击 OK 就行,这个报错信息影响我们任何的使用。

选择我们的网卡

双击网卡之后就会自动进行抓包

1.2混杂模式介绍

  • 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证 MAC 地址。
  • 普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
  • 一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。

关闭和开启混杂模式方法

  • 关闭和开启混杂模式前,需要停止当前抓包。如下,停止捕获。

在程序的工具栏中点击" 捕获 "---》" 选项 "

在选项设置界面中的" 输出 "设置栏的左下方勾选" 在所有接口上使用混杂模式 "

这样就开启了。默认就是开启混杂模式。

1.3WireShark 的过滤器使用

  • 我们开启混淆模式来做一下感受,我们再次捕获---在所有接口上使用混杂模式就可以直接进行抓包了

下面我们打开浏览器访问以下百度。

访问完成后点击停止抓包即可,我们不需要抓太多的数据包。

可以看到有很多数据包但是我们怎么才能找到对应的数据包类型呢?

  • 这里就是我们的过滤器,我可以根据自己的条件筛选自己想要的数据包

示例1:使用过滤器筛选 TCP 的数据包

注意:
  • 筛选条件我们都使用小写就好了,大写的话会不识别。

示例2:使用过滤器筛选 arp 的数据包

示例3:使用过滤器筛选 udp 的数据包

  • 我们使用过滤器输入"udp"以筛选出 udp 报文。但是为什么输入 udp 之后出现那么多种协议呢?

  • 原因就是 oicq 以及 dns 都是基于 udp 的传输层之上的协议

  • oicq补充:

    OICQ 是 "Open ICQ" 的缩写,最初是由中国的腾讯公司开发的一种即时通讯协议。它的设计灵感来自于 ICQ(一个早期的即时通讯软件)。OICQ 主要用于提供即时消息、文件传输和在线状态等功能。

    OICQ 使用 UDP 作为传输层协议之一,这使得它在数据传输上具有低延迟和高效性,适合即时通讯应用。尽管 OICQ 的早期版本与 ICQ 相似,但随着时间的推移,它逐渐演变成了后来的 QQ(腾讯 QQ),成为一种广泛使用的社交平台。

扩展:
  • 客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。
  • 不用经过三次握手,这样 DNS 服务器负载更低,响应更快。
  • 理论上说,客户端也可以指定向 DNS 服务器
  • 查询时用 TCP,但事实上,很多 DNS 服务器进行配置的时候,仅支持 UDP 查询包。

示例4:使用过滤器筛选 http 的数据包

示例5:使用过滤器筛选 dns 的数据包

其实不仅可以对协议类型进行筛选,我们还有跟多的筛选条件,比如源地址目的地址等等。。。

示例6:筛选源地址是 192.168.1.53 或目的地址是 192.168.1.1

在终端 ping 192.168.1.1
然后修改筛选器条件为:
bash 复制代码
ip.src_host == 192.168.1.53 or ip.dst_host == 192.168.1.1

ip.src_host == 192.168.1.53 表示源 IP 地址
ip.dst_host == 192.168.1.1 表示目的地址
  • 中间用 or 进行了拼接,表示或 当然我们也可以使用 and 表示与,or 表示满足左右其中一个条
  • 件就会显示符合条件的数据包,and 表示左右 2 个条件都满足才会显示。
and

2.实战:使用 WireShark 对常用协议抓包并分析原理

  • 协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。

2.1常用协议分析-ARP 协议

  • 地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。
  • ARP 是通过网络地址来定位 MAC 地址。

开始抓包---过滤 arp

使用 nmap 来基于 ARP 协议进行扫描

bash 复制代码
root@xuegod53:~# nmap -sn 192.168.1.1

看一下我们抓取到的数据包并分析第一个请求包

查看 Address Resolution Protocol (request) ARP 请求包内容:

bash 复制代码
Address Resolution Protocol (request) #ARP 地址解析协议 request 表示请求包
Hardware type: Ethernet (1) #硬件类型
Protocol type: IPv4 ( 0x0800 ) #协议类型
Hardware size: 6 #硬件地址
Protocol size: 4 #协议长度
Opcode:_ request ( 1 ) #操作码,该值为 1 表示 ARP 请求包
Sender MAC address: Vmware_ 96:67:52 (00:0c:29:8b:2b:b8) #源 MAC 地址
Sender IP address: 192.168.1.53 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00: 00: 00 :00: 00:00) #目标 MAC 地址
Target IP address: 192.168.1.1 #目标 IP 地址


*

bash 复制代码
Address Resolution Protocol (reply) #ARP 地址解析协议 reply 表示回复包
Hardware type: Ethernet (1) #硬件类型
Protocol type: IPv4 ( 0x0800 ) #协议类型
Hardware size: 6 #硬件地址
Protocol size: 4 #协议长度
Opcode:_ reply ( 2 ) #操作码,该值为 2 表示 ARP 回复包
Sender MAC address: XXXXXXXXXXXX (a4:56:02:3b:4b:03) #源 MAC 地址
Sender IP address: 192.168.1.1 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00:0c:29:8b:2b:b8) #目标 MAC 地址
Target IP address: 192.168.1.53 #目标 IP 地址

总结:

  • 可以看到到应答包补全了自己的 MAC 地址,目的地址和源地址做了替换
  • 我们再来看两个数据包的请求和过程
bash 复制代码
192.168.1.53 广播:谁有 192.168.1.1 的 MAC 地址?

192.168.1.1 应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx

2.2常用协议分析-ICMP 协议

  • 把之前的数据包清空掉然后筛选 ICMP 协议的数据包

打开一个终端

bash 复制代码
root@xuegod53:~# ping xuegod.cn -c 1
  • 只发送一个 ping 包,方便我们分析发送完之后停止抓包即可。

先看请求包的内容我们可以看到这是个 4 层的协议包

下面开始分析 ICMP 协议包:

ICMP 协议分析请求包
ICMP 协议分析应答包
工作过程:
本机发送一个 ICMP Echo Request 的包
接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令

2.3常用协议分析-TCP 协议

首先是清空数据包然后筛选 tcp 开始抓包
模拟一下 tcp 会话建立,那最简单的方式是什么呢?
我们通过 Xshell 远程连接 Kali Linux 就会捕获到完整的 TCP3 次握手的链接。
  • 抓完数据包之后我们就停止抓包,接下来我们开始分析 TCP 的数据包

  • TCP 协议最核心的概念无非就是 3 次握手 4 次断开,我们先讲 TCP 的 3 次握手

查看 TCP 协议:
先来看第一个数据包 SYN 数据包
打开标志位的详细信息

从以上信息就可以看出这是一个 SYN 数据包,SYN=1 表示发送一个链接请求。这时 Seq 和
ACK 都是 0

分析第二个数据包
Flags 位信息
  • 可以看到服务端收到 SYN 连接请求返回的数据包 SYN=1,ACK=1 表示回应第一个 SYN 数据包。
分析第三个数据包

这里三次握手过程就结束了。

生成一个图表来观察数据交互的过程

全工程分析如下:
在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。
第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态
第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。
第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。
第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

2.4常用协议分析-HTTP 协议

  • 还是筛选 TCP 协议因为 HTTP 是 TCP 的上层协议,所以我们过滤 TCP 的数据会包含 HTTP 协 议的数据包

打开一个终端输入下面命

bash 复制代码
root@xuegod53:~# curl -I baidu.com

cur介绍

  • 是一个在命令行下工作的文件传输工具,我们这里用来发送 http 请求
  • -I 大写的 i 表示仅返回头部信息。

可以看到我们抓到了 TCP 的 3 次握手 4 次断开

第 4 个和第 6 个是我们的 HTTP 数据包
完整过程分析:
第一步:我们我们发送了一个 HTTP 的 HEAD 请求
第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认
第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常
第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认
发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。

3.实战:WireShark 抓包解决服务器被黑上不了网

场景:服务器被黑上不了网,可以 ping 通网关,但是不能上网。
模拟场景
修改主机 TTL 值为 1,下面的方式是我们临时修改内核参数。

bash 复制代码
root@xuegod53:~# echo "1" > /proc/sys/net/ipv4/ip_default_ttl

拓展补充:

  • TTL : 数据报文的生存周期。
  • 默认 linux 操作系统值:64,每经过一个路由节点,TTL 值减 1。TTL 值为 0 时,说明目标地址不 可达并返回:Time to live exceeded
  • 作用: 防止数据包,无限制在公网中转发。

进行测试

bash 复制代码
root@xuegod53:~# ping 192.168.1.1 -c 1
bash 复制代码
root@xuegod53:~# ping xuegod.cn -c 1
  • 可以看到提示我们 Time to live exceeded 这表示超过生存时间,
  • 我们判断和目标之间经过多少个网络设备是根据目标返回给我们的 TTL 值来判断的,因为我们发送 的数据包是看不到的。

实战抓包分析数据包

开启抓包,过滤 icmp 协议

bash 复制代码
root@xuegod53:~# ping xuegod.cn -c 1

然后回到 WireShark 中查看数据包

  • 可以看到第一个包是发送了一个 ping 请求包 ttl=1
  • 然后呢我们收到了 192.168.1.1 返回给我们的数据包告诉我们超过数据包生存时间,数据包被丢

如果把 TTL 值修改成 2 会有什么效果呢?

bash 复制代码
root@xuegod53:~# echo "2" > /proc/sys/net/ipv4/ip_default_ttl

root@xuegod53:~# ping xuegod.cn -c 1
  • 对比数据包发现返回我们数据包被丢弃的源地址变成了 123.115.0.1,这证明了数据包在网络中已经到达了下一个网络设备才被丢弃
  • 由此我们还判断出我们的运营商网关地址为 123.115.0.1 但是我们并没有到达目标主机。

恢复系统内核参数

bash 复制代码
root@xuegod53:~# echo "64" > /proc/sys/net/ipv4/ip_default_ttl

root@xuegod53:~# ping xuegod.cn -c 1
  • 目标返回给我们的 TTL 值为 52,这表示我们的 TTL 值需要大于 64-52=12 才可以访问 xuegod.cn
  • MTR 可以检测我们到达目标网络之间的所有网络设备的网络质量,

默认系统是没有安装 MTR 工具的我们手动安装一下

bash 复制代码
root@xuegod53:~# apt install -y mtr
示例:检测到达 xuegod.cn 所有节点的通信质量
bash 复制代码
root@xuegod53:~# mtr xuegod.cn
可以看到从我当前主机到目标主机[xuegod.cn ]之间经过 12 跳。
相关推荐
数据与后端架构提升之路1 小时前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
一行11 小时前
电脑蓝屏debug学习
学习·电脑
星LZX1 小时前
WireShark入门学习笔记
笔记·学习·wireshark
阑梦清川1 小时前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展
qq_433099401 小时前
Isaac Gym学习笔记——概述
学习
秃头佛爷3 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
幺零九零零5 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络
dayouziei5 小时前
java的类加载机制的学习
java·学习
dsywws9 小时前
Linux学习笔记之vim入门
linux·笔记·学习
晨曦_子画9 小时前
3种最难学习和最容易学习的 3 种编程语言
学习