Scoket:一套网络编程API,利用它可以建立网络连接,
WebSocket:是基于TCP的支持全双工通信的应用层协议
WebSocket的应用场景很多
HTTP vs WebSocket
HTTP请求的特点:通信只能由客户端发起。所以,早期很多网站(体育赛事直播,聊天,股票基金)为了实现推送技术,所用的技术都是轮询
WebSocket和HTTP属于平级关系,都是应用层的协议(WebScoket也可以认为是对TCP的简单封装)
WebSocket使用80(ws://)(http)、 443(wss://)(https)端口(为了兼容http协议),可以绕过大多数防火墙的限制
与HTTP不同的是, WebSocket需要先建立连接(应用层的连接)
WebSocket - 建立连接
WebSocket需要借助HTTP协议来建立连接(也叫作握手, Handshake)
◼ Connection必须设置Upgrade
◼ Upgrade必须设置websocket
◼ Sec-WebSocket-Version
◼ Sec-WebSocket-Key是客户端生成的随机字符串,比如例子中的dGh1IHNhbXBsZSBub25jZQ==
◼ 服务器接收到客户端的Sec-WebSocket-Key后,会进行以下操作
① Sec-WebSocket-Key加上一个固定的GUID值(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)
② 将①的结果进行SHA-1摘要计算
③ 将②的结果进行Hex To Base64编码
④ 将③的结果做为Sec-WebSocket-Accept响应头的值,返回给客户端
◼ 如此操作,可以尽量避免普通HTTP请求被误认为WebSocket协议
WebService,译为: Web服务,是一种跨编程语言和跨操作系统平台的远程调用技术标准(可以认为是一个比较古老的技术)
WebService使用场景举例
事实上, WebService完全可以用普通的Web API取代(比如HTTP + JSON)
WebService -- 核心概念
SOAP(Simple Object Access Protocol),译为:简单对象访问协议
WSDL(Web Services Description Language),译为: Web服务描述语言
比如: http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
(有些平台想让自己的数据公开给别人用,没有限制的那种,那怎么公开呢,要遵循一些标准(比如WebService标准),要遵守SOAP协议)
RESTful - 简介
REST的全称是:REpresentational State Transfer(表现层状态转移)
REST是一种互联网软件架构设计风格
就类似于每个人有不同的编码风格
RESTful -- 实践建议
◼ URL中使用名词(建议用复数形式),不使用动词
◼ 使用HTTP的方法表达动作
◼ 一个资源连接到其他资源,使用子资源的形式
◼ API版本化
◼ 返回JSON格式数据
◼ 发生错误时,不要返回200状态码
HTTPDNS
HTTPDNS是基于HTTP协议向DNS服务器发送域名解析请求
HTTPDNS - 使用
市面上已经有现成的解决方案
移动端集成相关的SDK即可使用HTTPDNS服务
FTP(File Transport Protocol),译为:文件传输协议, RFC 959定义了此规范,是基于TCP的应用层协议
FTP - 连接模式
FTP有2种连接模式:主动(Active)和被动(Passive)
不管是哪种模式,都需要客户端和服务器建立2个连接
FTP - 主动模式
① 客户端打开一个随机的命令端口
② 客户端开始监听N+1数据端口
√ 客户端正在监听的数据端口N+1
√ 并且已准备好从此端口接收数据
③ 服务器打开20号数据端口,并且创建和客户端数据端口(N+1)的连接
FTP - 被动模式
客户端通过两个随机的端口与服务器建立连接
① 客户端的命令端口N用于连接服务器的命令端口21
② 客户端通过命令端口N发送PASV命令给服务器的命令端口21
③ 服务器打开一个随机的数据端口P,并告知客户端该端口号P
④ 客户端数据端口N+1发起与服务器数据端口P的连接
◼ 发邮件使用的协议
SMTP(Simple Mail Transfer Protocol),译为:简单邮件传输协议
◼ 收邮件使用的协议
POP(Post Office Protocol),译为:邮局协议
IMAP(Internet Message Access Protocol),译为:因特网信息访问协议
收发邮件的过程
POP vs IMAP
POP的特点
- 客户端连接服务器时,将会从服务器下载所有邮件
- 可以设置下载完后,立即或一段时间后删除服务器邮件
- 客户端的操作(比如删除邮件、移动到文件夹) 不会跟服务器同步
- 每个客户端都是独立的,都可以获得其自己的电子邮件副本
IMAP的特点
- 客户端连接服务器时,获取的是服务器上邮件的基本信息,并不会下载邮件
- 等打开邮件时,才开始下载邮件
- 客户端的操作(比如删除邮件、移动到文件夹) 会跟服务器同步
- 所有客户端始终会看到相同的邮件和相同的文件夹