Node只需要几行代码即可构建服务器,无需额外的容器。
Node提供了net、dgram、http、https这四个模块,分别用于处理TCP、UDP、HTTPS、HTTPS,适用于服务器端和客户端。
TCP
只有会话形成之后,服务器端和客户端之间才能互相发送数据。在创建会话的过程中,服务器端和客户端分别提供一个套接字,这两个套接字共同形成一个连接。服务器端与客户端则通过套接字实现两者之间连接的操作。

data事件:当一端调用write()发送数据时,另一端会触发data事件,事件传递的数据即使write()发送的数据。
connect/connection事件:当套接字与服务器/客户端套接字连接成功时触发。
UDP
UDP又称用户数据包协议,与TCP一样同属于网络传输层。UDP与TCP最大的不同是UDP不是面向连接的。TCP中连接一旦建立,所有的会话都基于连接完成,客户端如果要与另一个TCP服务通信,需要另创建一个套接字来完成连接。但在UDP中,一个套接字可以与多个UDP服务通信。

UDP就比TCP少了个connect事件
HTTP

TCP服务以connection为单位进行服务,HTTP服务以request为单位进行服务。http模块即是将connect到request的过程进行了封装。http模块将连接所用套接字的读写抽象为ServerRequest(req)和ServerResponse(res)对象。
在开始HTTP请求和响应时,客户端与服务器端需要建立底层的TCP连接,这个连接开启了keep-alive。**响应头Connection: keep-alive。**res.end()关闭连接。
路径解析:
根据路径进行业务处理的应用是静态文件服务器,它会根据路径去查找磁盘中的文件,然后将其响应给客户端。
function(req,res){
var pathname = url.parse(req.url).pathname;//url.parse()可以将一个完整的URL地址,分为很多部分,常用的有:host、port、pathname、path、query
fs.readFile(path.join(ROOT,pathname),function(err,file){
if(err){
res.writeHead(404);
res.end('找不到相关文件');
return;
}
res.writeHead(200);
res.end(file);
});
}
查询字符串
var query = url.parse(req.url,true).query;
cookie
浏览器会将Cookie发向服务器端
req.headers.cookie,Cookie值的格式是key=value;key2=value
服务器响应的Cookie值在Set-Cookie字段中
Set-Cookie:name=value;Paht=/;...
HTTPS

Node只需要几行代码即可构建服务器,无需额外的容器。
Node提供了net、dgram、http、https这四个模块,分别用于处理TCP、UDP、HTTPS、HTTPS,适用于服务器端和客户端。
TCP
只有会话形成之后,服务器端和客户端之间才能互相发送数据。在创建会话的过程中,服务器端和客户端分别提供一个套接字,这两个套接字共同形成一个连接。服务器端与客户端则通过套接字实现两者之间连接的操作。

data事件:当一端调用write()发送数据时,另一端会触发data事件,事件传递的数据即使write()发送的数据。
connect/connection事件:当套接字与服务器/客户端套接字连接成功时触发。
UDP
UDP又称用户数据包协议,与TCP一样同属于网络传输层。UDP与TCP最大的不同是UDP不是面向连接的。TCP中连接一旦建立,所有的会话都基于连接完成,客户端如果要与另一个TCP服务通信,需要另创建一个套接字来完成连接。但在UDP中,一个套接字可以与多个UDP服务通信。

UDP就比TCP少了个connect事件
HTTP
TCP服务以connection为单位进行服务,HTTP服务以request为单位进行服务。http模块即是将connect到request的过程进行了封装。http模块将连接所用套接字的读写抽象为ServerRequest(req)和ServerResponse(res)对象。
在开始HTTP请求和响应时,客户端与服务器端需要建立底层的TCP连接,这个连接开启了keep-alive。**响应头Connection: keep-alive。**res.end()关闭连接。
路径解析:
根据路径进行业务处理的应用是静态文件服务器,它会根据路径去查找磁盘中的文件,然后将其响应给客户端。
查询字符串
var query = url.parse(req.url,true).query;cookie
浏览器会将Cookie发向服务器端
req.headers.cookie,Cookie值的格式是key=value;key2=value服务器响应的Cookie值在Set-Cookie字段中
Set-Cookie:name=value;Paht=/;...HTTPS