美文网首页
构建TCP服务

构建TCP服务

作者: 萘小蒽 | 来源:发表于2020-02-16 14:01 被阅读0次

    TCP服务在网络应用中十分常见,目前大多数的应用都是基于TCP搭建而成的。

    1. 什么是TCP?

    tcp全名叫传输控制协议,在OSI模型(开放式系统互联通信参考模型由七层组成,分别为物理层、数据连接层、网络层、传输层、会话层、表示层、应用层)中属于传输层协议。
    许多应用层协议基于tcp构建,典型是HTTP、SMTP、IMAP等协议。

    HTTP、SMTP、IMAP等 应用层
    加密\解密等 表示层
    通信连接\维持会话 会话层
    TCP\UDP 传输层
    IP 网络层
    网络特有的链路接口 链路层
    网络物理硬件 物理层

    \color{#595959}{\small\mathbf{ 视图:OSI模型(七层协议)}}

    TCP是面向连接的协议,其显著的特征是在传输之前需要三次握手:请求,确认,连接。

    **tcp传输之前的三次握手**

    只有在会话形成之后,服务器端和客户端之间才能相互发送数据
    在创建会话的过程中,服务端和客户端分别提供一个套接字(socket),这两个套接字共同形成一个链接。服务器端与客户端则通过套接字实现两者之间的操作。

    2. 创建TCP服务器端

    基本了解tcp的工作原理之后,开始创建一个TCP服务器端来接受网络请求:

    //createServer.js
    var net = require('net');
    var server = net.createServer(socket => {  //创建TCP服务端
        socket.on('data', data => {
            console.log(data.toString()) //服务端接收
        });
        socket.on('end', data => {
            console.log('链接断开')
        })
        socket.write('欢迎光临我的示例:\n');
    })
    server.listen(8124, () => {
        console.log('server bound');
    })
    

    通过net.createServer(listener)创建一个tcp服务,listener是链接事件connection的监听器,也可以使用以下方式进行监听:

    var server = net.createServer();
    server.on('connection',socket =>{
     //新的链接
    })
    server.listen(8124);
    

    TCP服务端一旦建立连接成功后,会得到一个socket对象作为回调中的参数,我们可以操作这个socket对象,tcp连接的对象socket是可读可写的流。作为一个流对象,因此能够监听data,end等事件;作为一个可写流,具有write()方法。

    在tcp服务对象的‘connection’也能注册监听回调事件,也能从回调的参数中拿到上面所说socket对象。

    3. TCP客户端

    通过net模块自行构造客户端进行会话:

    //client.js
    var net = reuire('net');
    var client = net.connect({port:8124},fuction(){
      console.log("client  connected";
         client.write('world!')  
      )
    })
    client.on('data',(data)=>{
      console.log(data.tostring());
      client.end();
    });
    client.on('end',()=>{
      console.log('client disconnected');
    });
    

    当我们执行node client.js和使用telent的会话结果并无差异。

    相关文章

      网友评论

          本文标题:构建TCP服务

          本文链接:https://www.haomeiwen.com/subject/swblfhtx.html