net 模塊用於建立基於流的 TCP 或 IPC 的服務器(net.createServer())與客戶端(net.createConnection())。html
net模塊是專門用於網絡通訊的模塊,若當前的數據交互不經過HTTP協議,就可使用net模塊,如WebSocket。node
HTTP協議本質上是以文本形式傳輸數據,它的傳輸數據量較大,並且它的傳輸須要二進制和文本之間進行轉換和解析。git
在nodejs中,HTTP模塊是繼承自net模塊的。github
OSI(Open System Interconnect),即開放式系統互聯。 它是ISO(國際標準化組織)組織在1985年研究的網絡互聯模型。該體系結構標準定義了網絡互聯的七層框架(物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層),即OSI開放系統互連參考模型。在這一框架下進一步詳細規定了每一層的功能,以實現開放系統環境中的互連性、互操做性和應用的可移植性。算法
OSI參考模型能夠分爲如下七層:數據庫
物理層 → 數據鏈路層 → 網絡層(IP協議) → 傳輸層(TCP層) → 會話層 → 表現層 → 應用層(HTTP協議等)api
OSI參考模型詳細介紹以下:安全
第1層物理層:處於OSI參考模型的最底層。物理層的主要功能是利用物理傳輸介質爲數據鏈路層提供物理鏈接,以便透明的傳送比特流。經常使用設備有(各類物理設備)網卡、集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜。服務器
第2層數據鏈路層:在此層將數據分幀,並處理流控制。屏蔽物理層,爲網絡層提供一個數據鏈路的鏈接,在一條有可能出差錯的物理鏈接上,進行幾乎無差錯的數據傳輸(差錯控制)。本層指定拓撲結構並提供硬件尋址。經常使用設備有網橋、交換機;網絡
第3層網絡層:本層經過尋址來創建兩個節點之間的鏈接,爲源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。它包括經過互連網絡來路由和中繼數據 ;除了選擇路由以外,網絡層還負責創建和維護鏈接,控制網絡上的擁塞以及在必要的時候生成計費信息。
第4層傳輸層:—常規數據遞送-面向鏈接或無鏈接。爲會話層用戶提供一個端到端的可靠、透明和優化的數據傳輸服務機制。包括全雙工或半雙工、流控制和錯誤恢復服務;傳輸層把消息分紅若干個分組,並在接收端對它們進行重組。不一樣的分組能夠經過不一樣的鏈接傳送到主機。這樣既能得到較高的帶寬,又不影響會話層。在創建鏈接時傳輸層能夠請求服務質量,該服務質量指定可接受的誤碼率、延遲量、安全性等參數,還能夠實現基於端到端的流量控制功能。
第5層會話層:在兩個節點之間創建端鏈接。爲端系統的應用程序之間提供了對話控制機制。此服務包括創建鏈接是以全雙工仍是以半雙工的方式進行設置,儘管能夠在層4中處理雙工方式 ;會話層管理登入和註銷過程。它具體管理兩個用戶和進程之間的對話。若是在某一時刻只容許一個用戶執行一項特定的操做,會話層協議就會管理這些操做,如阻止兩個用戶同時更新數據庫中的同一組數據。
第6層表示層:主要用於處理兩個通訊系統中交換信息的表示方式。爲上層用戶解決用戶信息的語法問題。它包括數據格式交換、數據加密與解密、數據壓縮與終端類型的轉換。
第7層應用層:OSI中的最高層。爲特定類型的網絡應用提供了訪問OSI環境的手段。應用層肯定進程之間通訊的性質,以知足用戶的須要。應用層不只要提供應用進程所須要的信息交換和遠程操做,並且還要做爲應用進程的用戶代理,來完成一些爲進行信息交換所必需的功能。它包括:文件傳送訪問和管理FTAM、虛擬終端VT、事務處理TP、遠程數據庫訪問RDA、製造報文規範MMS、目錄服務DS等協議;應用層能與應用程序界面溝通,以達到展現給用戶的目的。 在此常見的協議有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
(1)物理層(Physical Layer)
物理層是OSI參考模型的最低層,它利用傳輸介質爲數據鏈路層提供物理鏈接。
它主要關心的是經過物理鏈路從一個節點向另外一個節點傳送比特流,物理鏈路多是銅線、衛星、微波或其餘的通信媒介。
它關心的問題有:多少伏電壓表明1?多少伏電壓表明0?時鐘速率是多少?採用全雙工仍是半雙工傳輸?總的來講物理層關心的是鏈路的機械、電氣、功能和規程特性。
(2)數據鏈路層(Data Link Layer)
數據鏈路層是爲網絡層提供服務的,解決兩個相鄰結點之間的通訊問題,傳送的協議數據單元稱爲數據幀。
數據幀中包含物理地址(又稱MAC地址)、控制碼、數據及校驗碼等信息。該層的主要做用是經過校驗、確認和反饋重發等手段,將不可靠的物理鏈路轉換成對網絡層來講無差錯的數據鏈路。
此外,數據鏈路層還要協調收發雙方的數據傳輸速率,即進行流量控制,以防止接收方因來不及處理髮送方來的高速數據而致使緩衝器溢出及線路阻塞。
(3)網絡層(Network Layer)
網絡層是爲傳輸層提供服務的,傳送的協議數據單元稱爲數據包或分組。
該層的主要做用是解決如何使數據包經過各結點傳送的問題,即經過路徑選擇算法(路由)將數據包送到目的地。
另外,爲避免通訊子網中出現過多的數據包而形成網絡阻塞,須要對流入的數據包數量進行控制(擁塞控制)。
當數據包要跨越多個通訊子網才能到達目的地時,還要解決網際互連的問題。
(4)傳輸層(Transport Layer)
傳輸層的做用是爲上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。
該層向高層屏蔽了下層數據通訊的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。
傳輸層傳送的協議數據單元稱爲段或報文。
(5)會話層(Session Layer)
會話層主要功能是管理和協調不一樣主機上各類進程之間的通訊(對話),即負責創建、管理和終止應用程序之間的會話。會話層得名的緣由是它很相似於兩個實體間的會話概念。例如,一個交互的用戶會話以登陸到計算機開始,以註銷結束。
(6)表示層(Presentation Layer)
表示層處理流經結點的數據編碼的表示方式問題,以保證一個系統應用層發出的信息可被另外一系統的應用層讀出。
若是必要,該層可提供一種標準表示形式,用於將計算機內部的多種數據表示格式轉換成網絡通訊中採用的標準表示形式。
數據壓縮和加密也是表示層可提供的轉換功能之一。
(7)應用層(Application Layer)
應用層是OSI參考模型的最高層,是用戶與網絡的接口。
該層經過應用程序來完成網絡用戶的應用需求,如文件傳輸、收發電子郵件等。
TCP完成了OSI參考模型中的第四層傳輸層的功能,net模塊簡單來講就是TCP協議的node實現。
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,由IETF的RFC 793定義。
當應用層向TCP層發送用於網間傳輸的、用8位字節表示的數據流,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)一般受該計算機鏈接的網絡的數據鏈路層的最大傳送單元(MTU)限制。以後TCP把數據包傳給IP層,由它來經過網絡將包傳送給接收端實體的TCP層。
TCP爲了保證報文傳輸的可靠 [1] ,就給每一個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。而後接收端實體對已成功收到的字節發回一個相應的確認(ACK);若是發送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的數據(假設丟失了)將會被重傳。
TCP的可靠性雖然很好,但它也所以犧牲了效率,它比較適合於傳輸文件等場景。若是在對可靠性要求不高,但對效率要求很高的場景,如視頻直播等,就可使用UDP。
UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無鏈接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規範。UDP在IP報文的協議號是17。
UDP報文沒有可靠性保證、順序保證和流量控制字段等,可靠性較差。可是正由於UDP協議的控制選項較少,在數據傳輸過程當中延遲小、數據傳輸效率高,適合對可靠性要求不高的應用程序,如音頻、視頻和普通數據在傳送時使用UDP較多,或者能夠保障可靠性的應用程序,如DNS、TFTP、SNMP等。
Nodejs也提供了UDP/Datagram模塊,能夠在須要使用UDP時調用。
Net模塊:nodejs.org/dist/latest…
UDP/Datagram模塊:nodejs.org/dist/latest…
OSI參考模型:baike.baidu.com/item/OSI%E5…