網(wǎng)絡與IP

HTTP 協(xié)議的底層其實是由 TCP 協(xié)議和 IP 協(xié)議(簡稱 TCP/IP)構建的。。

TCP 傳輸控制協(xié)議(Transmission Control Protocol)

TCP的作用:保證數(shù)據(jù)的完整性喝可靠性,防止丟包。

常見問題:

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

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

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

    上面內容足以應付前端面試中關于 TCP 的考題 :)

如果你想更了解 TCP 可以看 此文,也可以買一本《TCP/IP 詳解(卷一)》(共三卷,先只買一卷即可)。

不過再強調一遍,這不是前端的內容,以后的課程中我也不會再對 TCP 有任何涉及,你只需稍微了解一下 TCP 即可。

IP 網(wǎng)絡協(xié)議(英語:Internet Protocol)

只要你在互聯(lián)網(wǎng)中,那么你就會有一個 IP。通俗上理解,IP 分為「內網(wǎng) IP」 和「外網(wǎng) IP」

image.png
  • 你從電信那里買來帶寬,一年一千多。
  • 電信為你提供 DNS 服務。
  • 你買了一個路由器,然后用電腦和手機分別連接路由器廣播出來的無線 WIFI。
  • 只要路由器連上電信的服務器,那么路由器就會有一個「外網(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ǎng) IP 如果是14.17.32.211,那么你的手機和電腦的 IP 又是什么呢?答案是「內網(wǎng) IP」
  • 路由器會在你家里創(chuàng)建一個內網(wǎng),內網(wǎng)中的設備使用內網(wǎng) IP,一般來說這個 IP 的格式都是 192.168.xxx.xxx。
    • 一般路由會給自己分配一個好記的內網(wǎng) IP,如 192.168.1.1
    • 然后路由會給每一個內網(wǎng)中的設備分配一個不同的內網(wǎng) IP,如電腦是 192.168.1.2,手機是 192.168.1.3,以此類推。
    • 現(xiàn)在路由器有兩個 IP,一個外網(wǎng) IP(14.17.32.211)和一個內網(wǎng) IP(192.168.1.1)
      • 內網(wǎng)中的設備可以互相訪問(比如你可以用電腦或手機進入 http://192.168.1.1 來查看你的路由器),但是不能直接訪問外網(wǎng),內網(wǎng)設備想要訪問外網(wǎng),就必須經(jīng)過路由器中轉。
      • 外網(wǎng)中的設備可以互相訪問(比如 qq.com 可以把首頁發(fā)送給你的路由器,你的路由器有外網(wǎng) IP),但是外網(wǎng)中的設備無法訪問你的內網(wǎng)設備(這很好理解,內網(wǎng)是一個封閉的網(wǎng)絡,外人進不來,所以實際上 qq.com 無法直接把首頁放送給你的電腦和手機)
        • 問題來了,那 qq.com 是怎么把首頁發(fā)送到我的手機上的呢?答案是通過路由器來中轉。
        • 路由器接收到 qq.com 的頁面后,把頁面發(fā)送給你的電腦或手機。路由器知道如何給這些信息指路,路由器就是一個指路人,這就是「路由」兩個字的來歷。
        • 路,就是「必由之路」中的路。由,就是「必由之路」中的由(由是經(jīng)過、緣由的意思)。所有的信息都要經(jīng)過路由器,然后被指向一條它該去的路。
      • 也就是說內網(wǎng)和外網(wǎng)就像兩個隔絕的空間,無法互通,唯一的聯(lián)通點就是路由器(因為路由器既有外網(wǎng) IP 也有內網(wǎng) IP),所以路由器有時候也被叫做「網(wǎng)關」,這個「關」是「一夫當關,萬夫莫開」的「關」。如果路由器到電信的連接中斷了,那么內網(wǎng)中所有的設備也就無法上網(wǎng)了。(這很好理解,相當于唯一一條出去的路斷了)
  • 除了內網(wǎng) IP 和外網(wǎng) IP,還有兩個特別特殊的 IP,就是本地 IP:127.0.0.1。本地 IP 永遠表示設備自己。不信你可以 ping 127.0.0.1 一下,會發(fā)現(xiàn)只需要 0.01 ms 就得到了響應(你 ping qq.com 需要幾十毫秒才得到響應)
    • 默認情況下,hosts 文件里會有一行127.0.0.1 localhost,意思就是 localhost 指向 127.0.0.1,所以 localhost 也表示設備自己。不信你 ping localhost 試試,會發(fā)現(xiàn)實際上是在 ping 127.0.0.1
  • 還有一個特別特殊的 IP:0.0.0.0,它不表示任何設備。這個 IP 不同的地方含義不同,以后我們會用到,用到的時候再說意思。

端口

你想要訪問一個設備(前提是你使用的是 TCP 或 UDP 協(xié)議。還記得嗎,HTTP 就使用了 TCP),只指定 IP 是不夠的,還必須指定端口(Port)。

端口其實就是一個編號,并不是一種硬件。

一個服務器(硬件)不一定只提供一種服務,比如一個服務器既提供 HTTP 服務,又提供 FTP 服務,還提供 SMTP 服務(郵件服務),那么只用一個 IP 是無法告訴服務器你想要使用哪種服務。

所以這里有一個重要的原則:一個端口對應一個服務。

比如

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

問題1:我怎么知道應該使用什么端口?

維基百科 把 0 到 1023 號端口對應的服務都告訴你了,點進去看看吧。

問題2:一共由多少端口?

每個機器一共有 65535(2的16次方減1)個端口(這是協(xié)議規(guī)定的)。不過這些端口的使用由一些規(guī)定

  1. 0 到 1023(2的10次方減1)號端口是留給系統(tǒng)使用的,你只有擁有了管理員權限后,才能使用這 1024 個端口。
  2. 其他端口可以給普通用戶使用
  3. 如果一個端口正在提供服務,也就是被占用了,那么就不能再使用這個端口。除非你先停掉正在占用這個端口的服務。以后你們會經(jīng)常遇到這個問題。

總結

上面都是 TCP/IP 相關的知識,如果你記不住,就記住下面這句話:

使用 HTTP 協(xié)議訪問另一個 IP 時,必須同時提供 IP 和端口號,缺一不可。

那么問題來了

我訪問 http://qq.com 時并沒有提供端口號,為什么我依然可以訪問

答:因為瀏覽器幫你加了默認端口號 80。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容