首页 > 其他分享 >网络须知

网络须知

时间:2024-08-18 23:41:23浏览次数:7  
标签:ACK 0.0 报文 网络 TCP 须知 FIN WAIT

一、网络基础概念

1、如何通过网络实现多台主机之间的通讯

  1. 在两台主机之间需要有传输介质(网线、光纤、无线等)
  2. 在两台主机上面需要有网卡设备
    网卡:全球唯一的地址(MAC)类似家位置
    发送信息时:将二进制(数字信号)信息转换为高低电压(电信号)
    接收信息时:将高低电压(电信号)信息转换为二进制数(数字信号)
  3. 在进行数据传输之前,需要协商网络传输速率
  • 1Byte(字节)=8bit(位)
  • 1KB=1024Byte(字节)
  • 1MB=1024KB
  • 1024MB=1GB
  • 1024GB=1TB

二、网络设备说明介绍

1、什么是交换机

  • 实现一个网络内多台主机之间的通讯

1.1、如何利用交换机实现通讯?

  1. 在数据前面设置目标地址和原地址,目标地址和原地址用mac地址进行标识
  • mac称为物理地址,每块网卡都有的一个标识身份信息的
  • mac地址全球唯一,不能进行修改,mac地址用16进制标识
  1. 在网络通讯初期,会利用广播方式进行发送数据包,在通讯的过程,数据包的发送一定是有去有会的,在一个交换网络中,如果产生了大量广播数据包时会产生广播风暴,影响主机性能,这样的问题称为广播风暴问题

1.2、解决广播风暴问题思路:

  • 减少广播产生数量,将一个大的交换网络切割为几个小的交换网络(局域网,广播域)

1.3、交换机的种类

  • 傻瓜交换机(TP-link/Dlink/水星...)
  • 4口 8口 12口 16口 24口 48口
  • 程控交换机(存储程序控制交换机,配置管理,思科、华为、华三、锐捷、中兴、瑞斯康达)
    image

2、什么是路由器

2.1、基本概念

  1. 实现不同局域网之间主机通讯,可以隔离广播风暴(路由不同的接口连接不同广播域)
  2. 路由类似于现实生活中从A地去往B地可能需要先步行,在坐车,在做飞机才能到达B地,这样的整个过程在网络中对应数据的传递过程就称为路由。因此一个数据信息跨越不同的网段传递到目的地址,就可以把传递数据的过程称为路由,也可以看做每条传递数据的路径。

2.2、实操理解

1)需要有身份标识信息:ip地址
   逻辑地址(可以改变的地址/???) 利用10进制方式进行显示
   IP地址由两部分组成: 交换网络标识信息+主机地址标识信息===网段地址+主机地址
   					 192.16.11 网段 1-254 主机地址
   					 10.0.0   网段  1-254 主机地址
   					 昌平区  网段  xx地址 192.168.11.X
   					 海淀区  网段  xx地址 192.168.10.X
   内网卡---交换机   192.168.11.0/24(192.168.11.1~192.168.11.254)
   外网卡---运营商   IP	: 221.218.210.53

   查公网ip的方法:
   windows,打开浏览器,访问百度,搜IP即可
   linux:curl ifconfig.me

高级路由器还有上网行为管理器和防火墙功能
论坛:鸿鹄论坛(网络工程师)

2)路由实现数据传输通讯时,会根据路由表信息进行数据包路由
   实现不同网段之间通讯需要经过一条必经之路,这条路称为网关

3) 查看路由条目信息方法
[root@qls ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@qls ~]# netstat  -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG        0 0          0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
172.16.1.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1

第一列:所能去往网段的信息 
第二列:0.0.0.0  通过局域网即可到达
       10.0.0.254 想去往其他网段的必经节点,称为网关
第三列:子网掩码(告诉网段内可以容纳多少主机)
最后一列:到达指定目标,通过哪一个接口出去

2.3、路由分类:

  • 静态路由:需要自己进行配置,稍微麻烦一点,适用于几个人的应用场景
  • 动态理由:系统自动匹配,简单快捷,适用于人数较多的情况

三、网络层次结构

1、网络拓扑

