文章目录
- 〇、加密算法
- 对称加密
- 非对称加密
- 一、远程登录——TELNET、SSH
- 1.Telnet
- 2.SSH
- 二、文件传输——FTP、SFTP、FTPS
- 1.FTP
- 2.SFTP
- 3.FTPS
- SSL工作原理
- 三、电子邮件——SMTP、POP、IMAP
- 1.SMTP(推送邮件)
- 2.POP(接收邮件)
- 3.IMAP
- 四、Web应用——HTTP、HTTPS
- 1.HTTP
- (1)浏览器输入url之后发生的事情
- (2)HTTP请求
- (3)HTTP响应
- 2.HTTPS
- 参考
〇、加密算法
介绍两种加密算法,也许会对后面内容的学习有一些帮助。
对称加密
加密、揭秘用同一个密钥,缺点是交换密钥的时候可能被窃取。
非对称加密
消息发送方用接收方的公钥对数据进行加密,接收方拿到消息后用自己的私钥进行解密。
一、远程登录——TELNET、SSH
1.Telnet
Telnet利用TCP的一条连接,通过这一条连接向主机发送文字命令并在主机上执行。本地用户好像直接与远端主机内部的Shell相连着似的,直接在本地进行操作。telnet是基于tcp协议,所以建立的链接过程实际上是建立一个tcp连接的过程。
缺点:明文传输所有数据,不安全。
- 工作过程:
- 1.建立连接
上面我们说了telnet是基于tcp协议,所以建立的链接过程实际上是建立一个tcp连接的过程
- 2.输入口令
如果建立连接时,路由器可以抵达目的地,那么我们就会在本地终端输入用户名和密码,之后通过传输介质传送到远程主机
- 3.认证并返回结果
远程主机进行认证,无论认证通过与否,都会将回复数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
- 4.撤销连接
本地终端对远程主机进行撤消连接,这个过程其实是撤销一个TCP连接
2.SSH
telnet协议以明文的方式传送所有数据(包括账号和口令),数据在传输过程中很容易被入侵者窃听会篡改,所以建议在对安全性不高的环境下使用。
因此,SSH使用更为广泛,SSH全称是Secure Shell (安全外壳协议),是一种非对称加密的网络传输协议 ,可在不安全的网络中为网络服务提供安全的传输环境 。SSH默认端口是22。SSH主要提供了两个服务:远程登录的服务、SFTP加密传输文件的。
- 工作过程:
- 1.服务器建立公钥:
若远程服务器是新系统,会在/etc/ssh目录下生成一个名为ssh_host_ecdsa_key.pub的公钥,
同时生成一个名为ssh_host_ecdsa_key的私钥,这一对就是远程服务器的公钥与私钥。
之后每回启动sshd服务的时候,系统会自动在此路径下查找公钥。
- 2.客户端请求连接:
linux或者mac系统可以直接通过自带的shell连接,指令为ssh user@host。
- 3.服务器发送公钥给客户端:
服务器接到请求后,把公钥传给客户端使用。
- 4.客户端记录服务器公钥并计算自己的公私钥:
客户端将服务器传来的公钥记录在~/.ssh/known_hosts中,
若是已经记录有该服务器公钥,则比对是否一致,一致后就计算客户端自己的公私钥。
- 5.客户端发送自己的公钥给服务器:
客户端将自己的公钥发送给服务器,这样服务器端就有客户端公钥+服务器自己私钥,
客户端就有服务器公钥+客户端自己私钥,组成了非对称加密系统。
- 6.开始双向加解密:
服务器发送数据:用客户端公钥加密,客户端收到数据后用自己私钥解密。
客户端发送数据:用服务器公钥加密,服务器收到数据后用自己私钥解密。
二、文件传输——FTP、SFTP、FTPS
1.FTP
FTP (File Transfer Protocol,文件传输协议)是典型的c/s架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。
FTP有两种模式,一种是主动模式(服务器主动发起连接,有一个缺点是客户端必须关闭防火墙),一种是被动模式(服务器被动等待客户端发起连接)。
2.SFTP
在介绍SSH的时候就说过了,实际上就是SSH提供的一个安全文件传输协议。
3.FTPS
实际上就是在FTP和TCP之间加了一层安全协议SSL(该协议介于应用层、传输层之间)。能够给FTP增加一些安全性支持。因此,搞懂SSL也就搞懂了FTPS。
SSL工作原理
SSL提供三种基本的安全服务:数据加密、完整性校验、身份认证
-
安全服务——数据加密:
SSL协议采用 混合加密算法 来对数据进行加密。用非对称加密算法来交换一个”对称的密钥“,然后用对称加密算法并使用这个”对称的密钥“来进行后续的数据发送。既保证了安全性,又保障了效率。 -
安全服务——完整性校验:
发送方:原文 ->(不可逆的哈希算法)-> 消息摘要->(用自己的私钥进行加密)-> 数字签名
发送方:将数字签名 + 原文发送给接收方
接收方:原文 ->(不可逆的哈希算法)-> 消息摘要1
接收方:数字签名 ->(用发送方的公钥进行解密)-> 消息摘要2
接收方:对比消息摘要1和消息摘要2是否相同,判断数据的完整性(是否被篡改) -
安全服务——身份认证:
权威的第三方给服务器颁发数字证书,证明其身份。 -
建立SSL连接的过程:
三、电子邮件——SMTP、POP、IMAP
1.SMTP(推送邮件)
- 工作过程:
1)建立连接:SMTP客户端请求与SMTP服务器建立一个TCP连接,连接成功后互通域名等一系列相关信息
2)邮件发送:SMTP客户将邮件发送给SMTP服务器,SMTP服务器进行接收
3)连接释放:SMTP退出命令,服务器处理相应,随后关闭TCP连接
2.POP(接收邮件)
- 工作过程:
基本上与SMTP无区别,都是建立连接——接受邮件——断开连接的操作方式,期间所使用依旧是tcp/ip协议,与SMTP不同的地方是,POP与IMAP都是接收邮件,且他们的服务器是由SMTP所给出的电子邮件。
3.IMAP
- 工作过程:
离线情况:与POP3基本保持一致性
在线情况:客户端在于服务端会持续不断的进行连接,客户端可直接在进行在线浏览等之类的操作,再决定是否下载相关邮件,即是客户端直接在服务器上对邮件进行相应的操作。
四、Web应用——HTTP、HTTPS
1.HTTP
(1)浏览器输入url之后发生的事情
- DNS解析域名的过程:
浏览器缓存IP了吗,否则下一步
系统hosts文件有该IP吗,否则下一步
迭代查询:先查根域服务器(每个DNS服务器都知道根域服务器在哪) -> 去根域服务器查询顶级域服务器.com -> 去顶级域服务器查询二级域服务器 baidu.com -> 去二级域服务器查www.baidu.com的ip
(2)HTTP请求
- 最常见的请求方法:
GET(select): 参数会包含在请求头url中,不安全,长度也有限制;无完整性验证机制,直接将header+data发送过去;会被浏览器主动缓存,不安全。
POST(update&select): 可通过请求头url或者请求体传参,安全,可传输更多参数;有完整性验证机制,分两次发header、data;不会被浏览器主动缓存。
PUT(insert): 无验证机制,不安全。
DELETE(delete): 无验证机制,不安全。
(3)HTTP响应
- 状态码:
2.HTTPS
实际上就是在HTTP和TCP之间多了一层SSL的处理。看一下第二章,已经介绍了SSL。
参考
书籍《图解TCP/IP》
ssh:https://blog.csdn.net/qq_38150250/article/details/119835992
ftp:https://blog.csdn.net/ver_mouth__/article/details/124179311
ssl:https://www.bbsmax.com/A/A2dmn17nze/
邮件:https://blog.csdn.net/qq_44852846/article/details/120716611