打電話是如何運作的
1.將你的"音波"變成"電波"--調(diào)制器
2.電波傳遞到電話的另一邊
3.電話那頭將你的"電波"變成"音波"--解調(diào)器
網(wǎng)絡(luò)與IP
http(控制書寫內(nèi)容的)協(xié)議是建立在TCP(傳輸協(xié)議)和IP(控制連接)協(xié)議的基礎(chǔ)之上的
TCP 傳輸控制協(xié)議(Transmission Control Protocol)
面試要點
TCP 和 UDP 的區(qū)別是什么
簡答:TCP 可靠冗栗、面向連接演顾、相對 UDP 較慢;UDP 不可靠隅居,不面向連接钠至、相對 TCP 較快。搞定胎源。-
TCP 的三次握手指的是什么
簡答:每次建立連接前棉钧,客戶端和服務(wù)端之前都要先進(jìn)行三次對話才開始正式傳輸內(nèi)容,三次對話大概是這樣的:1. 客戶端:我要連接你了涕蚤,可以嗎 2. 服務(wù)端:嗯宪卿,我準(zhǔn)備好了,連接我吧 3. 客戶端:那我連接你咯万栅。 4. 開始后面步驟
上面內(nèi)容足以應(yīng)付前端面試中關(guān)于 TCP 的考題 :)
如果你想更了解 TCP 可以看 此文佑钾,也可以買一本《TCP/IP 詳解(卷一)》(共三卷,先只買一卷即可)烦粒。
不過再強(qiáng)調(diào)一遍休溶,這不是前端的內(nèi)容,以后的課程中我也不會再對 TCP 有任何涉及扰她,你只需稍微了解一下 TCP 即可兽掰。
IP 網(wǎng)絡(luò)協(xié)議(英語:Internet Protocol)
只要你在互聯(lián)網(wǎng)中,那么你就會有一個 IP徒役。通俗上理解孽尽,IP 分為「內(nèi)網(wǎng) IP」 和「外網(wǎng) IP」,以下圖為例:
- 你從電信那里買來帶寬忧勿,一年一千多泻云。
- 電信為你提供 DNS 服務(wù)艇拍。
- 你買了一個路由器狐蜕,然后用電腦和手機(jī)分別連接路由器廣播出來的無線 WIFI宠纯。
- 只要路由器連上電信的服務(wù)器,那么路由器就會有一個「外網(wǎng) IP」层释,比如「14.17.32.211」就是一個外網(wǎng) IP婆瓜。這就是你在互聯(lián)網(wǎng)中的地址。
- 但是如果你重啟路由器贡羔,那么你很有「可能」被重新分配一個「外網(wǎng) IP」廉白,也就是說 你的路由器沒有「固定的外網(wǎng) IP」
- 你可以花每年幾千塊錢租用一個「固定的外網(wǎng) IP」,但是顯然不會這么浪費錢乖寒。像騰訊猴蹂、阿里這樣的大公司租用了很多外網(wǎng) IP,這樣才能對我們提供穩(wěn)定的服務(wù)楣嘁。
- 但是有個問題磅轻,你的路由器的外網(wǎng) IP 如果是14.17.32.211,那么你的手機(jī)和電腦的 IP 又是什么呢逐虚?答案是「內(nèi)網(wǎng) IP」
- 路由器會在你家里創(chuàng)建一個內(nèi)網(wǎng)聋溜,內(nèi)網(wǎng)中的設(shè)備使用內(nèi)網(wǎng) IP,一般來說這個 IP 的格式都是 192.168.xxx.xxx叭爱。
- 一般路由會給自己分配一個好記的內(nèi)網(wǎng) IP撮躁,如 192.168.1.1
- 然后路由會給每一個內(nèi)網(wǎng)中的設(shè)備分配一個不同的內(nèi)網(wǎng) IP,如電腦是 192.168.1.2买雾,手機(jī)是 192.168.1.3把曼,以此類推。
- 現(xiàn)在路由器有兩個 IP漓穿,一個外網(wǎng) IP(14.17.32.211)和一個內(nèi)網(wǎng) IP(192.168.1.1)
- 內(nèi)網(wǎng)中的設(shè)備可以互相訪問(比如你可以用電腦或手機(jī)進(jìn)入 http://192.168.1.1 來查看你的路由器)嗤军,但是不能直接訪問外網(wǎng),內(nèi)網(wǎng)設(shè)備想要訪問外網(wǎng)器净,就必須經(jīng)過路由器中轉(zhuǎn)型雳。
- 外網(wǎng)中的設(shè)備可以互相訪問(比如 qq.com 可以把首頁發(fā)送給你的路由器,你的路由器有外網(wǎng) IP)山害,但是外網(wǎng)中的設(shè)備無法訪問你的內(nèi)網(wǎng)設(shè)備(這很好理解纠俭,內(nèi)網(wǎng)是一個封閉的網(wǎng)絡(luò),外人進(jìn)不來浪慌,所以實際上 qq.com 無法直接把首頁放送給你的電腦和手機(jī))
- 問題來了冤荆,那 qq.com 是怎么把首頁發(fā)送到我的手機(jī)上的呢?答案是通過路由器來中轉(zhuǎn)权纤。
- 路由器接收到 qq.com 的頁面后钓简,把頁面發(fā)送給你的電腦或手機(jī)乌妒。路由器知道如何給這些信息指路,路由器就是一個指路人外邓,這就是「路由」兩個字的來歷撤蚊。
- 路,就是「必由之路」中的路损话。由侦啸,就是「必由之路」中的由(由是經(jīng)過、緣由的意思)丧枪。所有的信息都要經(jīng)過路由器光涂,然后被指向一條它該去的路。
- 也就是說內(nèi)網(wǎng)和外網(wǎng)就像兩個隔絕的空間拧烦,無法互通忘闻,唯一的聯(lián)通點就是路由器(因為路由器既有外網(wǎng) IP 也有內(nèi)網(wǎng) IP),所以路由器有時候也被叫做「網(wǎng)關(guān)」恋博,這個「關(guān)」是「一夫當(dāng)關(guān)齐佳,萬夫莫開」的「關(guān)」。如果路由器到電信的連接中斷了交播,那么內(nèi)網(wǎng)中所有的設(shè)備也就無法上網(wǎng)了重虑。(這很好理解,相當(dāng)于唯一一條出去的路斷了)
- 除了內(nèi)網(wǎng) IP 和外網(wǎng) IP秦士,還有兩個特別特殊的 IP缺厉,就是本地 IP:127.0.0.1。本地 IP 永遠(yuǎn)表示設(shè)備自己隧土。不信你可以 ping 127.0.0.1 一下提针,會發(fā)現(xiàn)只需要 0.01 ms 就得到了響應(yīng)(你 ping qq.com 需要幾十毫秒才得到響應(yīng))
- 默認(rèn)情況下,hosts 文件里會有一行
127.0.0.1 localhost
曹傀,意思就是 localhost 指向 127.0.0.1辐脖,所以 localhost 也表示設(shè)備自己。不信你 ping localhost 試試皆愉,會發(fā)現(xiàn)實際上是在 ping 127.0.0.1
- 默認(rèn)情況下,hosts 文件里會有一行
- 還有一個特別特殊的 IP:0.0.0.0嗜价,它不表示任何設(shè)備。這個 IP 不同的地方含義不同幕庐,以后我們會用到久锥,用到的時候再說意思。
內(nèi)網(wǎng)之間可以相互訪問
外網(wǎng)之間可以相互訪問
內(nèi)網(wǎng)和外網(wǎng)不可相互訪問
內(nèi)網(wǎng)想要與外網(wǎng)互相訪問必須有一個路由器
路由器的主要功能就是內(nèi)容分發(fā)
0.0.0.0 不表示任何設(shè)備 它是一個不該使用的IP
127.0.0.1 表示本機(jī)
localhost 表示本機(jī)
端口
你想要訪問一個設(shè)備(前提是你使用的是 TCP 或 UDP 協(xié)議异剥。還記得嗎瑟由,HTTP 就使用了 TCP),只指定 IP 是不夠的冤寿,還必須指定端口(Port)歹苦。
端口其實就是一個編號青伤,并不是一種硬件。
一個服務(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 端口(能不能使用別的端口?可以偷仿,不過不建議你違反約定)
問題1:我怎么知道應(yīng)該使用什么端口哩簿?
維基百科 把 0 到 1023 號端口對應(yīng)的服務(wù)都告訴你了,點進(jìn)去看看吧酝静。
問題2:一共由多少端口节榜?
每個機(jī)器一共有 65535(2的16次方減1)個端口(這是協(xié)議規(guī)定的)。不過這些端口的使用由一些規(guī)定
- 0 到 1023(2的10次方減1)號端口是留給系統(tǒng)使用的别智,你只有擁有了管理員權(quán)限后宗苍,才能使用這 1024 個端口。
- 其他端口可以給普通用戶使用
- 如果一個端口正在提供服務(wù)薄榛,也就是被占用了讳窟,那么就不能再使用這個端口。除非你先停掉正在占用這個端口的服務(wù)敞恋。以后你們會經(jīng)常遇到這個問題丽啡。
總結(jié)
上面都是 TCP/IP 相關(guān)的知識,如果你記不住硬猫,就記住下面這句話:
使用 HTTP 協(xié)議訪問另一個 IP 時补箍,比如同時提供 IP 和端口號,缺一不可啸蜜。
那么問題來了
我訪問 http://qq.com 時并沒有提供端口號坑雅,為什么我依然可以訪問
答:因為瀏覽器幫你加了默認(rèn)端口號 80。