http 協議的底層其實是由 tcp 協議和 ip 協議(簡稱 tcp/ip)構建的。
tcp的作用:保證資料的完整性和可靠性,防止丟包。
常見問題:
tcp 和 udp 的區別是什麼
簡答:tcp 可靠、面向連線、相對 udp 較慢;udp 不可靠,不面向連線、相對 tcp 較快。搞定。
tcp 的三次握手指的是什麼
簡答:每次建立連線前,客戶端和服務端之前都要先進行三次對話才開始正式傳輸內容,三次對話大概是這樣的:
1\. 客戶端:我要連線你了,可以嗎
2\. 服務端:嗯,我準備好了,連線我吧
3\. 客戶端:那我連線你咯。
4\. 開始後面步驟
上面內容足以應付前端面試中關於 tcp 的考題
如果你想更了解 tcp 可以買一本《tcp/ip 詳解(卷一)》(共三卷,先只買一捲即可)。
不過再強調一遍,這不是前端的內容,以後的課程中我也不會再對 tcp 有任何涉及,你只需稍微了解一下 tcp 即可。
只要你在網際網路中,那麼你就會有乙個 ip。通俗上理解,ip 分為「內網 ip」 和「外網 ip」
一般路由會給自己分配乙個好記的內網 ip,如 192.168.1.1,然後路由會給每乙個內網中的裝置分配乙個不同的內網 ip,如電腦是 192.168.1.2,手機是 192.168.1.3,以此類推。
現在路由器有兩個 ip,乙個外網 ip(14.17.32.211)和乙個內網 ip(192.168.1.1),內網中的裝置可以互相訪問(比如你可以用電腦或手機進入 192.168.1.1 來檢視你的路由器),但是不能直接訪問外網,內網裝置想要訪問外網,就必須經過路由器中轉。
外網中的裝置可以互相訪問(比如 qq 可以把首頁傳送給你的路由器,你的路由器有外網 ip),但是外網中的裝置無法訪問你的內網裝置(這很好理解,內網是乙個封閉的網路,外人進不來,所以實際上 qq 無法直接把首頁放送給你的電腦和手機)
問題來了,那 qq 是怎麼把首頁傳送到我的手機上的呢?
答案是通過路由器來中轉。
路由器接收到 qq 的頁面後,把頁面傳送給你的電腦或手機。路由器知道如何給這些資訊指路,路由器就是乙個指路人,這就是「路由」兩個字的來歷。路,就是「必由之路」中的路。由,就是「必由之路」中的由(由是經過、緣由的意思)。所有的資訊都要經過路由器,然後被指向一條它該去的路。
也就是說內網和外網就像兩個隔絕的空間,無法互通,唯一的聯通點就是路由器(因為路由器既有外網 ip 也有內網 ip),所以路由器有時候也被叫做「閘道器」,這個「關」是「一夫當關,萬夫莫開」的「關」。如果路由器到電信的連線中斷了,那麼內網中所有的裝置也就無法上網了。(這很好理解,相當於唯一一條出去的路斷了)
除了內網 ip 和外網 ip,還有兩個特別特殊的 ip,就是本地 ip:127.0.0.1。本地 ip 永遠表示裝置自己。不信你可以 ping 127.0.0.1 一下,會發現只需要 0.01 ms 就得到了響應(你 ping qq 需要幾十毫秒才得到響應)
預設情況下,hosts 檔案裡會有一行127.0.0.1
localhost,意思就是 localhost 指向127.0.0.1,所以 localhost 也表示裝置自己。不信你 ping localhost 試試,會發現實際上是在 ping 127.0.0.1
還有乙個特別特殊的 ip:0.0.0.0,它不表示任何裝置。這個 ip 不同的地方含義不同,以後我們會用到,用到的時候再說意思。
你想要訪問乙個裝置(前提是你使用的是 tcp 或 udp 協議。還記得嗎,http 就使用了 tcp),只指定 ip 是不夠的,還必須指定埠(port)。
埠其實就是乙個編號,並不是一種硬體。
乙個伺服器(硬體)不一定只提供一種服務,比如乙個伺服器既提供 http 服務,又提供 ftp 服務,還提供 smtp 服務(郵件服務),那麼只用乙個 ip 是無法告訴伺服器你想要使用哪種服務。
所以這裡有乙個重要的原則:乙個埠對應乙個服務。
比如要提供 http 服務你最好使用 80 埠(能不能使用別的埠?可以,不過不建議你違反約定)要提供 https 服務你最好使用 443 埠(能不能使用別的埠?可以,不過不建議你違反約定)要提供 ftp 服務你最好使用 21 埠(能不能使用別的埠?可以,不過不建議你違反約定)
問題1:我怎麼知道應該使用什麼埠?
維基百科 把 0 到 1023 號埠對應的服務都告訴你了,點進去看看吧。
問題2:一共由多少埠?
每個機器一共有 65535(2的16次方減1)個埠(這是協議規定的)。不過這些埠的使用由一些規定
0 到 1023(2的10次方減1)號埠是留給系統使用的,你只有擁有了管理員許可權後,才能使用這 1024 個埠。其他埠可以給普通使用者使用如果乙個埠正在提供服務,也就是被占用了,那麼就不能再使用這個埠。除非你先停掉正在占用這個埠的服務。以後你們會經常遇到這個問題。
使用 http 協議訪問另乙個 ip 時,必須同時提供 ip 和埠號,缺一不可。
那麼問題來了
我訪問 qq 時並沒有提供埠號,為什麼我依然可以訪問
答:因為瀏覽器幫你加了預設埠號 80。
關於棧,你需要知道這些
分別用四個字描述棧和佇列 棧 後進先出 佇列 先進先出 棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo last in first out 的原則。它的三個核心操作 入棧 棧的插入操作叫做進棧...
關於小程式你需要知道的事
小程式 入口使用較方便 而使用小程式獲取服務,就簡單得多,找到即可使用。不同點 使用快捷度 小程式直接使用 賬號體系 推廣1.分享小程式的頁面給好友 2.模板訊息 3.客服訊息 4.小程式頁面開啟掃一掃 5.支援帶引數的小程式 所以說,小程式一般適合低頻的工具類應用,例如計算貸款,匯率等,或者 公共...
關於光纖你要知道的事
現代光纖的特殊性源於上世紀50年代的研究。在上世紀50年代中,通過光纖傳輸視覺化影象的研究和發展引起了醫學領域的一些進步,隨後它又應用到遠距離照明和觀察儀器上。在1966年,charles kao和george hockhan提出通過玻璃光纖傳輸資訊,並且認識到降低線路衰減非常重要,這是它在應用時要...