您的位置:首页 > 理论基础 > 计算机网络

Node.js与网络:Node.js对TCP、UDP、Socket、HTTP等协议的实现和支持

2016-10-25 15:09 826 查看
OSI七层模型是不同计算机或通信系统间互联的标准体系和框架,在OSI中包括一系列标准和协议,如:
TCP/IP
UDP
HTTP
等,在Node.js中提供了对这些协议的实现和支持,如:
net
模块提供了对
TCP
Socket
的封装和支持,
dgram
模块提供了对
UDP
的封装和支持、
http
模块进一步封装了
TCP
协议提供了对
HTTP
的支持。本文对网络中相关协议、概念及Node.js中对相关协议的实现模块做简单介绍,后续会有对具体介绍模块及其功能文章。

OSI
七层模型

Node.js
对网络协议的实现与支持


1.
OSI
七层模型

1.1 概念介绍

OSI(Open System Interconnection)开放系统互连参考模型,是ISO制定的一个用于计算机或通信系统间互联的标准体系,它是一个七层抽象模型,从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。目的是为不同计算机互连提供一个共同的基础和标准框架,OSI中包括一系列抽象的术语、概念,也包括具体的协议,遵循OSI参考模型和相关协议能够实现计算机或通信系统间互联互通。

1.2
OSI
七层模型简单介绍

应用层(Application Layer):应用层是网络服务与最终用户的一个接口,其功能是实现应用进程(如用户程序、终端操作员等)之间的信息交换。应用层协议有:
HTTP
FTP
TFTP
SMTP
SNMP
DNS

表示层(Presentation Layer):表示层用于数据表示形式的控制,其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示。
会话层(Session Layer):会话层是会话单位的控制层,用于建立、管理、终止会话,其主要功能是按照在应用进程之间约定的原则,按照正确的顺序收、发数据,进行各种形态的对话。会话层规定了会话服务用户间会话连接的建立和拆除规程以及数据传送规则。
传输层(Transport Layer):传输层定义传输数据的协议端口号,以及流控和差错效验。用于系统之间的数据传送控制层,主要功能是开放系统之间数据的收发确认。同时,还用于弥补各种通信网路的质量差异,对经过下三层之后仍然存在的传输差错进行恢复,进一步提高可靠性。会话层协议有:
TCP
UDP

网络层(Network Layer):进行逻辑地址寻址,实现不同网络之间的路径选择,为报文或分组通过通信子网选择最适当的路径。控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。网络层协议有:
ICMP
IGMP
IP
ARP
RARP

数据链路层(Data Link Layer):数据链路可以粗略地理解为数据通道,该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。其功能包括:建立逻辑连接、进行硬件地址寻址、差错效验等。
物理层(Physical Layer):物理层并不是物理媒介本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程。物理层提供用于建立、保持和断开物理连接的机械的、电气的、功能的和过程的条件,如:建立、维护、断开物理连接。物理层协议有:
RS 232C
RS 449/422/423
等。

2.
Node.js
对网络协议的实现与支持

2.1
net
模块与
TCP
Socket

TCP
Socket


TCP
(Transmission Control Protocol)传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,它位于
IP
协议之上,
TCP
是因特网中的传输层协议,使用三次握手协议建立连接,而终止一个连接要经过四次握手。
TCP
为应用层提供了一种传输机制,例如:
HTTP
就工作在
TCP
之上,其它很多面向连接的应用(如:iRC、SMTP、IMAP)也工作在
TCP
之上。

Socket
是在应用层和传输层之间的一个抽象层,它把
TCP/IP
层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信,
Socket
本身并不是协议,是对
TCP/IP
协议的封装,是一个调用接口。

Node.js的
net
模块


Node.js中提供了
net
模块,该模块提供了对TCP、Socket的封装与支持,它包含了创建
TCP
服务器/客户端的方法。
net
模块继承自
events
stream
模块,所以该模块创建的服务器/客户端也是一个事件发射器,而其创建的客户端
socket
套接字对象又是一个可读写的
Stream
net
模块网络操作的基础模块,Node.js中其它网络操作相关模块,如:
Http
模块等,都是基于
net
模块的进一步封装。

net
模型的详细介绍请参考:Node.js对TCP/Socket的实现之net模块的使用

2.2
dgram
模块与
UDP

UDP
用户数据报


UDP
(User Datagram Protocol)用户数据报协议,是一种无连接的传输层协议。它与
TCP
协议一样在
IP
协议之上,同样位于传输层,用于处理数据包。但
TCP
协议是面向链接,在网络节点之间提供可靠有序的数据传输。而
UDP
协议是一种无连接的协议,不具备
TCP
协议的可靠性。
UDP
无状态特性在有些情况下特别有用,例:消息的广播和多播等。使用
UDP
的应用程序包括:DNS、流媒体应用、IPTV、网络语音等。

Node.js的
dgram
模块


Node.js使用
dgram
模块来支持
UDP
用户数据报协议,由于不用像
TCP
那样面向连接,所以
UDP
要相对轻量。想要发送或接收
UDP
消息,就可以使用
dgram
模块创建套接字对象,通过该套接字可以将消息发送给其它
UDP
终端。将套接字对象绑定到
UDP
端口后,可以监听传入消息。
UDP
模块也实现了
events
模块,但与
TCP
的套接字对象不同,该模块没有继承
stream
模块。

dgram
模型的详细介绍请参考:Node.js用户数据报dgram模块

2.3
http
模块与
HTTP

HTTP
协议


HTTP
(Hypertext Transfer Protocol)超文本传输协议,是一个用于内容传输的应用层协议,是互联网上应用最为广泛的一种网络协议,它工作在
TCP
之上,是万维网进行数据通信的基础。
HTTP
连接最显著的特点是每次客户端发送的请求都需要服务器响应,请求结束后,连接会自动释放。

Node.js的
http
模块


在Node.js中可以使用
http
模块轻松创建HTTP服务器或HTTP客户端,
https
模块是其安全版本。
http
模块在
net
模块之上构建,所以
net
模块中的大部分功能都可以在
http
模块中使用。与
net
模块一样,
http
模块也实现了
events
stream
模块,所
http
模块创建的对象也分别是事件发射器或可读写的
Stream
,或既是事件发射器又是
Stream


http
模型的详细介绍请参考:详解Node.js的http模块之http模块概述
https
模型的详细介绍请参考:使用Node.js HTTPS模块创建HTTPS服务器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: