网络协议从入门到底层原理(10,意外收获字节跳动内部资料

WebSocket 使用 80(ws://)、443(wss://) 端口,可以绕过大多数防火墙的限制

  • ws://example.com/wsapi

  • wss://secure.example.com/wsapi

与 HTTP 不同的是,WebSocket 需要先建立连接

  • 这就使得WebSocket成为一种有状态的协议,之后通信时可以省略部分状态信息

  • 而HTTP请求可能需要在每个请求都额外携带状态信息(如身份认证等)

WebSocket 使用

WebSocket 体验和演示:https://www.websocket.org/echo.html

W3C 标准化了一套 WebSocket API,可以直接使用JS调用:

let ws = new WebSocket(‘wss://example.com’)

WebSocket - 建立连接


WebSocket 需要借助 HTTP协议来建立连接(也叫作握手,Handshake

  • 由客户端(浏览器)主动发出握手请求

在这里插入图片描述

在这里插入图片描述

GUID

SHA-1摘要计算

Hex TO Base64编码

WebService

=============================================================================

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

其实 WebService 是比较老的技术,放到现在已经可以由普通的 Web API 取代

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协议 来封装传递数据

    在这里插入图片描述

WSDL (Web Services Description Language),译为:Web服务描述语言

RESTful

==========================================================================

REST (REpresentational State Transfer)表现层状态转移

REST是一种互联网软件架构设计风格

  • 定义了一组用于创建Web服务的约束

  • 符合REST架构的Web服务,称为 RESTful Web服务


RESTful 的实践建议

1、URL中使用名词(建议用复数形式),不使用动词

  • 推荐:/users、/users/6

  • 不推荐:listsers、/getser?id=6,/uer/list、/user/get?id=6

2、使用 HTTP的请求方法 表达动作:

在这里插入图片描述

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

  • GET /users/6/cars/8

  • POST /users/8/cars

3、API 版本化

  • mj.com/v1/users

  • mj.com/v2/users/66

4、返回 JSON格式的数据

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

HTTPDNS

==========================================================================

HTTPDNS 是基于HTTP协议向DNS服务器发送域名解析请求

  • 替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式

  • 可以避免 Local DNS 造成的域名劫持跨网访问问题

  • 常用在移动互联网中(比如在Android、iOS开发中)

    在这里插入图片描述

HTTPDNS使用

1、市面上已经有现成的解决方案

2、移动端集成相关的SDK即可使用HTTPDNS服务

FTP文件传输协议

============================================================================

FTP (File Transport Protocol),文件传输协议RFC 959 定义了此规范,是基于TCP应用层协议

  • RFC 1738 中有定义,FTP的URL格式为:ftp://[user[:password]@]host[:port]/url-path

    在这里插入图片描述

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

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

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

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

在这里插入图片描述

FTP - 主动模式

在这里插入图片描述

FTP - 被动模式

在这里插入图片描述

邮件相关的协议(SMTP、POP、IMAP)

=========================================================================================

发邮件使用的协议

  • 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端口

收发邮件的过程

在这里插入图片描述

POP vs IMAP


POP的特点

  • 客户端连接服务器时,将会从服务器下载所有邮件

    可以设置下载完后,立即或一段时间后删除服务器邮件

  • 客户端的操作(比如删除邮件、移动到文件夹)不会跟服务器同步

  • 每个客户端都是独立的,都可以获得其自己的电子邮件副本

IMAP的特点

  • 客户端连接服务器时,获取的是服务器上邮件的基本信息(如列表),并不会下载邮件

    等打开邮件时,才开始下载邮件

  • 客户端的操作(比如删除邮件、移动到文件夹)跟服务器同步

  • 所有客户端始终会看到相同的邮件和相同的文件夹

在这里插入图片描述

IPv6

=======================================================================

IPv6 (Internet Protocol version 6)网际协议第6版

  • 用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进

  • 然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源我都在这里公开分享出来

以上我的经历希望能够给大家带来帮助,需要这些资料的朋友可以戳这里,就可以免费拿到了

以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

[外链图片转存中…(img-J7ejF1Qr-1628634402606)]

[外链图片转存中…(img-XzHcU2cq-1628634402608)]

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源我都在这里公开分享出来

以上我的经历希望能够给大家带来帮助,需要这些资料的朋友可以戳这里,就可以免费拿到了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值