九.Node.js Server

HTTP協議的底層是由TCP和IP(TCP/IP)構建的

  1. TCP 和 UDP 的區別是什么
    簡答:TCP 可靠、面向連接、相對 UDP 較慢;UDP 不可靠,不面向連接、相對 TCP 較快。搞定。

  2. TCP 的三次握手指的是什么
    簡答:每次建立連接前,客戶端和服務端之前都要先進行三次對話才開始正式傳輸內容,三次對話大概是這樣的:

     1. 客戶端:我要連接你了,可以嗎
     2. 服務端:嗯,我準備好了,連接我吧
     3. 客戶端:那我連接你咯。
     4. 開始后面步驟
    

IP網絡協議(Internet Protocol)

只要你在互聯網中,那么你就會有一個 IP。通俗上理解,IP 分為「內網 IP」 和「外網 IP」,以下圖為例:

image.png

路由器連上電信的服務器,那么路由器就會有一個「外網 IP」,比如「14.17.32.211」就是一個外網 IP。這就是你在互聯網中的地址。
但是如果你重啟路由器,那么你很有「可能」被重新分配一個「外網 IP」,也就是說 你的路由器沒有「固定的外網 IP」
內網不能直接訪問內網,反之亦然
路由器就是一個指路人,路由器也是內網與外網的必由之路,這也就是路由的來歷
除了內網 IP 和外網 IP,還有兩個特別特殊的 IP,就是本地 IP:127.0.0.1。本地 IP 永遠表示設備自己。還有一個特別特殊的 IP:0.0.0.0,它不表示任何設備。

端口

想要訪問一個設備(前提是你使用的是TCP或UDP協議,HTTP就是使用了TCP協議),只有IP是不夠的必須還要有一個端口,端口只是一個編號,并不是一個硬件
一個服務器(硬件)不一定只提供一種服務,比如一個服務器既提供 HTTP 服務,又提供 FTP 服務,還提供 SMTP 服務(郵件服務),那么只用一個 IP 是無法告訴服務器你想要使用哪種服務。
所以這里有一個重要的原則:一個端口對應一個服務。

比如

要提供 HTTP 服務你最好使用 80 端口(能不能使用別的端口?可以,不過不建議你違反約定)
要提供 HTTPS 服務你最好使用 443 端口(能不能使用別的端口?可以,不過不建議你違反約定)
要提供 FTP 服務你最好使用 21 端口(能不能使用別的端口?可以,不過不建議你違反約定)

怎么知道應該使用什么端口?

維基百科 把 0 到 1023 號端口對應的服務都告訴你了

一共有多少端口?

每個機器一共有 65535(2的16次方減1)個端口(這是協議規定的)。不過這些端口的使用由一些規定:
0 到 1023(2的10次方減1)號端口是留給系統使用的,你只有擁有了管理員權限后,才能使用這 1024 個端口。
其他端口可以給普通用戶使用
如果一個端口正在提供服務,也就是被占用了,那么就不能再使用這個端口。除非你先停掉正在占用這個端口的服務。

總結:

使用HTTP協議訪問另外一個IP時,端口號和IP缺一不可
訪問www.qq.com時我們沒有輸入端口號是因為瀏覽器幫我們添加上了

Server(服務器)

用腳本就可以提供 HTTP 服務,不管是 Bash 腳本還是 Node.js 腳本都可以
模擬題,供以后復習:
寫出一個 server.js 文件,滿足以下功能

用戶請求 / 時,返回 html 內容
1.該 html 內容里面由一個 css link 和一個 script
2.css link 會請求 /style.css,返回 css 內容
3.script 會請求 /main.js,返回 js 內容
4.請求 / /style.css /main.js 以外的路徑,則一律返回 404 狀態碼
點擊查看代碼

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容