# 网络编程

Node 模块

node 提供 net、dgram、http、https模块分别用于处理TCP、UDP、HTTP、HTTPS

# 构建TCP服务

  • 三次握手:1.客服端请求连接 2.服务端响应 3.客户端开始传输 一旦建立。所有的会话都基本完成
var net = require('net')
var server = net.createServer(function(socket) {
  // 新的连接
  socket.on('data', function(data) {
    socket.write('hi')
  })
  
  socket.on('end', function() {
    console.log('close connect')
  })

  socket.write('build tcp connect')
})

server.listen(8124, function() {
  console.log('server bound')
})

# 构建UDP服务

一个套接字可以与多个UDP服务通信

# 创建UDP套接字

var dgram = require('dgram')
var socket = dgram.createSocket('udp4')

# 创建UDP服务端

var dgram = require('dgram')

var server = dgeram.createSocket('udp4')
server.on('message', function(msg, rinfo) {
  console.log(msg, rinfo.address, rinfo.port)
})
server.on('listening', function() {
  var address = server.address()
  console.log(address.address, address.port)
})

# 创建UDP客户端

var dgram = require('dgram')

var message = new Buffer('hi, I like you!')
var client = dgram.createSocket('udp4')
client.send(message, 0, message.length, 41234,'localhost', function(err, bytes) {
  client.close()
})

# 构建HTTP服务

var http = require('http')
http.createServer(function(req, res) {
  res.setHeader('Content-Type', 'text/plain;charset=utf-8')
  res.end('你好!')
})
http.listen(80, function() {
  console.log('run ok')
})

# 构建WebSocket服务

var socket = new WebSocket('ws://127.0.0.1:8888')
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0) {
      socket.send(getUpdateData())
    }
  }, 50)
}
socket.onmessage = function (event) {
  console.log(event)
}

# 网络服务安全

  • node 网络安全提供3个模块: crypto、tls、https

# TLS/SSL -- 公钥/私钥

  • 是一个非对称结构,每个服务器端和客户端都有自己的公私钥
  • 公钥 -- 用来加密要传输的数据
  • 私钥 -- 用来解密接收到的数据
  • 建立安全传输之前,客户端和服务端之间需要交换公私钥

# 数组证书验证 --- 公私钥的真伪

上次更新时间: 2019-12-24 2:17:04 PM