1.1、网络层次结构:

  • 核心层:主要部署路由器设备,用于连接外层线路,还要具备冗余能力
  • 汇聚层:主要部署三层交换机设备,用于相应安全访问控制,进行链路汇聚
  • 接入层:主要部署二层交换涉笔,用于终端设备接入
    image
  • 一层交换机:只支持物理层协议
  • 二层交换机:支持物理层和数据链路层协议
  • 三层交换机:支持物理层,数据链路层及网络层协议

2、网络类型

  • 局域网:本地私有的一个网络范围,规模较大的局域网,也被称为园区网,例如:教师、家庭等
  • 公网:全球任意一个可以上网的地方都可以直接访问到
  • 城域网:网络的覆盖面积达到了一个城市,就可以称为城域网
  • 广域网:覆盖面积,达到了全球或全国,称为广域网,全球最大的广域网是internet互联网

3、网络层次模型(OSI 7层模型)

  • 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

3.1、应用层

  1. 为应用软件提供接口,是应用程序能够使用网络服务,简单说就是产生数据/信息,主要就是提供应用程序可以接入网络接口,并根据程序的不同对应不同的接口协议
  2. 常见应用层协议:http(80)、ftp(20/21)、smtp(25)、pop3(110)、telnet(23)、dns(53)

3.2、表示层

  1. 数据的解码和编码
  2. 数据的加密和解密
  3. 数据的压缩和解压缩

3.3、会话层

  1. 作用:建立、维护、管理应用程序直接到会话
  2. 功能:对话控制、同步

3.4、传输层

  1. 作用:负责建立端与端之间的传输
  2. 功能:服务点编制、分段与重组、连接控制、流量控制、差错控制
  3. 负责网络总端到端的连接(TCP、UDP)

3.5、网络层:

  1. 作用:负责将分组数据从源端传输到目的端
  2. 功能:为网络设备提供逻辑地址,进行路由选择,分组转发
  3. 网络层主要作用:路由和寻址,主要接触的是IP协议,即IP地址

3.6、数据链路层:

  1. 作用:在不可靠的物理链路上,提供可靠的数据传输服务,把帧从一跳(结点)移动到另一跳(结点)
  2. 功能:组帧、物理编址、流量控制、差错控制、接入控制

3.7、物理层:

  1. 作用:负责吧逐个的比特从一跳(结点)移动到另一跳(结点)
  2. 功能:
  • 定义接口和媒体的物理特征
  • 定义比特的标识,数据传输速率、信号的传输模式(单工、半双工、全双工)
  • 定义网络物理拓扑(网状、星型、环形、总线型等拓扑)

四、数据包封装与解封装

1、封装

image

  • 封装过程:由上至下进行封装
  1. 应用层、表示层、会话层、PDU 数据
  2. 传输层:分段 TCP协议
  3. 网络层:打包 TCP+IP地址
  4. 数据链路层:成帧 TCP协议+IP协议+MAC地址
  5. 物理层:二进制数据转换 数据以比特形式传输

2、解封装

image

  • 拆包过程:由下至上进行拆包
  1. 物理层:电信号转换为二进制数据,并将其送至数据链路层
  2. 数据链路层:查看MAC地址
  3. 网络层:查看对应IP,若是则拆掉IP头部,继续传输
  4. 传输层:查看TCP头部,判断应该去往哪里,然后重组数据,传输到应用层
  5. 应用层:数据恢复

五、TCP/IP模型(4层模型)

1、OSI 7层模型与 TCP/IP 模型(DOD)对应关系

image

2、TCP/IP 协议簇相关协议汇总

image

3、DNS解析过程:

3.1、什么是域名?

举个例子:https://www.baidu.com,这个其实并不是域名,其中https是指协议,去掉https后,www.baidu.com.(注意最后面有一个点号)才是真正的域名。

每个域名的最后面都有一个点号“.” 表示根域名,为了方便在实际使用的时候被省略

根域名的下一级就是顶级域名,.com也就是顶级域名,常见的顶级域名后缀有.com、.cn、.net、.org等,这些都是固定到,用户不能自己修改,只能选择

