Node.js与网络:Node.js对TCP、UDP、Socket、HTTP等协议的实现和支持
2016-10-25 15:09
826 查看
OSI七层模型是不同计算机或通信系统间互联的标准体系和框架,在OSI中包括一系列标准和协议,如:
1.
1.2
应用层(Application Layer):应用层是网络服务与最终用户的一个接口,其功能是实现应用进程(如用户程序、终端操作员等)之间的信息交换。应用层协议有:
表示层(Presentation Layer):表示层用于数据表示形式的控制,其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示。
会话层(Session Layer):会话层是会话单位的控制层,用于建立、管理、终止会话,其主要功能是按照在应用进程之间约定的原则,按照正确的顺序收、发数据,进行各种形态的对话。会话层规定了会话服务用户间会话连接的建立和拆除规程以及数据传送规则。
传输层(Transport Layer):传输层定义传输数据的协议端口号,以及流控和差错效验。用于系统之间的数据传送控制层,主要功能是开放系统之间数据的收发确认。同时,还用于弥补各种通信网路的质量差异,对经过下三层之后仍然存在的传输差错进行恢复,进一步提高可靠性。会话层协议有:
网络层(Network Layer):进行逻辑地址寻址,实现不同网络之间的路径选择,为报文或分组通过通信子网选择最适当的路径。控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。网络层协议有:
数据链路层(Data Link Layer):数据链路可以粗略地理解为数据通道,该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。其功能包括:建立逻辑连接、进行硬件地址寻址、差错效验等。
物理层(Physical Layer):物理层并不是物理媒介本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程。物理层提供用于建立、保持和断开物理连接的机械的、电气的、功能的和过程的条件,如:建立、维护、断开物理连接。物理层协议有:
2.
2.1
Node.js的
Node.js中提供了
2.2
Node.js的
Node.js使用
2.3
Node.js的
在Node.js中可以使用
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服务器。
相关文章推荐
- Node.js与网络:Node.js对TCP、UDP、Socket、HTTP等协议的实现和支持
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- 网络各个协议:UDP、TCP/IP、SOCKET、HTTP
- SOCKET,TCP/UDP,HTTP,FTP网络协议之间的关系
- 网络协议:TCP/IP、UDP、Http、Socket
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
- 关于网络传输协议的介绍(TCP、UDP、IP、Http、Socket)
- 网络七层协议、TCP/IP、UDP、HTTP、Socket 个人理解
- 网络协议:TCP/IP、UDP、Http、Socket
- SOCKET,TCP/UDP,HTTP,FTP网络协议之间的关系
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)(二)
- Socket、TCP、UDP、HTTP、FTP等网络协议
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
- android 网络编程socket tcp/ip udp http之间的关系
- [网络] SOCKET, TCP/UDP, HTTP, FTP
- android 网络编程--socket tcp/ip udp http之间的关系
- node.js系列之TCP(socket通讯)与HTTP搞基