HTTP協議的底層是由TCP和IP(TCP/IP)構建的
TCP 和 UDP 的區別是什么
簡答:TCP 可靠、面向連接、相對 UDP 較慢;UDP 不可靠,不面向連接、相對 TCP 較快。搞定。-
TCP 的三次握手指的是什么
簡答:每次建立連接前,客戶端和服務端之前都要先進行三次對話才開始正式傳輸內容,三次對話大概是這樣的:1. 客戶端:我要連接你了,可以嗎 2. 服務端:嗯,我準備好了,連接我吧 3. 客戶端:那我連接你咯。 4. 開始后面步驟
IP網絡協議(Internet Protocol)
只要你在互聯網中,那么你就會有一個 IP。通俗上理解,IP 分為「內網 IP」 和「外網 IP」,以下圖為例:
路由器連上電信的服務器,那么路由器就會有一個「外網 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 狀態碼
點擊查看代碼