顶级域名的下一级又是权威域名,比如baidu.com中的.baidu,这个权威域名就是我们自己可以注册的域名

顶级域名下就是主机名了,www是指主机名,这个是我们可以自己定义的,通常在http服务器如nginx中可以修改

http https 协议
.com .cn .org .net. ...	顶级域名
baidu sina weibo linuxnc	权威域名
www.baidu.com	--->显示百度的主页
news.baidu.com --->显示的百度的新闻页面

www.baidu.com的www  news.baidu.com 的news 表示主机名 表示不同的业务 不同的页面

.com.
.cn.
.org.

.是根域名

3.2、域名解析过程:

1、浏览器输入www.baidu.com查询浏览器缓存,有则返回ip;没有则查询本地的HOSTS
2、如果HOSTS有则返回IP,如果没有继续查询本地的DNS
3、本地DNS一般是我们自己配置的比如233.5.5.5(阿里云),查询本地DNS是否有对应的IP,如果有则返回,没有则查询.根服务器
4、根服务器不存储域名解析,会给LDNS返回顶级域.com服务器的IP地址
5、LDNS重新请求.com域名服务器 .com不存在域名解析 .com会返回权威域名服务器的ip地址给LDNS
6、LDNS重新请求baidu.com权威域名解析服务器,权威域名服务器就是我们自己配置的A记录解析,将A记录对应的IP地址返回给LDNS
7、LDNS拿到后自己缓存一份,返回给浏览器一份
8、浏览器和拿到的百度服务器IP地址建立联系


1、浏览器缓存--->本地HOSTS--->本地DNS
2、本地DNS--->根 根返回 顶级域.com
3、本地DNS--->顶级域 顶级域返回权威域
4、本地DNS--->权威域 权威域返回 A记录解析对应的服务器IP地址
5、浏览器--->百度IP建立连接

4、TCP三次握手

image

4.1、剖析:

  1. 客户端A向服务端B发送一个带有SYN报文请求建立连接并发送第一个随机seq序列号
  2. 服务端B接收到客户端A发送的报文和序列号之后,回复给客户端A一个ACK报文表示接收,一个SYN报文表示请求建立连接,一个seq=y的随机序列,ack=x+1下次你应该给我发送的序列
  3. 客户端A向服务端B发送一个ACK表示我收到了,发送第二个数据包seq=x+1序列号,ack=y+1表示你下次应该给我发送的序列号

4.2、为什么要三次握手?

  1. 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误;即防止服务器的一直等待而浪费资源
  2. 数据信息分组之后,第一段数据信息还没到,而其他三段数据信息已经来了,长期等待第一段数据信息会造成服务器资源浪费

5、TCP四次挥手

image

5.1、剖析:

  1. 首先客户端A向服务端B发送一个FIN断开请求
  2. 服务端B向客户端A发送一个ACK报文表示已经接收
  3. 第二次服务端B再向客户端A发送一个FIN断开请求
  4. 客户端A向服务端B发送ACK报文表示接收
  5. 分手

5.2、为什么要四次分手?

那四次分手又是为何呢?TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,主机1收到主机2的FIN报文段时,回复ACK,表示知道主机2也没有数据传输了,之后彼此就会愉快的中断这次TCP连接。

6、TCP协议的11种状态集转换

image

6.1、TCP的11种状态机表示含义

客户端发送FIN给服务端-->ESTABLISHED-->FIN_WAIT1第一次等待
服务端收到回复ACK: ESTABLISHED--->CLOSED_WAIT关闭等待
收到后客户端:FIN_WAIT1-->FIN_WAIT2第二次等待
服务端继续回复客户端FIN: CLISED_WAIT--->LAST_ACK
客户端回复确认ACK:FIN_WAIT2-->TIME_WAIT时间等待-->CLOSED状态
最后服务端收到确认ACK: LAST_ACK---> CLOSED


各个状态的意义如下: 

CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。  

LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。 

SYN_RCVD :表示服务器接收到了来自客户端请求连接的SYN报文。在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat很难看到这种状态,除非故意写一个监测程序,将三次TCP握手过程中最后一个ACK报文不予发送。当TCP连接处于此状态时,再收到客户端的ACK报文,它就会进入到ESTABLISHED状态。 

