ICMP
ping 使用的是ICMP協議,它發送icmp回送請求消息給目的主機。ICMP協議規定:目的主機必須返回ICMP回送應答消息給源主機。如果源主機在一定時間內收到應答,則認為主機可達。
ICMP協議通過IP協議發送的,IP協議是一種無連接的,不可靠的數據包協議。
ARP Address Resolution Protocol
它的作用是在以太網環境下,通過3層的IP地址來找尋2層的MAC地址,得到一張ARP緩存表。轉發數據的時候根據ARP緩存表來進行傳輸。用於實現從 IP 地址到 MAC 地址的映射,即詢問目標IP對應的MAC地址,工作在數據鏈路層;
- PC1發送的請求廣播包同時被其他主機收到,其他PC收到之后(發現不是問自己)則丟棄。
- 而PC2收到之后,根據請求包里面的信息(有自己的IP地址),判斷是給自己的,所以不會丟棄;
- 將ARP請求里包含的PC1的IP地址,MAC地址保存到ARP本地ARP緩存表,並通過單播發回響應包;
- PC1收到響應包后,將PC2的IP地址,MAC地址保存在本地;
參考:圖解ARP協議(一)
HTTP/HTTPS
HTTPS協議
HTTPS 即 HTTP over TLS,是一種在加密信道進行 HTTP 內容傳輸的協議。
TLS 的早期版本叫做 SSL。SSL 的 1.0, 2.0, 3.0 版本均已經被廢棄,出於安全問題考慮廣大瀏覽器也不再對老舊的 SSL
版本進行支持了,因此這里 就統一使用 TLS 名稱了。
TLS(Transport Layer Security,傳輸層安全):其前身是 SSL,它最初的幾個版本(SSL 1.0、SSL 2.0、SSL 3.0)由網景公司開發,1999年從 3.1 開始被 IETF 標准化並改名,發展至今已經有 TLS 1.0、TLS 1.1、TLS 1.2 三個版本。SSL3.0和TLS1.0由於存在安全漏洞,已經很少被使用到。TLS 1.3 改動會比較大,目前還在草案階段,目前使用最廣泛的是TLS 1.1、TLS 1.2。
參考:
HTTP請求
由於HTTP在每次請求結束后都會主動釋放連接,因此HTTP連接是一種“短連接”,要保持客戶端程序的在線狀態,需要不斷地向服務器發起連接請求。
通常 的做法是即時不需要獲得任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次“保持連接”的請求,服務器在收到該請求后對客戶端進行回復,表明知道 客戶端“在線”。若服務器長時間無法收到客戶端的請求,則認為客戶端“下線”,若客戶端長時間無法收到服務器的回復,則認為網絡已經斷開。
一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成
請求頭
請求行由請求方法字段、URL字段和HTTP協議版本字段3個字段組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。
HTTP協議的請求方法有:
方法 | 說明 | 支持的HTTP協議版本 |
---|---|---|
GET | 獲取資源 | 1.0、1.1 |
POST | 傳輸實體主體 | 1.0、1.1 |
PUT | 傳輸文件 | 1.0、1.1 |
HEAD | 獲得報文首部 | 1.0、1.1 |
DELETE | 刪除資源 | 1.0、1.1 |
OPTIONS | 詢問支持的方法 | 1.1 |
TRACE | 追蹤路徑 | 1.1 |
CONNECT | 由於代理服務器 | 1.1 |
LINK | 建立和資源之間的聯系 | 1.0 |
UNLINK | 斷開連接關系 | 1.0 |
參考
VPN協議
-
PPTP(點對點隧道協議)
大多數設備都支持PPTP,因為設置起來非常簡單,在VPN公司中也很受歡迎。PPTP非常快,因此,想要規避網絡中地理限制的人更喜歡該協議。
優點:速度快,多數設備支持,缺點:安全性較低
-
OpenVPN
優點:開源,安全;
缺點:配置困難,延遲
-
L2TP/IPsec(二層隧道協議)
L2TP不能單獨作為安全協議使用,必須與IPsec配對;
優點:較為安全,易於設置,支持多線程;
缺點:防火牆可以輕易攔截,只能通過UDP通信,由於雙重封裝,速度比OpenVpn慢
-
SSTP(安全套接字隧道協議)
與OpenVpn相似,唯一的區別在於它是Microsoft在Windows Vista中開發和引入的專有軟件。
缺點:只能在Windows平台上操作。
-
IKEv2
IKEv2是一種提供安全密鑰交換會話的隧道協議,非常適合移動版VPN解決方案。
優點:非常快,易於設置;
缺點:支持的平台不多,防火牆可以攔截
參考
TCP(傳輸控制協議)
TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接;
位碼即tcp標志位,有6種標示:
標志位 | 全拼 | 含義 |
---|---|---|
SYN | synchronous | 建立聯機 |
ACK | acknowledgement | 確認 |
PSH | push | 傳送 |
FIN | finish | 結束 |
RST | reset | 重置 |
URG | urgent | 緊急 |
Seq | Sequence number | 順序號碼 |
Ack | Acknowledge number | 確認號碼 |
第一次握手
主機A發送位碼為syn=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求建立聯機;
第二次握手
主機B收到請求后要確認聯機信息,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包;
第三次握手
主機A收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到后確認seq值與ack=1則連接建立成功。
TCP和UDP的區別
1、TCP是面向鏈接的,雖然說網絡的不安全不穩定特性決定了多少次握手都不能保證連接的可靠性,但TCP的三次握手在最低限度上(實際上也很大程度上保證了)保證了連接的可靠性;而UDP不是面向連接的,UDP傳送數據前並不與對方建立連接,對接收到的數據也不發送確認信號,發送端不知道數據是否會正確接收,當然也不用重發,所以說UDP是無連接的、不可靠的一種數據傳輸協議。
2、也正由於1所說的特點,使得UDP的開銷更小數據傳輸速率更高,因為不必進行收發數據的確認,所以UDP的實時性更好。知道了TCP和UDP的區別,就不難理解為何采用TCP傳輸協議的MSN比采用UDP的QQ傳輸文件慢了,但並不能說QQ的通信是不安全的,因為程序員可以手動對UDP的數據收發進行驗證,比如發送方對每個數據包進行編號然后由接收方進行驗證啊什么的,即使是這樣,UDP因為在底層協議的封裝上沒有采用類似TCP的“三次握手”而實現了TCP所無法達到的傳輸效率。
RSTP快速生成樹協議
802.1w由802.1d發展而成,這種協議在網絡結構發生變化時,能更快的收斂網絡。它比802.1d多了兩種端口類型:預備端口類型(alternate port)和備份端口類型。
STP快速生成樹協議
生成樹協議主要是防止網絡環路。
多台設備多線路鏈接,而形成的環路,二層環路往往無葯可救,只能堵塞端口防止。而現在的網絡環境多數使用堆疊+接口捆綁,這種環境下很少使用生成樹。
網絡中任意一個節點產生故障,將導致整個網絡無法通訊,即為單點故障,存在單點故障的網絡需要使用設備和線路冗余方式;
二層網絡采用冗余鏈路連接能夠解決網絡中的單點故障穩定,但是伴隨出現的是二層網絡中的二層環路問題:
- 廣播風暴:
- 多幀復制:
- MAC地址漂移:指相同源MAC地址的報文被網絡設備不同的接口學習到,導致設備MAC地址表項頻繁的發生變化,而導致MAC地址漂移的原因就是二層環路。
IEEE 802.1協議組
IEEE 802.1D
為了解決二層網絡中的“廣播風暴”,IEEE(電氣和電子工程協會)制定了802.1d生成樹協議。
IEEE 802.1p
IEEE 802.1P是流量優先權控制標准,工作在媒體訪問控制(MAC)子層,使得二層交換機能夠提供流量優先級和動態組播過濾服務。IEEE 802.1p標准也提供了組播流量過濾功能,以確保該流量不超出第二層交換網絡范圍。
IEEE 802.1q
虛擬橋接局域網,簡稱“虛擬局域網”協議,主要規定了VLAN的實現方法。
IEEE 802.1w
為了解決STP協議缺陷,IEEE再21世紀初推出了802.1w標准,它同樣是屬於生成樹協議類型,稱之為“快速生成樹協議(RSTP)”,作為對802.1D標准的補充。之所以要制定IEEE 802.1w協議的原因是IEEE 802.1d協議雖然解決了鏈路閉合引起的死循環問題,但是生成樹的收斂過程仍需比較長的時間。
IEEE 802.1s
IEEE 802.1s標准中的多生成樹(MSTP)技術把IEEE 802.1w快速單生成樹(RSTP)算法擴展到多生成樹,這為虛擬局域網(VLANs)環境提供了快速收斂和負載均衡的功能,是IEEE 802.1 VLAN標記協議的擴展協議。
IEEE 802.1x
IEEE 802.1x也稱為“基於端口的訪問控制協議”。它的體系結構包括三個重要的部分:Supplicant System(客戶端系統)、Authenticator System(認證系統)、Authentication Server System(認證服務器系統)。
參考: 百度百科:IEEE 802.1
VRRP(虛擬路由冗余協議)
通過幾台設備聯合組成一台虛擬路由設備,將虛擬路由設備IP地址作為用戶默認網關實現與外部網絡通信。當網關設備發生故障時,VRRP機制能夠選舉新的網關設備承擔數據流量,從而保障網絡的可靠通信。
-
VRRP是一種容錯協議,在提高可靠性的同時,簡化了主機的配置。在具有多播或廣播能力的局域網(如以太網)中,借助VRRP 能在某台設備出現故障時仍然提供高可靠的缺省鏈路,有效避免單一鏈路發生故障后網絡中斷的問題,而無需修改動態路由協議、路由發現協議等配置信息
-
VRRP協議包括兩個版本:VRRPv2和VRRPv3。VRRPv2僅適用於IPv4網絡,VRRPv3適用於IPv4和IPv6兩種網絡
-
VRRP路由器: 所有運行VRRP協議的路由器就叫做VRRP路由器
-
VRRP備份組: 多台路由器被分到一個組中,在這個組中選舉出一台主路由器,其他作為備份路由器。平常時候都是主路由器一個工作,備份路由器空閑,當主路由器故障后,從多台備份路由器中選舉出一台替代故障的主路由器工作。這一組中的路由器構成了一個備份組。
參考
BGP(邊界網關協議)
BGP是互聯網上一個核心的去中心化自治路由協議。從這個解釋來看,首先這是一個用於互聯網(Internet)上的路由協議。它的地位是核心的(目前是最重要的,互聯網上唯一使用的路由協議),它的目的是去中心化,以達到各個網絡自治。
相關的概念:
AS(Autonomous system):自治系統,指在一個(有時是多個)組織管轄下的所有IP網絡和路由器的全體,它們對互聯網執行共同的路由策略。也就是說,對於互聯網來說,一個AS是一個獨立的整體網絡。而BGP實現的網絡自治也是指各個AS自治。每個AS有自己唯一的編號。
IGP(Interior Gateway Protocol):內部網關協議,在一個AS內部所使用的一種路由協議。一個AS內部也可以有多個路由器管理多個網絡。各個路由器之間需要路由信息以知道子網絡的可達信息。IGP就是用來管理這些路由。代表的實現有RIP和OSPF。
EGP(Exterior Gateway Protocol):外部網關協議,在多個AS之間使用的一種路由協議,現在已經淘汰,被BGP取而代之。
BGP可以說是最復雜的路由協議。它是應用層協議,其傳輸層使用TCP,默認端口號是179。因為是應用層協議,可以認為它的連接是可靠的,並且不用考慮底層的工作,例如fragment,確認,重傳等等。BGP是唯一使用TCP作為傳輸層的路由協議,其他的路由協議可能都還到不了傳輸層。
BGP如何工作
BGP是一種路徑矢量協議(Path vector protocol)的實現。因此,它的工作原理也是基於路徑矢量。下面說的BGP route指的是BGP自己維護的路由信息,區分於設備的主路由表,也就是平常看見的那個路由表。
BGP route是BGP協議傳輸的數據,並存儲在BGP router的數據庫中。並非所有的BGP route都會寫到主路由表。每條BGP route都包含了目的網絡,下一跳和完整的路徑信息。路徑信息是由AS號組成,當BGP router收到了一條 路由信息,如果里面的路徑包含了自己的AS號,那它就能判定這是一條自己曾經發出的路由信息,收到的這條路由信息會被丟棄。
這里把每個BGP服務的實體叫做BGP router,而與BGP router連接的對端叫BGP peer。每個BGP router在收到了peer傳來的路由信息,會存儲在自己的數據庫,前面說過,路由信息包含很多其他的信息,BGP router會根據自己本地的policy結合路由信息中的內容判斷,如果路由信息符合本地policy,BGP router會修改自己的主路由表。
本地的policy可以有很多,舉個例子,如果BGP router收到兩條路由信息,目的網絡一樣,但是路徑不一樣,一個是AS1->AS3->AS5,另一個是AS1->AS2,如果沒有其他的特殊policy,BGP router會選用AS1->AS2這條路由信息。policy還有很多其他的,可以實現復雜的控制。
除了修改主路由表,BGP router還會修改這條路由信息,將自己的AS號加在BGP數據中,將下一跳改為自己,並且將自己加在路徑信息里。在這之后,這條消息會繼續向別的BGP peer發送。而其他的BGP peer就知道了,可以通過指定下一跳到當前BGP router,來達到目的網絡地址。
所以說,BGP更像是一個可達協議,可達信息傳來傳去,本地根據收到的信息判斷決策,再應用到路由表。
引用