SSH、TCP、UDP、FTP、SFTP协议

1|0一、SSH协议

1|11. SSH协议是什么

# 简介: SSH即Secure Shell,安全外壳协议,简称SSH,SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可在不安全的网络中对网络服务提供安全的传输环境,实现ssh客户端和ssh服务器端的连接,所以ssh是基于C/S结构的。 # 详细: # 注意: SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。 服务端是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。 客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。 他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH的客户端,本地再将密钥发回给服务端,自此连接建立。SSH 1.x和SSH 2.x在连接协议上有一些差异。 一旦建立一个安全传输层连接,客户机就发送一个服务请求。当用户认证完成之后,会发送第二个服务请求。这样就允许新定义的协议可以与上述协议共存。连接协议提供了用途广泛的各种通道,有标准的方法用于建立安全交互式会话外壳和转发(“隧道技术”)专有 TCP/IP 端口和 X11 连接。

1|22. SSH的优点

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"

1|33. SSH协议是tcp还是udp,及其工作流程

ssh是应用层协议,它的传输层协议是tcp,所以在ssh登录之前必定会有tcp连接。其ssh协议建立连接过程如下: 1、tcp三次握手; 2、ssh协议版本协商; 3、服务器端把公钥发给客户端; 4、加密算法协商; 5、客户端使用公钥对服务器端的密码加密并发送给服务器端; 6、服务器端收到后用自己的私钥解密后得到用户名密码和本地密码对比,验证成功允许登录,否则需要客户端再次输入密码验证。

1|43. SSH的验证

# 从客户端来看,SSH提供两种级别的安全验证。 第一种级别(基于口令的安全验证) 只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。 第二种级别(基于密匙的安全验证) 需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。 用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。 第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10

2|0二、TCP、UDP协议

2|11. 什么是TCP、UDP协议

# 简介: 它们都是属于传输层的用于数据传输的协议 # 不同的是: TCP是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。 举例:打电话,需要双方都接通,才能进行对话 特点:效率低,数据传输比较安全 UDP是数据报协议,是一种面向无连接的传输层通信协议。 举例:发短信,不需要双方建立连接,But,数据报的大小应限制在64k以内 特点:效率高,数据传输不安全,容易丢包

2|22. 实现简易的TCP通信

# TCP编程 TCP是基于字节流的传输层通信协议,所以TCP编程是基于IO流编程。 对于客户端,我们需要使用Socket(python有socket库)类来创建对象。对于服务器端,我们需要使用ServerSocket来创建对象,通过对象调用accept()方法来进行监听是否有客户端访问。 客户端与服务器端实现步骤 前提:创建一个项目,在项目中创建两个模块(model),一个模块用来放客户端相关代码,一个模块用来放服务器端相关代码

2|33. 实现简易的UDP通信

# UDP编程 UDP使用数据报进行数据传输,没有客户端与服务器端之分,只有发送方与接收方,两者哪个先启动都不会报错 ,但是会出现数据丢包现象。发送的内容有字数限制,大小必须限制在64k以内。 发送方与接收方实现步骤: 前提:创建一个项目,在项目中创建两个模块(model),一个模块用来放发送方相关代码,一个模块用来放接收方相关代码 # 提示: 在运行程序时,先运行发送方程序,还是先运行接收方程序都不会报错,但是有可能会出现数据丢包,一般我们都先运行接收方的程序代码,再运行发送方的程序代码

2|44. TCP、UDP详情

点击直达

3|0三、FTP、SFTP协议

3|11. FTP协议

  • 在实际项目开发中最常使用的文件传输的方式有ftp和sftp两种

1|01. 什么FTP协议

# 介绍 提供一种在服务器和客户机之间上传和下载文件的有效方式;是基于TCP的传输,FTP采用双TCP连接方式;支持授权与认证机制,提供目录列表功能 FTP是TCP/IP协议组中的协议之⼀,TP协议由两个部分组成: 1.FTP服务器(⽤来存储⽂件) 2.FTP客户端(⽤户可以使⽤FTP客户端通过FTP协议访问位于FTP服务器上的资源) # 详解 是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和internet上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。相比于HTTP,FTP协议要复杂得多。复杂的原因:因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。FTP是基于TCP协议的,因此iptables防火墙设置中只需要放开指定端口的TCP协议即可 # FTP的两个机制 ASPF机制(主动模式下被防火墙限制)和长会话机制(文件传输到99%时中断)

1|02. FTP的传输模式

  • FTP有两种传输模式
    • 主动模式(Port)
    • 被动模式(Passive)
默认情况下FTP协议使⽤TCP端⼝中的20和21这两个端⼝。21端⼝⽤于传输控制信息,⽽是否使⽤20作为传输数据的端⼝与FTP使⽤的 传输模式有关,如果采⽤被动模式则具体使⽤哪个端⼝要服务器端和客户端协商决定。FTP传输模式分为以下两种:
  • 模式图解

  • 主动模式图解注释

    • FTP客户端⾸先和FTP服务器的TCP21端⼝建⽴连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端⽤什么端⼝接收数据。在传送数据的时候,服务器端通过⾃⼰的TCP 20端⼝连接⾄客户端的指定端⼝发送数据
  • 被动模式图解注释

    • 在建⽴控制通道与主动模式相似,但建⽴连接后是Pasv命令。FTP服务器收到Pasv命令后便随机打开⼀个⾼端端⼝(端⼝号⼤于1024)并且通知客户端在这个端⼝上传送数据的请求,客户端连接FTP服务器此端⼝,通过三次握⼿建⽴通道,然后FTP服务器将通过这个端⼝进⾏数据的传送

1|0(1)主动模式

主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式。 主要特点是: 1、FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号 2、当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输;在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。

1|0(2)被动模式

被动方式也称为PASV方式,被动方式的主要特点是: 1、FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端 2、当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输;在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式

1|03. FTP使用注意点--防火墙

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙侯或者内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作

1|04. FTP数据传输方式

FTP数据传输方式:ASCII模式和二进制模式 ASCII模式用于传输文本。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。 二进制模式常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输

1|05. FTP使用的端口

  • 控制连接(即登录和发送命令相关,非数据传输的都属于控制连接)

    控制连接使用TCP端口号21;用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息;控制连接在整个FTP会话期间一直保持打开
  • 数据连接(传输数据时的端口)

    数据连接使用TCP端口号(主动模式下20,被动模式下随机);用于传输数据,包括数据上传、下载、文件列表发送等。数据传输结束后数据连接将终止

3|22. SFTP协议

1|01. 什么是SFTP协议

# 简介: 可以为传输文件提供一种安全的网络的加密方法。SFTP 是SSH的其中一部分,是一种客户端传输文件至服器的安全方式 # 详解: SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议,可以为传输文件提供一种安全的加密方法。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的一部分,是一种传输文件到服务器的安全方式。在SSH软件包中,已经包含了一个叫作SFTP的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以使用SFTP是非常安全的。 但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP

1|02. SFTP与FTP的区别

1|0(1)链接方式

FTP使用TCP端口21上的控制连接建立连接。 SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件

1|0(2)安全性

SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP是非常安全的

1|0(3)效率

SFTP这种传输方式使用了加密解密技术,所以传输效率比普通的FTP要低得多

__EOF__

本文作者BigSun丶
本文链接https://www.cnblogs.com/Mcoming/p/16263121.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   BigSun丶  阅读(5161)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示