构建TCP服务

2020-02-16  本文已影响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的会话结果并无差异。

上一篇 下一篇

猜你喜欢

热点阅读