谈谈网络协议 – WS_FTP_POP_IMAP

摘要:
wsdl获取WSDL信息比如:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdlRESTfulREST的全称是:REpresentationalStateTransfer译为“表现层状态转移”是一种互联网软件架构设计风格定义了一组用于创建服务的约束符合REST架构的Web服务,称为RESTfulWeb服务实践建议URL中使用名词,不使用动词推荐:/users/、/users/6不推荐:/listUsers、/getUsers?
HTTP vs WebSocket
  • HTTP请求的特点:通信只能由客户端发起。所以,早期很多网站为了实现推送技术,所用的技术都是轮询

    • 轮询是指由浏览器每隔一段时间(如每秒)向服务器发出HTTP请求,然后服务器返回最新的数据给客户端
    • 为了能更好的节省服务器资源和带宽,并且能够更实时地进行通讯,HTML5规范中出现了WebSocket协议
  • WebSocket,是基于TCP的支持全双工通信的应用层协议

    • 在2011年由IETF标准化为RFC 6455,后由RFC 7936补充规范
    • 客户端、服务器,任何一方都可以主动发消息给对方
  • WebSocket的应用场景很多

    • 社交订阅、股票基金报价、体育实况更新、多媒体聊天、多玩家游戏等

20210408130446.png

  • WebSocket和HTTP属于平级关系,都是应用层的协议
    • 其实TCP本身就是支持全双工通信的(客户端、服务器均可主动发消息给对方)
    • 只是HTTP的“请求-应答模式”限制了TCP的能力
  • WebSocket使用80(ws://)、443(wss://)端口,可以绕过大多数防火墙的限制
    • ws://example.com/wsapi
    • wss://secure.example.com/wsapi
  • 与HTTP不同的是,WebSocket需要先建立连接
    • 这就使得WebSocket成为一种有状态的协议,之后通信时可以省略部分状态信息
    • 而HTTP请求可能需要在每个请求都额外携带状态信息(如身份认证等)
WebSocket

WebSocket - 建立连接

  • WebSocket需要借助HTTP协议来建立连接(也叫作握手,Handshake
    • 由客户端(浏览器)主动发出握手请求

1

  • Connection必须设置Upgrade

    • 表示客户端希望连接升级
  • Upgrade必须设置websocket

    • 表示希望升级到WebSocket协议
  • Sec-WebSocket-Version

    • 表示支持的Websocket版本
    • RFC 6455要求使用的版本是13
  • Sec-WebSocket-Key是客户端生成的随机字符串,比如例子中的 dGhlIHNhbXBsZSBub25jZQ==

  • 服务器接收到客户端的Sec-WebSocket-Key后,会进行以下操作

Sec-WebSocket-Key加上一个固定的GUID值(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)

  • dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11

② 将①的结果进行SHA-1摘要计算

  • b37a4f2cc0624f1690f64606cf385945b2bec4ea

③ 将②的结果进行Hex To Base64编码

  • s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

④ 将③的结果做为Sec-WebSocket-Accept响应头的值,返回给客户端

  • 如此操作,可以尽量避免普通HTTP请求被误认为WebSocket协议

WebSocket - 使用

谈谈网络协议 – WS_FTP_POP_IMAP第3张

WebService
  • WebService,译为:Web服务,是一种跨编程语言和跨操作系统平台的远程调用技术标准

  • WebService使用场景举例

    • 天气预报、手机归属地查询、航班信息查询、物流信息查询等
    • 比如天气预报,是气象局把自己的服务以WebService形式暴露出来,让第三方程序可以调用这些服务功能
    • http://www.webxml.com.cn/zh_cn/index.aspx
  • 事实上,WebService完全可以用普通的Web API取代(比如HTTP + JSON)

    • 现在很多企业的开放平台都是直接采用Web API

核心概念

  • SOAP(Simple Object Access Protocol),译为:简单对象访问协议
    • 很多时候,SOAP = HTTP + XML
    • WebService使用SOAP协议来封装传递数据

谈谈网络协议 – WS_FTP_POP_IMAP第4张

  • WSDL(Web Services Description Language),译为:Web服务描述语言
RESTful
  • REST的全称是:REpresentational State Transfer
    • 译为“表现层状态转移”
  • 是一种互联网软件架构设计风格
    • 定义了一组用于创建 服务的约束
    • 符合 REST架构的 Web服务,称为 RESTful Web服务

实践建议

  • URL 中使用名词(建议用复数形式),不使用动词
    • 推荐:/users/ 、/users/6
    • 不推荐: /listUsers、/getUsers?id=6 、/user/list 、/user/get?id=6
  • 使用HTTP的方法表达动作

谈谈网络协议 – WS_FTP_POP_IMAP第5张

  • 一个资源连接到其他资源,使用子资源的形式

    • GET /users/6/cars/99
    • POST /users/8/cars
  • API版本化

    • xgao.com/v1/users
    • xgao.com/v2/users/66
  • 返回 JSON格式的数据

  • 发生错误时,不要返回 200 状态码

HTTPDNS
  • HTTPDNS是基于HTTP协议向DNS服务器发送域名解析请求
    • 替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式
    • 可以避免Local DNS造成的域名劫持和跨网访问问题
    • 常用在移动互联网中(比如在Android、iOS开发中)

谈谈网络协议 – WS_FTP_POP_IMAP第6张

HTTPDNS - 使用

FTP
  • FTP(File Transport Protocol),译为:文件传输协议,RFC 959定义了此规范,是基于TCP的应用层协议
    • 在RFC 1738中有定义,FTP的URL格式为:ftp://[user[:password]@]host[:port]/url-path

谈谈网络协议 – WS_FTP_POP_IMAP第7张

FTP - 连接模式

  • FTP有2种连接模式:主动(Active)和被动(Passive)

  • 不管是哪种模式,都需要客户端和服务器建立2个连接

    ① 控制连接:用于传输状态信息(命令,cmd)

    ② 数据连接:用于传输文件和目录信息(data)

谈谈网络协议 – WS_FTP_POP_IMAP第8张

FTP - 主动模式

谈谈网络协议 – WS_FTP_POP_IMAP第9张

① 客户端打开一个随机的命令端口

  • 端口号大于1024,假设为N
  • 同时连接至服务器的命令端口21

② 客户端开始监听N+1数据端口

  • 同时向服务器发送一个Port命令给服务器的命令端口21
  • 此命令告诉服务器
    • 客户端正在监听的数据端口N+1
    • 并且已准备好从此端口接收数据

③ 服务器打开20号数据端口,并且创建和客户端数据端口(N+1)的连接

FTP - 被动模式

  • 客户端通过两个随机的端口与服务器建立连接
    • 命令端口N
    • 数据端口N+1

谈谈网络协议 – WS_FTP_POP_IMAP第10张

① 客户端的命令端口N用于连接服务器的命令端口21

② 客户端通过命令端口N发送PASV命令给服务器的命令端口21

③ 服务器打开一个随机的数据端口P,并告知客户端该端口号P

④ 客户端数据端口N+1发起与服务器数据端口P的连接

邮件相关协议
  • 发邮件使用的协议

    • SMTP(Simple Mail Transfer Protocol),译为:简单邮件传输协议
      • 基于TCP,标准参考RFC 5321 ✓ 服务器默认使用25端口,SSL/TLS使用465端口
  • 收邮件使用的协议

    • POP(Post Office Protocol),译为:邮局协议

      • 基于TCP,最新版是POP3,标准参考RFC 1939
      • 服务器默认使用110端口,SSL/TLS使用995端口
    • IMAP(Internet Message Access Protocol),译为:因特网信息访问协议

      • 基于TCP,最新版是IMAP4,标准参考RFC 3501

      • 服务器默认使用143端口,SSL/TLS使用993端口

收发邮件的过程

谈谈网络协议 – WS_FTP_POP_IMAP第11张

POP vs IMAP

  • POP的特点
    • 客户端连接服务器时,将会从服务器下载所有邮件
      • 可以设置下载完后,立即或一段时间后删除服务器邮件
      • 客户端的操作(比如删除邮件、移动到文件夹)不会跟服务器同步 每个客户端都是独立的,都可以获得其自己的电子邮件副本
  • IMAP的特点
    • 客户端连接服务器时,获取的是服务器上邮件的基本信息,并不会下载邮件
      • 等打开邮件时,才开始下载邮件
    • 客户端的操作(比如删除邮件、移动到文件夹)会跟服务器同步
    • 所有客户端始终会看到相同的邮件和相同的文件夹

谈谈网络协议 – WS_FTP_POP_IMAP第12张

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nexus杂电脑网络诊断显示Win10无法与设备或资源(DNS)通信解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux下find查找命令用法

转自http://www.jb51.net/os/RedHat/1307.html Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件...

微信公众平台开发教程(二) 基本原理及消息接口

微信公众平台开发教程(二) 基本原理及消息接口 一、基本原理 在开始做之前,大家可能对这个很感兴趣,但是又比较茫然。是不是很复杂?很难学啊? 其实恰恰相反,很简单。为了打消大家的顾虑,先简单介绍了微信公众平台的基本原理。 微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这就里就是我们的具...

Apache服务安装及一些基本操作

注意:安装apache服务之前记得搭建yum仓库 1.安装apache服务,输入命令“yum install httpd”   安装成功后,会这样显示 2.需要对Apache服务进行启动,输入命令“systemctl start httpd”   (1)输入命令“firefox”,打开火狐浏览器,输入网址“http:/127.0.01”,就可以看到如下...

Linux常用性能检测命令

Linux常用性能检测命令、uptime、top、iostat、Vmstat、pstree、Numastat、sar、free、Pmap、Strace、ulimit 一、uptimeUptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分...

java大文件(视频)切片上传

java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1、服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操作 2、服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求 3、服:每接收到一个Socket就建立一个新的线程来处理它 4、客:...

MSSQL无落地文件执行Rootkit-WarSQLKit

0x00 前言 在本文中,我们将处理一个很长时间以来一直待解决的问题:MSSQL Rootkit。到目前为止,针对MS-SQL所描述的大多数命令执行都是调用“xp_cmdshell”和“sp_OACreate”存储过程的。因此,如果在没有xp_cmdshell和sp_OACreate存储过程的MSSQL服务器上拥有“sa”帐户或任何具有“sysadmin”...