OSI層
|
功能
|
TCP/IP協議
|
應用層 |
文件傳輸,電子郵件,文件服務,虛擬終端
|
TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
|
表示層
|
數據格式化,代碼轉換,數據加密
|
-
|
會話層
|
數據格式化,代碼轉換,數據加密
|
-
|
傳輸層
|
提供端對端的接口
|
TCP,UDP
|
網絡層
|
爲數據包選擇路由
|
IP,ICMP,RIP,OSPF,BGP,IGMP
|
數據鏈路層
|
傳輸有地址的幀以及錯誤檢測功能
|
SLIP,CSLIP,PPP,ARP,RARP,MTU
|
物理層
|
以二進制數據形式在物理媒體上傳輸數據
|
ISO2110,IEEE802,IEEE802.2
|
var net = require('net'); var server = net.createServer(function(socket) { //新的鏈接 socket.on('data', function(data) { console.log('服務端接收到客戶端的消息:' + data.toString()); socket.write('服務端迴應:你好'); }); socket.on('end', function() { console.log('服務端斷開鏈接'); }); }); server.listen(8124, function() { console.log('TCP服務建立'); });
var net = require('net'); var client = net.connect({port:8124}, function() { console.log('客戶端鏈接成功'); client.write('客戶端發起問候:你好'); }); client.on('data', function(data) { console.log('客戶端接收服務端消息:' + data.toString()); client.end(); }); client.on('end', function() { console.log('客戶端斷開鏈接'); });
var dgram = require('dgram'); var server = dgram.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); }); server.bind(41234);
var dgram = require('dgram'); var client = dgram.createSocket('udp4'); var message = new Buffer('我是客戶端的消息'); client.send(message, 0, message.length, 41234, '127.0.0.1', function(err, bytes) { console.log('客戶端發送完成,關閉客戶端'); client.close(); });
建立服務端: var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-type': 'text/plain'}); res.end('Hello world!\n'); }).listen(8000); console.log('服務器已開啓');
var http = require('http'); var options = { hostname: '127.0.0.1', port: 8000, method: 'GET', path: '/' }; var req = http.request(options, function(res) { console.log('Status:'+res.statusCode); console.log('Headers:'+JSON.stringify(res.headers)); res.setEncoding('utf-8'); res.on('data', function(chunk) { console.log(chunk); }); }); req.end();