HTTP協(xié)議的底層是由TCP和IP(TCP/IP)構(gòu)建的
TCP 和 UDP 的區(qū)別是什么
簡答:TCP 可靠蹲蒲、面向連接、相對 UDP 較慢赡麦;UDP 不可靠朴皆,不面向連接、相對 TCP 較快泛粹。搞定遂铡。-
TCP 的三次握手指的是什么
簡答:每次建立連接前,客戶端和服務(wù)端之前都要先進行三次對話才開始正式傳輸內(nèi)容晶姊,三次對話大概是這樣的:1. 客戶端:我要連接你了扒接,可以嗎 2. 服務(wù)端:嗯,我準備好了们衙,連接我吧 3. 客戶端:那我連接你咯钾怔。 4. 開始后面步驟
IP網(wǎng)絡(luò)協(xié)議(Internet Protocol)
只要你在互聯(lián)網(wǎng)中,那么你就會有一個 IP蒙挑。通俗上理解宗侦,IP 分為「內(nèi)網(wǎng) IP」 和「外網(wǎng) IP」,以下圖為例:
路由器連上電信的服務(wù)器忆蚀,那么路由器就會有一個「外網(wǎng) IP」矾利,比如「14.17.32.211」就是一個外網(wǎng) IP。這就是你在互聯(lián)網(wǎng)中的地址馋袜。
但是如果你重啟路由器男旗,那么你很有「可能」被重新分配一個「外網(wǎng) IP」,也就是說 你的路由器沒有「固定的外網(wǎng) IP」
內(nèi)網(wǎng)不能直接訪問內(nèi)網(wǎng)欣鳖,反之亦然
路由器就是一個指路人察皇,路由器也是內(nèi)網(wǎng)與外網(wǎng)的必由之路,這也就是路由的來歷
除了內(nèi)網(wǎng) IP 和外網(wǎng) IP观堂,還有兩個特別特殊的 IP让网,就是本地 IP:127.0.0.1。本地 IP 永遠表示設(shè)備自己师痕。還有一個特別特殊的 IP:0.0.0.0溃睹,它不表示任何設(shè)備。
端口
想要訪問一個設(shè)備(前提是你使用的是TCP或UDP協(xié)議胰坟,HTTP就是使用了TCP協(xié)議)因篇,只有IP是不夠的必須還要有一個端口,端口只是一個編號笔横,并不是一個硬件
一個服務(wù)器(硬件)不一定只提供一種服務(wù)竞滓,比如一個服務(wù)器既提供 HTTP 服務(wù),又提供 FTP 服務(wù)吹缔,還提供 SMTP 服務(wù)(郵件服務(wù))商佑,那么只用一個 IP 是無法告訴服務(wù)器你想要使用哪種服務(wù)。
所以這里有一個重要的原則:一個端口對應(yīng)一個服務(wù)厢塘。
比如
要提供 HTTP 服務(wù)你最好使用 80 端口(能不能使用別的端口茶没?可以肌幽,不過不建議你違反約定)
要提供 HTTPS 服務(wù)你最好使用 443 端口(能不能使用別的端口?可以抓半,不過不建議你違反約定)
要提供 FTP 服務(wù)你最好使用 21 端口(能不能使用別的端口喂急?可以,不過不建議你違反約定)
怎么知道應(yīng)該使用什么端口笛求?
維基百科 把 0 到 1023 號端口對應(yīng)的服務(wù)都告訴你了
一共有多少端口廊移?
每個機器一共有 65535(2的16次方減1)個端口(這是協(xié)議規(guī)定的)。不過這些端口的使用由一些規(guī)定:
0 到 1023(2的10次方減1)號端口是留給系統(tǒng)使用的探入,你只有擁有了管理員權(quán)限后狡孔,才能使用這 1024 個端口。
其他端口可以給普通用戶使用
如果一個端口正在提供服務(wù)新症,也就是被占用了步氏,那么就不能再使用這個端口。除非你先停掉正在占用這個端口的服務(wù)徒爹。
總結(jié):
使用HTTP協(xié)議訪問另外一個IP時,端口號和IP缺一不可
訪問www.qq.com時我們沒有輸入端口號是因為瀏覽器幫我們添加上了
Server(服務(wù)器)
用腳本就可以提供 HTTP 服務(wù)芋类,不管是 Bash 腳本還是 Node.js 腳本都可以
模擬題隆嗅,供以后復習:
寫出一個 server.js 文件,滿足以下功能
用戶請求 / 時侯繁,返回 html 內(nèi)容
1.該 html 內(nèi)容里面由一個 css link 和一個 script
2.css link 會請求 /style.css胖喳,返回 css 內(nèi)容
3.script 會請求 /main.js,返回 js 內(nèi)容
4.請求 / /style.css /main.js 以外的路徑贮竟,則一律返回 404 狀態(tài)碼
點擊查看代碼