SYN_SENT :这个状态与SYN_RCVD状态相呼应,当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文,然后随即进入到SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。

ESTABLISHED :表示TCP连接已经成功建立。 

FIN_WAIT_1 :这个状态得好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2两种状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态。当然在实际的正常情况下,无论对方处于任何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态有时仍可以用netstat看到。

FIN_WAIT_2 :上面已经解释了这种状态的由来,实际上FIN_WAIT_2状态下的SOCKET表示半连接,即有一方调用close()主动要求关闭连接。注意:FIN_WAIT_2是没有超时的(不像TIME_WAIT状态),这种状态下如果对方不关闭(不配合完成4次挥手过程),那这个FIN_WAIT_2状态将一直保持到系统重启,越来越多的FIN_WAIT_2状态会导致内核崩溃。

TIME_WAIT :表示收到了对方的FIN报文,并发送出了ACK报文。TIME_WAIT状态下的TCP连接会等待2*MSL(Max Segment Lifetime,最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,但BSD传统实现采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值),然后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(这种情况应该就是四次挥手变成三次挥手的那种情况)

CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。正常情况下,当一方发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情况,这是就会出现CLOSING状态,表示双方都正在关闭SOCKET连接。

CLOSE_WAIT :表示正在等待关闭。怎么理解呢?当对方close()一个SOCKET后发送FIN报文给自己,你的系统毫无疑问地将会回应一个ACK报文给对方,此时TCP连接则进入到CLOSE_WAIT状态。接下来呢,你需要检查自己是否还有数据要发送给对方,如果没有的话,那你也就可以close()这个SOCKET并发送FIN报文给对方,即关闭自己到对方这个方向的连接。有数据的话则看程序的策略,继续发送或丢弃。简单地说,当你处于CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。

LAST_ACK :当被动关闭的一方在发送FIN报文后,等待对方的ACK报文的时候,就处于LAST_ACK状态。当收到对方的ACK报文后,也就可以进入到CLOSED可用状态了。

六、抓包方式

1、Linux抓包命令tcpdump是一个抓包软件,用于抓取互联网上传输的数据包

  • tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
  • tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮您其过滤掉无用的信息

2、常用选项及其案例

[root@web01 ~]#yum -y install tcpdump

-i		# 监听哪个网卡
-n		# 不把ip解析成主机名
-nn		# 不把端口解析成应用层协议
-C		# 指定抓包的数量
-S		# 不把随机序列和确认序列解析成绝对值
-w		# 将流量保存到文件中,文件中的信息时无法直接查看的
-r		# 读取文件中的内容
-v		# 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv		# 输出详细的报文信息
-nnvvi eth0


# 实例
1、默认启动
tcpdump -vv		# 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包

2、过滤主机
tcpdump -i eth1 host 192.168.1.1	# 抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据
tcpdump -i eth1 src host 192.168.1.1	# 指定源地址,192.168.1.1
tcpdump -i eth1 dst host 192.168.1.1	# 指定目的地址,192.168.1.1

3、过滤端口
tcpdump -i eth1 port 80		# 抓取所有经过eth1,目的或源端口是80的网络数据
tcpdump -i eth1 src port 80		# 指定源端口
tcpdump -i eth1 dst port 80		# 指定目的端口

4、协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
# 抓tcp某端口的数据包
tcpdump -i eth0 tcp port 21 -nn

5、常用表达式
非:! or "not"(去掉双引号)
且:&& or "and"
或:|| or "or"
# 抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数
tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
#抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据
tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

七、Linux常用网络命令

1、nc

  • nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
#常用选项
-l		#用于指定nc将处于侦听模式。
-u		#指定nc使用UDP协议,默认为TCP
-v		#输出交互或出错信息,新手调试时尤为有用
-w		#超时秒数,后面跟数字 
-z		#表示zero,表示扫描时不发送任何数据

2、nmap

  • Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。
-p			#指定端口号
-p22		#单个端口
-p22,80		#多个端口
-p1-1000	#1到1000之间的端口

3、netstat

  • 打印网络连接、路由表、tcp 11种状态
