5层网络协议

  1. 应用层
    1. http (80)
    2. FTP (21)
    3. SMTP (25)
    4. POP3 (110)
    5. DNS
  2. 传输层 (运输层)
    1. TCP
    2. UDP
  3. 网络层
    1. IP
    2. ICMP
  4. 数据链路层
    1. PPP
    2. SLIP
  5. 物理层
    1. ISO2110规范

TCP/IP

信息:吃了吗?

GET /test?param=111 HTTP/1.1
http协义定义的报文格式

  1. var net = require('net');
  2. var server = net.createServer();
  3. server.listen(12306, '127.0.0.1');
  4. server.on('listening', ()=>{
  5. console.log('服务已经启动了');
  6. });
  7. server.on('connection', socket=>{
  8. console.log('有新的连接');
  9. socket.on('data', ()=>{
  10. console.log(data.toString()); // 这里出现完整的报文信息
  11. });
  12. });

主要关注

image.png

net.Server

扮演服务端

  • 事件
    • listening 监听端口后触发的事件
    • connection 当有客户端请求链接时候触发
    • close 服务器关闭时触发
      • 不常用,因为我们关闭服务器的方式通常杀线程来关闭
    • error 服务器出现错误时触发
  • 方法

    • listen server监听的端口
    • close 关闭服务器
    • address 在回调中查看主机的IP
      • 一般我们肯定知道自己的ip,没多大用

        net.Socket

        扮演客户端
  • 事件

    • connect 连接到服务器时触发
    • data 当接受到数据时触发
      • 一般是做参数
    • end 写入数据完成后调用
    • timeout 趕后触发
    • error
    • close socket关闭时触发
  • 属性
    • remoteAddress 服务器地址
    • remotePort 服务器端口
    • localAdress 本地地址
    • localPort 本地端口
  • 方法
    • connect 连接服务器
    • setTimeout 设置超时
    • write socket中写入数据
    • end 写入结束