一、前语

本系列文章旨在复习核算机网络中心常识,进一步夯实根底,为以后 参加物联网、音视频、直播、即时通讯等范畴的项目做必定的常识储藏。

文章列表:

  • 01-核算机网络中心常识|核算机网络通识【核算机网络功能指标、网络协议分层的几种办法、OSI七层模型概念通识】
  • 02-核算机网络中心常识|【建立调试环境、新建Java项目、核算机通讯根底、核算机衔接办法、集线器/网桥/交换机/路由器】
  • 03-核算机网络中心常识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
  • 04-核算机网络中心常识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
  • 05-核算机网络中心常识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
  • 06-核算机网络中心常识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和方针IP地址、ping】
  • 07-核算机网络协议中心常识|【传输层-UDP】
  • 08-核算机网络协议中心常识|【传输层-TCP之牢靠传输】
  • 09-核算机网络中心常识|传输层TCP2【流量操控原理、拥塞操控:slow start、congestion avoidance、快速重传、快速康复】
  • 10-核算机网络协议中心常识|【传输层-TCP衔接】
  • 11-核算机网络协议中心常识|【 运用层】
  • 12-核算机网络中心常识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源策略、跨域处理方
  • 13-核算机网络协议中心常识|【 署理/CDN/网络安全】
  • 14-核算机网络协议中心常识|【(非)对称加密/数字签名/证书】
  • 15-核算机网络协议中心常识|【HTTPS】
  • 16-核算机网络中心常识|HTTPS协议【HTTP2、HTTP3】

本文首要关注点:WebSocket、FTP、RESTful、SMTP、IMAP、POP等协议

二、ARP/RARP/ICMP

ARP(Address Resolution Protocol),地址解析协议。

  • 经过IP地址获取MAC地址。

RARP(Reverse Address Resolution Protocol),逆地址解析协议。

  • 运用与ARP相同的报头结构
  • 作用与ARP相反,用于将MAC地址转换为IP地址
  • 后来被BOOTP、DHCP所代替

ICMP(Internet Control Message Protocol),互联网操控音讯协议。

  • IPV4中的ICMP被称作ICMPv4,IPV6中的ICMP则被称作ICMPv6
  • 通常用于回来过错信息,比方TTL值过期,目的不可达
  • ICMP的过错音讯总是包括了源数据并回来给发送者

三、WebSocket

WebSocket是根据TCP的支撑全双工通讯的运用层协议(全双工:客户端和服务器均可自动发音讯给对方)。在2011年由IETF规范化为RFC_6455,后由RFC_7936补充规范。

WebSocket的运用场景许多:社交订阅、股票基金报价、体育实况更新、多媒体谈天、多玩家游戏等。

Socket是一套网络编程API,几乎一切的网络运用协议(HTTP/FTP/SMTP等)都是根据Socket完成的。而WebSocket是Web端的一个运用层通讯协议。

1. HTTP和WebSocket

HTTP恳求的特色:通讯只能由客户端建议,所以前期许多网站为了完成推送技能,运用的技能都是轮询。

轮询是指由浏览器每隔一段时间(如每秒)向服务器宣布HTTP恳求,然后服务器回来最新的数据给客户端。为了能更好的节省服务器资源和带宽,而且能够更实时地进行通讯,HTML5规范中呈现了WebSocket协议。

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

WebSocket和HTTP属于平级关系,都是运用层的协议。其实TCP自身便是支撑全双工通讯的,只是HTTP的“恳求-应对”办法约束了TCP的才能。

