Nodejs的网络编程能力
网络模型 OSI & TCP/IP
Socket? 套接字? 快递盒??? 插座
- 实现底层通信,几乎所有的应用层都是通过 socket 进行通信
- 对 TCP/IP 协议进行封装,向应用层协议暴露接口调用
- TCP/IP协议族中,传输层存在两种协议:TCP、UDP
- 两种协议不同,因为不同的参数的socket 实现过程也不一样
Nodejs网络基础模块 - net/dgram
- net 模块是TCP/IP的Node实现,提供了一些用于底层的网络通信的小工具
- http.Server 继承自 net.Server
- http客户端与http服务端的通信均依赖于 socket (net.Socket)
- net.Server: TCP server,内部通过socket来实现与客户端的通信
- net.Socket: 本地socket 的 node 版实现,它实现了全双工的stream 接口
net.Socket
- net.Socket对象时TCP或UNIX Socket 的抽象
- net.Socket实例实现了一个双工流接口
- API归纳
- 连接相关connect
- 数据读写 write
- 数据属性 bufferSize
- 地址相关 address
动手写一个案例感受一下
- 服务器A启动服务,等待连接
- 基于事件驱动,服务器B访问服务器A提供的服务
- 关闭数据请求,结束服务
Nodejs的网络编程-http/https/http2
- HTTP模块是Node的门脸,是编写 Web Server 最常见的模块
- Server 部分继承自net.Server,并对请求和响应数据进行了封装
- 也提供了request/get 的能力,允许向其他服务器端发起HTTP请求
- Node封装了HTTPS/HTTP2的实现,可以轻松创建HTTP服务