WebSocket
- HTTP 请求的特点:通信只能由客户端发起。所以,早起很多网站为了实现推送技术,所采用的技术都是轮询。为了能更好的节省服务器资源和宽带,并且能够更实时地进行通讯,HTML5 规范中出现了 WebSocket 协议
- WebSocket是基于 TCP 的,支持全双工通信的应用层协议,于 2011 年由 IETF 标准化,客户端、服务器,任何一方都可以主动发消息给对方
- WebSocket 和 HTTP 属于平级关系,都是应用层协议,其实 TCP 本身就是支持全双工通信的(客户端、服务器均可主动发消息给对方),只是 HTTP 的"请求-应答模式"限制了 TCP 的能力
- WebSocket 使用 80(ws://)、443(wws://)端口,可以绕过大多数防火墙的限制
- 与 HTTP 不同的是,WebSocket 需要先建立连接。注意区分HTTP建立连接是在 TCP 层需要建立的,而WebSocket不光 TCP 层要建立连接,WebSocket 层也需要先建立连接。WebSocket 的这一特性就使得 WebSocket 成为一种有状态的协议,之后通信时可以省略部分状态信息,而 HTTP 请求可能需要在每个请求都额外携带状态信息(如身份认证等)
建立连接
- WebSocket 需要借助 HTTP 协议来建立连接(也叫作握手,Handshake),由客户端主动发出握手请求
- 请求头中的 Connection 必须设置 Upgrade,表示客户端希望连接升级
- Upgrade 必须设置 websocket,表示希望升级到 WebSocket 协议
-
Sec-WebSocket-Version: 表示支持的 WebSocket 版本
HTTPDNS
-
HTTPDNS 是基于 HTTP 协议向 DNS 服务器发送域名解析请求,替代了基于 DNS 协议向运营商 Local DNS 发起解析请求的传统方式,可以避免 Local DNS 造成的域名劫持和跨网访问问题,常用在移动互联网中
- 使用第三方 HTTPDNS 直接集成相关 SDK 就可以使用其提供的 HTTPDNS 服务,方便、快捷
FTP
- FTP(File Transport Protocol):文件传输协议,RFC_959 定以了此规范,是基于 TCP 的应用层协议, FTP 的 URL 格式为: ftp://[user[:password]@]host[:port]/url-path
连接模式
- FTP 有 2 种连接模式: 主动(Active)和被动(Passive)
- 不管是那种模式,都需要客户端和服务器建立 2 个连接:
- 控制连接:用于传输状态信息(命令、cmd)
- 数据连接:用于传输文件和目录信息 (data)
主动模式
1、客户端打开一个随机的命令窗口,端口号大于 1024,假设为 N,同时连接至服务器的命令端口 21
2、客户端开始监听 N+1 数据端口,同时向服务器发送一个 Port 命令给服务器的命令端口 21,此命令告诉服务器,客户端正在监听的数据端口 N+1, 并且已经准备好从此端口接收数据
3、服务器打开 20 号数据端口,并且创建和客户端数据端口(N+1)的链接
![](https://img.haomeiwen.com/i1315827/7f558d34242d34af.png)
被动模式
-
客户端通过两个随机的端口与服务器建立连接, 命令端口 N, 数据端口
N+1
1、客户端的命令端口 N 用于连接服务器的命令端口 21
2、客户端通过命令端口 N 发送 PASV 命令给服务器的命令端口 21
邮件相关协议
发邮件使用的协议
- SMTP(Simple Mail Transfer Protocol): 简单邮件传输协议, 基于 TCP,标准参考 RFC_5321,服务器默认使用 25 端口,SSL/TLS 使用 465 端口
收邮件使用的协议
POP
- POP(Post Office Protocol): 邮局协议,基于 TCP,最新版是 POP3, 标准参考 RFC_1939,服务器默认使用 110 端口,SSL/TLS 使用 995 端口
IMAP
- IMAP(Internet Message Access Protocol): 因特网信息访问协议,基于 TCP,最新版是 IMP4,标准参考 RFC_3051,服务器默认使用 143 端口,SSL/TLS 使用 993 端口
POP VS IMAP
- POP 的特点
- 客户端连接服务器时,将会从服务器下载所有邮件,可以设置下载完后,立即或一段时间后删除服务器邮件
- 客户端的操作(比如删除邮件、移动到文件夹)不会跟服务器同步
- 每个客户端都是独立的,都可以获得其自己的电子邮件副本
- IMAP 的特点
- 客户端连接服务器时,获取的是服务器上邮件的基本信息,并不会下载邮件,等打开邮件时,才开始下载邮件
- 客户端的操作(比如删除邮件、移动到文件夹)会跟服务器同步
- 所有客户端始终会看到相同的邮件和相同的文件夹
网友评论