什麼是 TCP/IP
每一層之間有層級關係:
- HTTP 協議是建立在 TCP 協議之上
- TCP 又是建立在 IP 之上
- IP 則是建立在實體網路之上(電纜,硬體設備)
Internet Protocol (IP)
IP 其實也是一種協定叫做「網際網路協定」用於網路交換封包,它定義了定址方式及資料的封裝結構。
- IP 協議的版本也有分為 IPv4 與 IPv6,最主要的差異在於,新版的 IPv6解決了 IPv4 地址不夠用的問題
虛擬 IP、浮動 IP、固定 IP
固定 IP
:伺服器及公司企業基本上會使用固定 IP,這 IP 位置是固定、不會變的,這樣才能保證使用者可以連上伺服器,不會突然找不到。
浮動 IP
:一般來說,普通使用者跟家用電腦大部分是浮動 IP,意指你每次連上網路的時候,IP 位置都會不一樣,別人還是可以連到這個 IP,只是這 IP 位置會隨再次上線時、有所變動,好處如下:
- IP 位置不夠用,寶貴資源留給網路主機
- 每次連線的 IP 位置都不同,所以就算洩露 IP 位置,也不會被駭客輕易攻擊
虛擬 IP
:在內網底下才可以互相連接,外網是連不上的,所以內網 IP 位置是可以重複的。但對外網而言,一定會有一個 固定 or 浮動的 IP 位置。
- 通常虛擬 IP 是以 192.168 或 172 或 10.0 開頭,外網是連不進來的。
localhost
:本地主機,是一個 域名,對應的的IP位址是 127.0.0.1
需要DNS進行域名解析,只是說解析是在本地完成,不需要遠程的域名伺服器進行解析。
127.0.0.1
:它是一個IP位址,而且是一個有著特殊用途的IPv4地址,也叫做環路地址(loopback address ) 或者本地主機localhost 。大家常用來ping 127.0.0.1 來看本地ip/tcp正不正常,如能ping通即可正常使用。這個地址通常分配給 loopback 接口。loopback 是一個特殊的網絡接口(可理解成虛擬網卡),用於本機中各個應用之間的網絡交互。只要作業系統的網絡組件是正常的,loopback 就能工作。Windows 中看不到這個接口。
原文網址:https://kknews.cc/news/8xvjekn.html
Port 連接埠( 端口 )
同一個電腦上可能有對應到不同的服務,所以用 Port 來區別,接收不同的服務請求
- 在沒有輸入 port 的情況下,會有一些預設或常用值,如以下:
- HTTP: 80
- HTTPS: 443
- FTP: 21
- 「 測試 」常用:3000、4000、8080、8000
TCP & UDP
TCP
:大部分的網路協定,都是建立在 TCP 上面,因為是比較可靠的方式
UDP
:有時候的需求是傳輸快速、並不是穩定的情況下,就會使用 UDP,常見的情況可能是用於「 視訊 」( 需要快速、重複傳送資料 )
TCP 會確保連線是可靠的,用於保證可靠性和流控制機制的數據,通過三次握手才可以初始化 Sockets、視窗大小、初始序列號並建立 TCP 連接:
- 阻止重複歷史連接的初始化:
- 對通信雙方的初始序列號進行初始化
由於網路的不穩定,可能導致封包缺失或者順序顛倒:
- 封包被發送多次造成數據重複
- 封包在傳輸過程被路由器活其他節點丟失
- 封包到達接收方可能沒按照發送順序
為了解決可能存在的問題,TCP 要求發送方在封包加入 序列號 字段,有了序列號可以:
- 接收方可以通過序列號對重複的封包進行去重
- 發送方會對應封包未被 ACK 時進行重複發送
- 接收方可以根據封包序列對他們重新排序
細節可參考 为什么 TCP 建立连接需要三次握手