网络编程
构建TCP 服务
创建 TCP 服务器
TCP全名为传输控制协议,在OSI模型(由七层组成,分别为物理层、数据链结层、网络层、 传输层、会话层、表示层、应用层)中属于传输层协议。
3次握手创建会话
服务 器端和客户端分别提供一个套接字,这两个套接字共同形成一个连接
服务器端与客户端则通过 套接字实现两者之间连接的操作
TCP 服务的事件
服务器事件,listening,connection,close,error
连接事件,data,end,connect,drain,error,close,timeout
TCP针对网络中的小数据包有一定的优化策略:Nagle算法
要求缓冲区的数据达到一定数量或者一定时间后才将其发出
构建UDP服务
UDP
在 UDP 中,一个套接字可以与多个 UDP 服务通信
UDP 又称用户数据包协议,与 TCP 一样同属于网络传输层
无须连接,资源消耗低,处理快速且灵活
若想让UDP套接字接收网络消息,只要调用dgram.bind(port, [address])方法对网卡和端口 进行绑定即可
UDP 是一个EventEmitter的实例,而非Stream 的实例,具有自定义事件,message,listening,close,error
构建HTTP服务
HTTP
HTTP的全称是超文本传输协议
HTTP构建在TCP之上,属于应用层协议
HTTP报文
第一部分内容为经典的 TCP的3次握手过程
第二部分是在完成握手之后,客户端向服务器端发送请求报文
第三部分是服务器端完成处理后,向客户端发送响应内容,包括响应头和响应体
最后部分是结束会话的信息
HTTP客户端事件,response,socket,connect,upgrade,protocols,continue
构建 WebSocket 服务
WebSocket
WebSocket客户端基于事件的编程模型与Node中自定义事件相差无几
WebSocket实现了客户端与服务器端之间的长连接
客户端与服务器端只建立一个TCP连接,可以使用更少的连接。
WebSocket服务器端可以推送数据到客户端
有更轻量级的协议头,减少数据传送量
WebSocket握手
upgrade
切换协议
WebSocket数据传输
为了安全考虑,客户端需要对发送的数据帧进行掩码处理
网络服务与安全
SSL作为一种安全协议,它在传输层提供对网络连接加密的功能
Node在网络安全模块
crypto
· 主要用于加 密解密,SHA1、MD5等加密算法都在其中有体现,
tls
· TLS/SSL是一个公钥/私钥的结构,它是一个非对称的结构
· 公钥用来加密要传输的数据,私钥用来解密接收到的数据
· 为了防止中间人攻击,TLS/SSL引入了数字证书来进行认证
· 创建服务器端
• 创建一个安全的TCP服务
• 测试证书是否正常
· TLS客户端
• 启动客户端的过程中,用到了为客户端生成的私钥、证书、CA证书
https
· HTTPS服务就是工作在TLS/SSL上的HTTP
· 1. 准备证书
· 2. 创建HTTPS服务
· 3. HTTPS客户端