WebSocket运用80(ws://)、443(wss://)端口,能够绕过大多数防火墙的约束(http默许运用80端口,https默许运用443端口)。

与HTTP不同的是,WebSocket需求先树立衔接(运用层衔接)。这就使得WebSocket成为一种有状况的协议,之后通讯时能够省略部分状况信息。而HTTP恳求或许需求在每个恳求都额定携带状况信息(如身份认证等)。

2. 树立衔接

WebSocket需求借助HTTP协议来树立衔接(也叫作握手,Handshake)。

由客户端(浏览器)自动宣布握手恳求:


GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

服务器响应:


HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat

Connection:有必要设置Upgrade,表明客户端期望衔接晋级。

Upgrade:有必要设置websocket,表明期望晋级到WebSocket协议。

Sec-WebSocket-Version:表明支撑的WebSocket版本,RFC_6455要求运用的版本是13。

Sec-WebSocket-Key:客户端生成的随机字符串(比方比方中的dGhlIHNhbXBsZSBub25jZQ==)。

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

  1. Sec-WebSocket-Key拼接一个固定的GUID值(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)。例:dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
  2. 将1的成果进行SHA-1摘要核算 ,成果:b37a4f2cc0624f1690f64606cf385945b2bec4ea
  3. 将2的成果进行Hex to Base64编码,成果:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
  4. 将3的成果作为Sec-WebSocket-Accept响应头的值,回来给客户端。

如此操作,能够尽量防止一般HTTP恳求被误认为WebSocket协议。

3. 运用

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

W3C规范化了一套WebSocket API,能够直接运用JS调用。


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

四、WebService

WebService(Web服务)是一种跨编程言语和跨操作系统渠道的远程调用技能规范。

WebService运用场景举例:

  • 天气预报、手机归属地查询、航班信息查询、物流信息查询等。
  • 比方天气预报,是气象局把自己的服务以WebService办法露出出来,让第三方程序能够调用这些服务功用(www.webxml.com.cn/zh_cn/index…

事实上,WebService彻底能够用一般的Web API代替(比方HTTP + JSON),现在许多企业的敞开渠道都是直接采用Web API。

1. WebService – 中心概念

SOAP(Simple Object Access Protocol),简略方针拜访协议。许多时分,SOAP = HTTP + XML。WebService运用SOAP协议来封装传递数据。

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

SOAP其实便是正常的HTTP恳求和有规范格局的XML,恳求和响应都是XML文件。

WSDL(Web Services Description Language),Web服务描述言语。一个XML文档,用以描述WebService接口的细节(比方参数、回来值等)。一般在WebService的URL后面跟上?wsdl获取WSDL信息。比方:ws.webxml.com.cn/WebServices…

五、RESTful

REST(Representatioanl State Transfer),体现层状况转移。

REST是一种互联网软件架构设计风格,界说了一组用于创立Web服务的约束。符合REST架构的Web服务,称为RESTful Web服务器。

RESTful后面的ful表明形容词,例如wonder -> wonderful 。

实践建议:

  • URL中运用名词(建议用复数办法),不运用动词。
    • 引荐:/users/users/6
    • 不引荐:listUsers/getUser?id=6/user/list/user/get?id=6
  • 运用HTTP的办法表达动作:
    17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】
  • 一个资源衔接到其他资源,运用子资源的办法
    • GET:/users/6/cars/88
    • POST:/users/8/cars
  • API版本化
    • idbeny.com/v1/users
    • idbeny.com/v2/users/66
  • 回来JSON格局的数据
  • 产生过错时,不要回来200状况码

六、HTTPDNS

HTTPDNS是根据HTTP协议向DNS服务器发送域名解析恳求。代替了根据DNS协议向运营商Local DNS建议解析恳求的传统办法,能够防止Local DNS造成的域名劫持和跨网拜拜访题。常用在移动互联网中(比方Android、iOS开发中)。

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

市面上已经有现成的处理计划,移动端集成相关的SDK即可运用HTTPDNS服务。

  • 腾讯云:cloud.tencent.com/product/htt…
  • 阿里云:help.aliyun.com/product/301…

七、FTP

FTP(File Transport Protocol),文件传输协议。RFC_959界说了此规范,是根据TCP的运用层协议。在RFC_1738中有界说,FTP的URL格局为:ftp://[user[:password]@]host:[:port]/url-path

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

1. 衔接办法

FTP有2种衔接办法:自动(Active)和被迫(Passive)。

不管是哪种办法,都需求客户端和服务器树立2个衔接:

- 操控衔接:用于传输状况信息(指令) - 数据衔接:用于传输文件和目录信息(数据)

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

1.1. 自动办法

自动办法是服务器自动,客户端被迫。

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】
- 客户端翻开一个随机的指令端口 - 端口号大于1024,假设为N。一起衔接至服务器的指令端口21(固定) - 客户端开端监听N+1数据端口 - 一起向服务器发送一个Port指令给服务器的指令端口21 - 此指令奉告服务器,客户端正在监听的数据端口是N+1,而且已准备好从此端口接收数据 - 服务器翻开20号数据端口(固定),而且创立和客户端数据端口(N+1)的衔接

1.2. 被迫办法

被迫办法是客户端自动,服务器被迫。

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

客户端经过两个随机的端口与服务器树立衔接:指令端口N、数据端口N+1。 - 客户端的指令端口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端口

1. 收发邮件的过程

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

不同邮箱服务是不同直接通讯的,例如腾讯邮箱(@qq.com)要想发邮件给网易邮箱(@163.com),客户端经过SMTP协议发送至腾讯邮箱服务,腾讯邮箱服务器经过SMTP协议转发给网易邮箱服务器,网易邮箱用户经过POP/IMAP协议拉取网易邮箱服务器上的邮件。

2. POP的特色

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

  • 客户端衔接服务器时,将会从服务器下载一切邮件。
    • 能够设置下载完后,立即或一段时间后删除服务器邮件。
  • 客户端的操作(比方删除邮件、移动到文件夹)不会跟服务器同步。
  • 每个客户端都是独立的,都能够获得其自己的电子邮件副本。

3. IMAP的特色

17-计算机网络核心知识|【WebSocket、WebService、RESTful、HTTPDNS、FTP、邮件相关的协议】

  • 客户端衔接服务器时,获取的是服务器上邮件的根本信息,并不会下载邮件。

    • 等翻开邮件时,才开端下载邮件。
  • 客户端的操作(比方删除邮件、移动到文件夹)会跟服务器同步。

  • 一切客户端一直会看到相同的邮件和相同的文件夹。

    专题系列文章

1. 前常识

  • 01-探求iOS底层原理|综述
  • 02-探求iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器、LLVM】
  • 03-探求iOS底层原理|LLDB
  • 04-探求iOS底层原理|ARM64汇编

2. 根据OC言语探求iOS底层原理

  • 05-探求iOS底层原理|OC的实质
  • 06-探求iOS底层原理|OC方针的实质
  • 07-探求iOS底层原理|几种OC方针【实例方针、类方针、元类】、方针的isa指针、superclass、方针的办法调用、Class的底层实质
  • 08-探求iOS底层原理|Category底层结构、App启动时Class与Category装载过程、load 和 initialize 执行、关联方针
  • 09-探求iOS底层原理|KVO
  • 10-探求iOS底层原理|KVC
  • 11-探求iOS底层原理|探求Block的实质|【Block的数据类型(实质)与内存布局、变量捕获、Block的品种、内存办理、Block的修饰符、循环引证】
  • 12-探求iOS底层原理|Runtime1【isa详解、class的结构、办法缓存cache_t】
  • 13-探求iOS底层原理|Runtime2【音讯处理(发送、转发)&&动态办法解析、super的实质】
  • 14-探求iOS底层原理|Runtime3【Runtime的相关运用】
  • 15-探求iOS底层原理|RunLoop【两种RunloopMode、RunLoopMode中的Source0、Source1、Timer、Observer】
  • 16-探求iOS底层原理|RunLoop的运用
  • 17-探求iOS底层原理|多线程技能的底层原理【GCD源码剖析1:主队列、串行队列&&并行队列、大局并发队列】
  • 18-探求iOS底层原理|多线程技能【GCD源码剖析1:dispatch_get_global_queue与dispatch_(a)sync、单例、线程死锁】
  • 19-探求iOS底层原理|多线程技能【GCD源码剖析2:栅门函数dispatch_barrier_(a)sync、信号量dispatch_semaphore】
  • 20-探求iOS底层原理|多线程技能【GCD源码剖析3:线程调度组dispatch_group、事情源dispatch Source】
  • 21-探求iOS底层原理|多线程技能【线程锁:自旋锁、互斥锁、递归锁】
  • 22-探求iOS底层原理|多线程技能【原子锁atomic、gcd Timer、NSTimer、CADisplayLink】
  • 23-探求iOS底层原理|内存办理【Mach-O文件、Tagged Pointer、方针的内存办理、copy、引证计数、weak指针、autorelease

3. 根据Swift言语探求iOS底层原理

关于函数枚举可选项结构体闭包特点办法swift多态原理StringArrayDictionary引证计数MetaData等Swift根本语法和相关的底层原理文章有如下几篇:

  • 01-Swift5常用中心语法|了解Swift【Swift简介、Swift的版本、Swift编译原理】
  • 02-Swift5常用中心语法|根底语法【Playground、常量与变量、常见数据类型、字面量、元组、流程操控、函数、枚举、可选项、guard句子、区间】
  • 03-Swift5常用中心语法|面向方针【闭包、结构体、类、枚举】
  • 04-Swift5常用中心语法|面向方针【特点、inout、类型特点、单例办法、办法、下标、承继、初始化】
  • 05-Swift5常用中心语法|高档语法【可选链、协议、过错处理、泛型、String与Array、高档运算符、扩展、拜访操控、内存办理、字面量、办法匹配】
  • 06-Swift5常用中心语法|编程范式与Swift源码【从OC到Swift、函数式编程、面向协议编程、响应式编程、Swift源码剖析】

4. C++中心语法

  • 01-C++中心语法|C++概述【C++简介、C++起源、可移植性和规范、为什么C++会成功、从一个简略的程序开端认识C++】
  • 02-C++中心语法|C++对C的扩展【::作用域运算符、名字操控、struct类型加强、C/C++中的const、引证(reference)、函数】
  • 03-C++中心语法|面向方针1【 C++编程规范、类和方针、面向方针程序设计事例、方针的结构和析构、C++面向方针模型初探】
  • 04-C++中心语法|面向方针2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转换、 C++规范、过错&&异常、智能指针】
  • 05-C++中心语法|面向方针3【 承继和派生、多态、静态成员、const成员、引证类型成员、VS的内存窗口】

5. Vue全家桶

  • 01-Vue全家桶中心常识|Vue根底【Vue概述、Vue根本运用、Vue模板语法、根底事例、Vue常用特性、综合事例】
  • 02-Vue全家桶中心常识|Vue常用特性【表单操作、自界说指令、核算特点、侦听器、过滤器、生命周期、综合事例】
  • 03-Vue全家桶中心常识|组件化开发【组件化开发思想、组件注册、Vue调试东西用法、组件间数据交互、组件插槽、根据组件的
  • 04-Vue全家桶中心常识|多线程与网络【前后端交互办法、promise用法、fetch、axios、综合事例】
  • 05-Vue全家桶中心常识|Vue Router【根本运用、嵌套路由、动态路由匹配、命名路由、编程式导航、根据vue-router的事例】
  • 06-Vue全家桶中心常识|前端工程化【模块化相关规范、webpack、Vue 单文件组件、Vue 脚手架、Element-UI 的根本运用】
  • 07-Vue全家桶中心常识|Vuex【Vuex的根本运用、Vuex中的中心特性、vuex事例】

6. 音视频技能中心常识

  • 01-音视频技能中心常识|了解音频技能【移动通讯技能的发展、声响的实质、深化了解音频】
  • 02-音视频技能中心常识|建立开发环境【FFmpeg与Qt、Windows开发环境建立、Mac开发环境建立、Qt开发根底】
  • 03-音视频技能中心常识|Qt开发根底【.pro文件的配置、Qt控件根底、信号与槽】
  • 04-音视频技能中心常识|音频录制【指令行、C++编程】
  • 05-音视频技能中心常识|音频播映【播映PCM、WAV、PCM转WAV、PCM转WAV、播映WAV】
  • 06-音视频技能中心常识|音频重采样【音频重采样简介、用指令行进行重采样、经过编程重采样】
  • 07-音视频技能中心常识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
  • 08-音视频技能中心常识|成像技能【重识图片、详解YUV、视频录制、显现BMP图片、显现YUV图片】
  • 09-音视频技能中心常识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
  • 10-音视频技能中心常识|RTMP服务器建立【流媒体、服务器环境】

7. 核算机网络中心常识

  • 01-核算机网络中心常识|核算机网络通识【核算机网络功能指标、网络协议分层的几种办法、OSI七层模型概念通识】
  • 02-核算机网络中心常识|【建立调试环境、新建Java项目、核算机通讯根底、核算机衔接办法、集线器/网桥/交换机/路由器】
  • 03-核算机网络中心常识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
  • 04-核算机网络中心常识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
  • 05-核算机网络中心常识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
  • 06-核算机网络中心常识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和方针IP地址、ping】
  • 07-核算机网络协议中心常识|【传输层-UDP】
  • 08-核算机网络协议中心常识|【传输层-TCP之牢靠传输】
  • 09-核算机网络中心常识|传输层TCP2【流量操控原理、拥塞操控:slow start、congestion avoidance、快速重传、快速康复】
  • 10-核算机网络协议中心常识|【传输层-TCP衔接】
  • 11-核算机网络协议中心常识|【 运用层】
  • 12-核算机网络中心常识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源策略、跨域处理方
  • 13-核算机网络协议中心常识|【 署理/CDN/网络安全】
  • 14-核算机网络协议中心常识|【(非)对称加密/数字签名/证书】
  • 15-核算机网络协议中心常识|【HTTPS】
  • 16-核算机网络中心常识|HTTPS协议【HTTP2、HTTP3】

其它底层原理专题

1. 底层原理相关专题

  • 01-核算机原理|核算机图形烘托原理这篇文章
  • 02-核算机原理|移动终端屏幕成像与卡顿

2. iOS相关专题

  • 01-iOS底层原理|iOS的各个烘托结构以及iOS图层烘托原理
  • 02-iOS底层原理|iOS动画烘托原理
  • 03-iOS底层原理|iOS OffScreen Rendering 离屏烘托原理
  • 04-iOS底层原理|因CPU、GPU资源消耗导致卡顿的原因和处理计划

3. webApp相关专题

  • 01-Web和类RN大前端的烘托原理

4. 跨渠道开发计划相关专题

  • 01-Flutter页面烘托原理

5. 阶段性总结:Native、WebApp、跨渠道开发三种计划功能比较

  • 01-Native、WebApp、跨渠道开发三种计划功能比较

6. Android、HarmonyOS页面烘托专题

  • 01-Android页面烘托原理
  • 02-HarmonyOS页面烘托原理 (待输出)

7. 小程序页面烘托专题

  • 01-小程序结构烘托原理