#常用选项
-l		#只显示监听套接字。
-n		#不做名字解析
-t		#显示tcp端口
-u		#显示udp端口
-p		#显示pid和程序名字
-r		#显示路由表
-a		#显示所有的套接字

标签:ACK,0.0,报文,网络,TCP,须知,FIN,WAIT
From: https://www.cnblogs.com/9Dusk/p/18366355

相关文章

  • (计算机网络)数据链路层
    目录一.基本概述二.基本术语三.基本功能 四.CRC差错检验五.点对点协议六.PPP帧格式七.以太网介绍一.基本概述结点:可以相当于一个实体。能够具备接收数据,发送数据的实体物理层不关心介质问题,发送端和接收端数据不一致(数据传输错误)物理层和数据链路层都指的是一......
  • vue3 - 详细实现内网使用离线百度地图功能,在vue3中无需网络离线使用百度地图相关功能,
    效果图在vue3、nuxt3项目开发中,完成内网离线使用百度地图详细教程,让vue3网站无需网络就能加载百度地图及相关功能,完整的百度地图离线使用及地图瓦片的下载教程、更新教程等,vue3百度地图内网离线使用显示地图及各种功能,无论js/ts语法都可以使用,详解百度地图离线加载机制及整......
  • 无网卡Ubuntu通过网线有线接入Windows主机子网,以太网子网显示“未识别的网络”,且无Int
    因为工作需要,开始在Ubuntu主机上部署CAPEv2沙箱草单的是,我的Ubuntu主机没有网卡。于是选择通过一根网线将Ubuntu与另一台Windows主机相连,使Ubuntu成为Windows的子网从而可以上网首先常规操作:控制面板→网络和Internet→网络和共享中心→更改适配器设置,进入如下界面右键WLAN→......
  • 网络性能优化
    网络性能优化是确保网络稳定性、速度和可靠性的关键步骤。优化过程通常包括诊断问题、识别瓶颈以及实施具体的解决方案。以下是关于如何进行网络性能优化的详细指南:一、问题诊断网络性能监控网络流量分析工具:使用Wireshark、NetFlow、Ntop等工具监控网络流量,了解数据包......
  • 每天五分钟计算机视觉:搭建人脸识别的Siamese深度神经网络模型
    本文重点前面的一篇文章中介绍了关于一次学习的问题,解决一次学习问题的关键在于学习到一个函数d,这个d可以计算出两张图片中的人脸是不是同一个人。那么我们需要搭建什么样的神经网络才可以让模型学习出这样的函数d呢?本文我们介绍一下Siamese神经网络结构,它可以帮助我们解决这......
  • 026、Vue3+TypeScript基础,使用async和await来异步读取axios的网络图片
    01、App.vue代码如下:<template><divclass="app"><h2>App.Vue</h2><Person/></div></template><scriptlang="ts"setupname="App">//JS或TSimportPersonfrom'./......
  • 图数据库在社交网络分析中的应用
    图数据库:解锁社交网络分析的新维度在这个信息爆炸的时代,社交网络已经成为我们日常生活中不可或缺的一部分。从微信到微博,从LinkedIn到小红书,这些平台连接着数十亿用户,每时每刻都在产生海量的数据。但是,你有没有想过,这些复杂的社交关系是如何被存储和分析的呢?今天,让我们一......
  • 序列建模之循环和递归网络 - 递归神经网络篇
    序言在序列建模的广阔领域中,递归神经网络(Recursive Neural Network, RNN\text{RecursiveNeuralNetwork,RNN}Recursive Neural Network, RNN),注意此处的......
  • 698java jsp SSM网络办公系统共享文件会议信息工作日程管理(源码+文档+运行视频+讲解视
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • PyTorch--双向长短期记忆网络(BiRNN)在MNIST数据集上的实现与分析
    文章目录前言完整代码代码解析1.导入库2.设备配置3.超参数设置4.数据集加载5.数据加载器6.定义BiRNN模型7.实例化模型并移动到设备8.损失函数和优化器9.训练模型10.测试模型11.保存模型常用函数前言本代码实现了一个基于PyTorch的双向长短期记忆网络(BiRNN),用于对MNI......