一、前语
本系列文章旨在复习核算机网络中心常识,进一步夯实根底,为以后 参加物联网、音视频、直播、即时通讯等范畴的项目做必定的常识储藏。
文章列表:
- 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协议。
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后,会进行以下操作:
- Sec-WebSocket-Key拼接一个固定的GUID值(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)。例:
dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
。 - 将1的成果进行SHA-1摘要核算 ,成果:
b37a4f2cc0624f1690f64606cf385945b2bec4ea
。 - 将2的成果进行Hex to Base64编码,成果:
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
。 - 将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协议来封装传递数据。
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的办法表达动作:
- 一个资源衔接到其他资源,运用子资源的办法
- GET:
/users/6/cars/88
- POST:
/users/8/cars
- GET:
- API版本化
idbeny.com/v1/users
idbeny.com/v2/users/66
- 回来JSON格局的数据
- 产生过错时,不要回来200状况码
六、HTTPDNS
HTTPDNS是根据HTTP协议向DNS服务器发送域名解析恳求。代替了根据DNS协议向运营商Local DNS建议解析恳求的传统办法,能够防止Local DNS造成的域名劫持和跨网拜拜访题。常用在移动互联网中(比方Android、iOS开发中)。
市面上已经有现成的处理计划,移动端集成相关的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
。
1. 衔接办法
FTP有2种衔接办法:自动(Active)和被迫(Passive)。
不管是哪种办法,都需求客户端和服务器树立2个衔接:
- 操控衔接:用于传输状况信息(指令) - 数据衔接:用于传输文件和目录信息(数据)
1.1. 自动办法
自动办法是服务器自动,客户端被迫。
- 客户端翻开一个随机的指令端口 - 端口号大于1024,假设为N。一起衔接至服务器的指令端口21(固定) - 客户端开端监听N+1数据端口 - 一起向服务器发送一个Port指令给服务器的指令端口21 - 此指令奉告服务器,客户端正在监听的数据端口是N+1,而且已准备好从此端口接收数据 - 服务器翻开20号数据端口(固定),而且创立和客户端数据端口(N+1)的衔接
1.2. 被迫办法
被迫办法是客户端自动,服务器被迫。
客户端经过两个随机的端口与服务器树立衔接:指令端口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. 收发邮件的过程
不同邮箱服务是不同直接通讯的,例如腾讯邮箱(@qq.com)要想发邮件给网易邮箱(@163.com),客户端经过SMTP协议发送至腾讯邮箱服务,腾讯邮箱服务器经过SMTP协议转发给网易邮箱服务器,网易邮箱用户经过POP/IMAP协议拉取网易邮箱服务器上的邮件。
2. POP的特色
- 客户端衔接服务器时,将会从服务器下载一切邮件。
- 能够设置下载完后,立即或一段时间后删除服务器邮件。
- 客户端的操作(比方删除邮件、移动到文件夹)不会跟服务器同步。
- 每个客户端都是独立的,都能够获得其自己的电子邮件副本。
3. IMAP的特色
-
客户端衔接服务器时,获取的是服务器上邮件的根本信息,并不会下载邮件。
- 等翻开邮件时,才开端下载邮件。
-
客户端的操作(比方删除邮件、移动到文件夹)会跟服务器同步。
-
一切客户端一直会看到相同的邮件和相同的文件夹。
专题系列文章
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多态原理
、String
、Array
、Dictionary
、引证计数
、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-小程序结构烘托原理