FPGA开发中的网络协议扫盲
最近两天在进行FPGA SOC的开发和CNN加速器的初步学习,遇到了很多概念性的问题,在网上搜集资料加以理解后我打算整理几个博客,总结一下这些问题的答案,这一篇主要总结关于网络协议的内容。
网络协议篇
我在使用Finalshell远程连接Linux主机时遇到了ssh和ftp这两种协议,在用git往GitHub进行推送时遇到了ssh和https这两种协议,在做FPGA以太网实验中又遇到了DNS协议,这么多协议属实让我晕头转向…
因为我本身不是计科出身,没有学过计算机网络,对这些协议不太了解,使用起来不明所以然,感到非常痛苦。所以在我学习后整理了出了以下内容,算是一篇抛砖引玉的网络协议科普向博客,能理解这些能大大助力你的FPGA打怪升级之路。
如果您想深入了解常见的网络协议,我在文末推荐一篇优质博客,一起学习,无限进步!
常用的网络协议
网络协议是计算机网络中必不可少的一部分,它们定义了在网络上进行通信时计算机之间如何交换信息和处理数据的规则和标准。下面是一些常用的网络协议:
- TCP/IP协议:TCP/IP协议是互联网和大多数局域网中最常用的协议之一。它由两个协议组成,即传输控制协议(TCP)和互联网协议(IP)。TCP负责将数据拆分为小块并在计算机之间传输,而IP则负责在网络中寻址和路由。
- HTTP协议:HTTP协议是超文本传输协议,用于在Web浏览器和Web服务器之间传输数据。它定义了客户端向服务器发送请求以获取Web页面的方式,以及服务器向客户端发送响应的方式。
- FTP协议:FTP协议是文件传输协议,用于在计算机之间传输文件。FTP客户端可以连接到FTP服务器并下载或上传文件。
- DNS协议:DNS协议是域名系统协议,用于将域名转换为IP地址。当您输入一个Web地址时,Web浏览器会使用DNS协议将该域名转换为IP地址,以便可以在Internet上找到正确的服务器。
- SMTP协议:SMTP协议是简单邮件传输协议,用于在电子邮件客户端和电子邮件服务器之间传输电子邮件。SMTP定义了邮件如何从发送方的计算机传输到接收方的计算机的方式。
- POP3协议:POP3协议是邮局协议版本3,用于从电子邮件服务器下载电子邮件。POP3允许用户在本地计算机上查看和管理他们的电子邮件。
- SSH协议:SSH协议是一种安全协议,用于在不安全的网络上安全地传输数据。SSH通过加密传输会话中的所有数据来确保安全性,并提供了身份验证和访问控制功能,以确保只有授权用户可以访问系统。SSH协议通常用于远程访问和管理服务器,包括通过终端访问命令行界面、传输文件和执行系统管理任务等。
这些是常用的网络协议,每种协议都有自己的功能和特点。熟悉这些协议将有助于更好地理解计算机网络的工作原理并进行相关开发。接下来我就开篇遇到的问题,总结了他们基于场景下的具体差异。
SSH和FTP的区别
SSH(Secure Shell)和FTP(File Transfer Protocol)都是网络协议,用于远程连接服务器和传输文件。但是,它们的设计目标和工作方式有很大的区别。
- 安全性:SSH是安全协议,使用加密技术来保护通信数据的机密性和完整性,可以在不安全的网络上进行安全连接。而FTP协议不提供加密功能,数据在传输过程中可能被窃听和篡改。
- 认证方式:SSH支持多种身份验证方式,如口令、密钥、证书等。而FTP通常只支持口令认证,容易被攻击者猜测或者破解。
- 功能:SSH是一种通用协议,除了远程登录服务器之外,还可以进行文件传输、端口转发等功能。FTP则专注于文件传输功能。
在使用Finalshell远程连接Linux系统中,SSH和FTP的区别表现在以下几个方面:
- 连接方式:Finalshell默认使用SSH协议连接Linux系统,支持口令和密钥认证方式。如果需要使用FTP协议进行文件传输,则需要在Finalshell中手动设置FTP连接。
- 安全性:由于Finalshell使用SSH协议进行连接,通信过程中数据被加密,可以有效地保护数据安全。而如果使用FTP协议进行文件传输,则需要在FTP服务器和客户端之间建立加密通道,才能保护数据的机密性和完整性。
- 文件传输:使用SSH协议进行文件传输时,可以使用SCP或SFTP命令进行文件传输,支持断点续传、目录传输等功能。而使用FTP协议进行文件传输时,则需要使用FTP客户端软件,如FileZilla等,进行文件传输,功能相对SSH协议要简单。
不过用Finalshell远程连接Linux系统时使用SSH连接即可,非常简单方便。
SSH和HTTPS的区别
SSH(Secure Shell)是一种加密的网络协议,用于远程登录和执行命令。SSH协议可以在不安全的网络中提供安全的连接,它采用了加密的方法,可以保护通信内容的安全性,防止信息被窃听和篡改。SSH协议通常用于远程控制服务器、管理网络设备等场景。
HTTPS(Hyper Text Transfer Protocol Secure)是一种基于HTTP协议的安全协议,用于保护Web通信。HTTPS协议采用了SSL/TLS加密技术,可以对HTTP传输的内容进行加密,确保数据的机密性和完整性。HTTPS协议通常用于保护网上银行、电子商务、社交网络等网站的通信安全。
下面是SSH和HTTPS的一些主要区别:
- 作用不同:SSH用于远程登录和执行命令,HTTPS用于保护Web通信。
- 端口不同:SSH通常使用22号端口,HTTPS通常使用443号端口。
- 安全性不同:SSH采用了加密的方法,可以保护通信内容的安全性,防止信息被窃听和篡改;HTTPS采用了SSL/TLS加密技术,可以对HTTP传输的内容进行加密,确保数据的机密性和完整性。
- 使用场景不同:SSH通常用于远程控制服务器、管理网络设备等场景;HTTPS通常用于保护网上银行、电子商务、社交网络等网站的通信安全。
在GitHub中您将会经常见到他们两个的身影:
因为在GitHub中,您可以使用 SSH 或 HTTP 协议来克隆(clone)存储库。这两种协议之间的主要区别在于它们的身份验证方式和传输协议。
使用 SSH 克隆存储库时,您需要在本地计算机上配置 SSH 密钥,并将公钥添加到您的 GitHub 帐户。这样,您可以使用 SSH 协议对存储库进行身份验证和访问。SSH 协议提供了加密和安全的连接,并且不需要在每次身份验证时输入用户名和密码。
使用 HTTP 克隆存储库时,您需要提供您的 GitHub 用户名和密码来进行身份验证。HTTP 协议使用明文传输,因此在传输过程中数据可能会被截获和窃听。但是,HTTP 克隆在某些情况下可能更容易设置和使用,特别是在您没有配置 SSH 密钥或无法使用 SSH 协议的情况下。
综上所述,使用 SSH 克隆存储库可以提供更高的安全性和更方便的身份验证,但需要进行更多的设置和配置。使用 HTTP 克隆存储库可以更容易设置和使用,但需要更频繁地进行身份验证,并且传输数据的安全性可能较低。
以上是我对于网络协议的一些浅薄理解,如果您想深入学习网络协议,建议参考阅读以下博客:
此博客开篇回顾了计算机网络五层模型,并深入介绍了应用层协议、传输层协议、网络层、数据链路层和物理层,最后总结了整体的网络传输流程,非常生动和精辟的讲解!
遏止比较的念头和来源,做好自己,选择了就认真完成,每一步都是在享受结果,共勉!
微信公众号:沂舟无限进步