关于javascript:网络协议-设计模式

2次阅读

共计 1772 个字符,预计需要花费 5 分钟才能阅读完成。

1. 了解什么是协定,理解 TCP/IP 网络协议族的形成,每层协定在应用程序中施展的作用

电脑要通信就必须恪守独特的规定
国际标准化组织 (ISO) 定义了网络协议的根本框架,被称为 OSI 模型。要制订通信规定,内容会很多,比方要思考 A 电脑如何找到 B 电脑,A 电脑在发送信息给 B 电脑时是否须要 B 电脑进行反馈,A 电脑传送给 B 电脑的数据的格局又是怎么的?内容太多太杂,所以 OSI 模型将这些通信规范进行档次划分,每一档次解决一个类别的问题,这样就使得规范的制订没那么简单。
OSI 模型制订的七层规范模型,别离是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
TCP/IP 是一个协定族,也是依照档次划分。共四层:应用层,传输层,互连网络层,网络接口层。
TCP/IP 协定中的应用层协定,就对应于 OSI 中的应用层,表示层,会话层
次要关注应用层和传输层的协定就能够了。
1. 什么是 socket?

以前有据说过 socket 编程这种说法,也有的说套接字编程。我在搜寻对于 socket 的材料时,发现有的说 socket 是指一个连贯,有的说 socket 是一指一个端点。拿打电话做比喻,A 电话机和 B 电话机正在通话,那么 socket 是指的 A 和 B 之间的连接线呢,还是指电话机(端点)?

我当初的了解是,socket 就是一个连贯中的一个端点,一次通信(连贯)a,b 端都会有一个 socket。一个 socket 对应一个连贯。

2.http 协定属于应用层还是传输层?

http 超文本传送协定,听下来像是传输层的协定一样。但事实上大家都晓得 http 和 ftp 一样都是属于应用层的协定,

2. 三次握手和四次挥手具体原理,为什么要应用这种机制

三次握手建设连贯

四次挥手敞开连贯

第四次挥手是确保服务端 —-> 客户端之间的传输是没有问题的。是一个必要的过程
断开一个 TCP 连贯时,须要客户端和服务端总共发送 4 个包以确认连贯的断开。在 socket 编程中,这一过程由客户端或服务端任一方执行 close 来触发。

了解 WebSocket 协定的底层原理、与 HTTP 的区别
Socket 原理:
服务端有一个过程(或者多个过程)在指定端口期待客户来连贯,服务程序期待客户的连贯信息,一旦连贯上之后,就能够按设计的数据交换办法和格局进行数据传输。客户端在须要的时刻收回向服务器端的连贯申请。
socket 是 TCP/IP 过程间通信的底层实现 bai(当然,socket 只是 duipc 中的一种,此 zhi 外还有音讯队列、信号灯、共享 dao 内存等很多伎俩)。

http(s)是在 socket 之上封装的一种下层通信协定,其特点是:

服务端监听通信,被动提供服务;客户端被动向服务端发动连贯申请,建设起通信。

每一次交互都是:客户端被动发动申请(request),服务端被动应答(response)。

服务端不能被动向客户端推送数据。

通信的数据是基于文本格式的。二进制数据(比方图片等)要利用 base64 等伎俩转换为文本后能力传输。

websocket 也是在 socket 之上封装的一种下层通信协定,其特点是:
websocket 通信的建设阶段是依赖于 http 协定的。最后的握手阶段是 http 协定,握手实现后就切换到 websocket 协定,并齐全与 http 协定脱离了。

建设通信时,也是由客户端被动发动连贯申请,服务端被动监听。

通信一旦建设连贯后,通信就是“全双工”模式了。也就是说服务端和客户端都能在任何工夫自在得发送数据,非常适合服务端要被动推送实时数据的业务场景。

交互模式不再是“申请 - 应答”模式,齐全由开发者自行设计通信协定。

通信的数据是基于“帧(frame)”的,能够传输文本数据,也能够间接传输二进制数据,效率高。当然,开发者也就要思考封包、拆包、编号等技术细节。
HTTP:每一次数据传输都须要有一个 HTTP 头部,头部的大小不一,可能只有几百 B,也可能有几千 B。

WebSocket 只有在进行连贯的时候须要发送一个 HTTP 申请,之后就再也不须要发送纷纷的 HTTP 头部信息,光从字节数上就缩小了很多。而在敞开 WebSocket 的过程中,也不须要像建设握手的时候那么繁冗,只须要传送一个特定的字节码 0×8 的敞开帧就行,服务端收到之后,须要响应一个敞开帧到客户端。
WebSocket 能够始终放弃连贯,通过 Socket 通道传输数据,节俭掉了建设连贯须要消耗的工夫。

正文完
 0