由下到上:從 TCP/IP 開始談起
前言 : 網路是有分層的,舉例來說從電腦傳 req 到 server 去,中間會經歷很多東西,(底層的海底電纜、中華電信到我家的電纜、作業系統),因為中間會經過很多層,所以每一層都需要有自己的協議,(以故事而言,風靡全台跨校訂便當下面其實有小明與小美的三次協議,三次連接的下面又有郵差的協議等等)。這些層級在真正的網路上有模型叫做 OSI 七層,由特定的機構將其標準化,每一層負責不同的事情,七層模型雖嚴謹但因為複雜,故網路實作以 TCP/IP 四層模型(應用層、傳輸層、網路層、網路接口層)為主。這些模型的提出是為了解決網路分層的問題。
(一) IP (Internet Portocal 網路協議)
IP 地址類似網路上的地址。IPV4、IPV6 (主要解決 IP 位置不夠用),兩版協議的差異在於 IP 地址的不同。固定 IP 與 浮動 IP 的前提是理想狀況下,每台電腦都有自己的 IP 連過來
1) 固定 IP : 理想狀況,每台電腦都可以互相直接連線,一台電腦就是一個 IP,他不會變且你可以直接連線。甚麼情況下會是固定 IP ? A : 你的server,這樣大家才能保證連到你的伺服器。
2) 浮動 IP : 同一台電腦,每次連接你的 IP 位置都不同。別人還是可以連到 IP 位置,只是 IP 位置不同。為甚麼要有浮動 IP ? 對於一般用戶並不在意自己的 IP 位置、資安防駭客,所以對於一般用戶及電信商是有好處。
3) 虛擬 IP : 這個 IP 只有在內網,連線到同個 WIFY 的人可以互相連接到對方的地址,所以從外面要直接連到內網的地址,是做不到他找不到內網的地址。所以虛擬 IP 是可以重複。對於這些虛擬 IP ,其對外連接還是會有一個對應的 IP 。這也能解釋,為甚麼兩個人 IP 位置一樣,也不能保證他們在同一台電腦,或是同一間網咖出去的 IP 會相同。另外,使用虛擬 IP 可以節省資源,通常為 192/10 開頭。
值得一提的是,在 res/req 的過程中,google.com 只看的到數據機,對內來說,我們也只看的到數據機。
(二) Port (連接埠/端口)
當八班千千便當生意越做越大,其他班級要如何將紙條傳給千千 ? A : 在紙條後面加 : 訂便當
。對於網路來說,我們發 req 到下列地址 (12.20.77.60),但一台電腦有很多服務 (http/信件收發...), 所以 12.20.77.60 : port
,一個連接埠對應到一個程式,所以如果有程式在接聽這個 port 他就會去接聽這個 req 。 我們之前的實作範例 Listen(5000)
就代表他去LISTEN 5000 這個連接埠。
1.一般常用連接埠 : http 80 、https 443 、ftp 21 。
2.測試上常用連接埠 : 3000、4000、4001、8000。
結論
: 為了區別同一台電腦上不同的服務。
(三) TCP UDP (傳輸層內的兩個協議)
現階段,專注在應用層與傳輸層即可。我們以傳紙條的故事比喻, HTTP 就是訂便當、FTP 就是訂飲料,但無論是訂便當還是訂飲料,都必須先確認雙方是否都有收到紙條,也就是前面小明小美三次確認,因為如果沒有確認東西寄丟,就麻煩了~在網路的世界,TCP 就是可靠的連接,你發出去就可以知道到底有沒有送達,因為其可靠性所以大部分網路都是建立在 TCP 上面。UDP 以故事比喻,就是 NBA 及時戰況的協定,在即時戰況中在意快速,因為幾秒傳一次所以一兩次寄丟還好,實際應用視訊。
TCP 可靠的秘密 : 三次握手
大架構和小明小美故事一樣,但實際較為複雜,每次會傳送特定的東西。實際怎麼握是技術細節,目前暫不探討。
結論
: 保證連接的可靠 TCP 、 求快 UDP。