本文根據《鳥哥的Linux私房菜-服務器架設篇》總結,會繼續完善,歡迎你們評論交流,若是有錯誤或不足之處但願你們可以指正node
網絡就是幾部計算機主機或者是網絡打印機之類的接口設備,經過網線或者是無線網絡技術,將這些主機與設備鏈接起來、使得數據能夠經過網絡介質(網線以及其餘網卡等硬件)來傳輸的一種方式。git
注意:
協議層從物理層開始,分別對應Layer 1到Layer 7。 其中Layer2 數據鏈路層是比較特殊的一層,由於本層又分兩個子層進行數據的轉換操做。在偏硬件介質部分,主要負責MAC(Madia Access Control),咱們稱這個數據包裹爲MAC數據幀。在偏向軟件的部分則是由邏輯鏈接層(Logical Link Control, LLC)所控制。主要在多任務處理來自上層的數據包數據(packet)並轉成MAC格式,負責的工做包括信息交換、流量控制、失誤問題的處理。瀏覽器
<a target="_blank" href="https://baike.baidu.com/item/%E4%BB%A5%E5%A4%AA%E7%BD%91/99684?fr=aladdin">以太網(Ethernet)</a>指的是由Xerox公司建立並由Xerox、Intel和DEC公司聯合開發的基帶局域網規範,是當今現有局域網採用的最通用的通訊協議標準。以太網絡使用CSMA/CD(載波監聽多路訪問及衝突檢測)技術,並以10M/S的速率運行在多種類型的電纜上。以太網與IEEE802.3系列標準相相似。 包括標準的以太網(10Mbit/s)、快速以太網(100Mbit/s)和10G(10Gbit/s)以太網。它們都符合IEEE802.3。 以太網的網線接頭分爲交叉線和直連線服務器
以太網的傳輸主要是網卡對網卡之間的數據傳遞 CSMA/CD 我的簡單理解爲:判斷何時能夠發送數據出去(避免衝突),且發送的數據爲 MAC。網絡
<a target="_blank" href="https://baike.baidu.com/item/CSMA/CD/986847">如下來源百度:</a> 其原理簡單總結爲:先聽後發,邊發邊聽,衝突停發,隨機延遲後重發 它的主要目的是:提供尋址和媒體存取的控制方式,使得不一樣設備或網絡上的節點能夠在多點的網絡上通訊而不相互衝突。 控制規程的核心問題:解決在公共通道上以廣播方式傳送數據中可能出現的問題(主要是數據碰撞問題) 控制過程包含四個處理內容:監聽、發送、檢測、衝突處理 有人將CSMA/CD的工做過程形象的比喻成不少人在一間黑屋子中舉行討論會,參加會議的人都是隻能聽到其餘人的聲音。每一個人在說話前必須先傾聽,只有等會場安靜下來後,他纔可以發言。人們將發言前監聽以肯定是否已有人在發言的動做稱爲"載波監聽";將在會場安靜的狀況下每人都有平等機會講話成爲「多路訪問」;若是有兩人或兩人以上同時說話,你們就沒法聽清其中任何一人的發言,這種狀況稱爲發生「衝突」。發言人在發言過程當中要及時發現是否發生衝突,這個動做稱爲「衝突檢測」。若是發言人發現衝突已經發生,這時他須要中止講話,而後隨機後退延遲,再次重複上述過程,直至講話成功。若是失敗次數太多,他也許就放棄此次發言的想法。一般嘗試16次後放棄。less
上面提到的CSMA/CD發送出去的數據幀,就是MAC。這個數據幀有兩個特別重要的數據,就是目標與來源的網卡卡號,所以咱們又簡稱網卡卡號爲MAC地址。 能夠簡單的理解爲:MAC是一個在網線上傳遞的包裹,而這個包裹是整個網絡硬件上面傳送數據的最小單位。MAC 包含了 IP 數據包,且IP數據包包含 TCP 數據包dom
注意:在這個MAC的傳送中,僅在局域網內生效,若是跨過不一樣的子網,那麼來源與目的的硬件地址就會跟着改變了。這是由於變成不一樣的網卡交流了,因此卡號固然不一樣
集線器是一種網絡共享介質設備,交換器(OSI第二層的交換器)爲交換式的集線器,非共享設備。ide
IP 分爲 IPv4 和 IPv6,其中 IPv4 的地址僅有32位,IPv6 能夠達到128位,目前最爲廣泛的是 IPv4。IP 數據包能夠達到65535 bytes,再比MAC大的狀況下,操做系統會對 IP 進行拆解的動做oop
<a target="_blank" href="https://en.wikipedia.org/wiki/IPv4">IPv4</a> 測試
- PPP:表示此 IP 數據包的優先級,目前不多使用
- D:若爲0表示通常延遲(delay),若爲1表示爲低延遲
- T:若爲0表示通常傳輸量(throughput),若爲1表示高傳輸量
- R:若爲0表示通常可靠度(reliability),若爲1表示高可靠度
- UU:保留還沒有使用
- D:若爲0表示可分段,若爲1表示不可分段
- M:若爲0表示 IP 最後分段,若爲1表示非最後分段
- ICMP
- IGMP
- GGP
- IP
- TCP
- EGP
- UDP
路由表:每臺主機都有本身的路由表,當主機想要發送數據時,參考的就是路由表(Route table)。
跨網段傳送數據的流程:
如上圖,IP分爲五種等級,其中前三個等級較經常使用,Class D 是用來做爲組播(multicast)的特殊功能之用(最經常使用在大批計算機的網絡還原),Class E 則爲保留網段。
IPv4又分爲兩個種類,分別爲:
Loopback IP 網段: 屬於 Class A的網絡,爲lo網絡,lo網絡是當初被用來做爲測試操做系統內部循環所用的一個網絡,同事也可以提供給系統內部本來就須要使用網絡接口的服務(daemon)所使用。簡單的說在沒有安裝網卡時想測試機器上的服務器環境,就可使用用了,例如 127.0.0.1
上圖咱們看到了 子網掩碼(Netmask)和 IP 各個分類的關係,從中能夠觀察到子網掩碼的取值和 Net_ID 是相關的。當咱們想要更多網段時,能夠將 Class C 繼續進行子網的劃分,且子網劃分一樣和 Net_ID 相關。 將 Class C 分紅兩個子網示例: 本來: 11000000.10101000.0000000.00000000 Network:192.168.0.0 11000000.10101000.0000000.11111111 Broadcast:192.168.0.255 其中 Net_ID 爲:11000000.10101000.0000000 Netmask:255.255.255.0
劃分以後: 11000000.10101000.0000000.0 0000000 Network:192.168.0.0 11000000.10101000.0000000.1 1111111 Broadcast:192.168.0.255 其中 Net_ID 爲:11000000.10101000.1 Netmask:255.255.255.128
第一個子網 11000000.10101000.0000000.0 0000000 Network:192.168.0.0 11000000.10101000.0000000.0 1111111 Broadcast:192.168.0.127 Netmask:255.255.255.128 第二個子網 11000000.10101000.0000000.1 0000000 Network:192.168.0.128 11000000.10101000.0000000.1 1111111 Broadcast:192.168.0.255 Netmask:255.255.255.128
若是 Net_ID 爲16則由192開頭的 Class C 降爲 Class B,這種打破本來 IP 等級的方式(經過 Netmask 的規範)就被稱爲無類別域間路由(CIDR)
APR(Address Resolution Protocol,網絡地址解析)協議,RARP(Revers ARP,反向網絡地址解析)協議。 當咱們想要了解某個 IP 配置與哪張以太網卡時,咱們的主機就會對整個局域網發送出 ARP 數據包,對方收到 ARP 數據包就會返回他的 MAC 給咱們,以後開始傳遞數據。由於每次請求比較麻煩,所以使用 ARP 協議取得目標 IP 與他的網卡卡號後,就會將該筆記錄寫入咱們的主機 ARP table 中(內存內的數據),這個 ARP table 是動態信息(通常記錄20分鐘)
ICMP(Internet Control Message Protocol,即因特網信息控制協議):是一個錯誤檢測與報告的機制,最大的功能是確保咱們的網絡鏈接狀態與鏈接的正確性。ICMP是網絡層的重要數據包之一,不過是經過 IP 數據包來進行數據傳送的(歸入到了 IP 數據包中)
網絡層的 IP 數據包只負責將數據送到正確的目標主機去,數據包的接受已經正確接受是傳輸層的任務之一。傳輸層有兩個重點,一個是面向鏈接的 TCP 數據包,一個是無鏈接的 UDP 數據,數據能不能正確的被送達目的地,與這兩個數據包有很大的關係。
- URG(Urgent):若爲1,表明該數據寶爲緊急數據包
- ACK(Acknowledge):若爲1,表明這個數據包爲響應數據包
- PSH(Push function):若爲1,表明要求對方當即傳送緩衝區內的其餘對應數據包,而無須等待緩衝區滿了才送
- RST(Reset):若是爲1,表示鏈接會被立刻結束,而無須等待終止確認手續。
- SYN(Synchronous):若爲1,表示發送端但願雙方創建同步處理,也就是創建鏈接。主動鏈接到對方
- FIN(Finish):若爲1,表示傳送結束通知對方,等待對方響應
通訊端口(Port):若是 A (port:1025) 要找 B 談事情,先根據 B 的門牌號(IP)找到他家,再根據 B 的信息(好比他在家裏的代號爲2026,則Port:2026),找到他,而後和他一我的談事情 特權端口(Privileged Ports):規範好的固定 port,這些 port number 一般小於 1024,且是提供給許多知名的網絡服務軟件用的(好比古代皇帝的名字,平民就要避諱)
網絡是雙向的,因此不管是服務端仍是客戶端,都必須經過一次 SYN 和 ACK 來創建鏈接,因此總共會進行三次交談。
TCP 須要互動確認是否都在線,UDP 不須要確認 UDP 比較適合須要實時反應的一些數據流,例如影響實時傳輸軟件等。
利用一些防火牆機制與軟件來進行數據包報頭的分析,而且設定分析的規則,當發現某些特定的 IP 、特定的端口或者是特定的數據包信息(SYN/ACK等),那麼就講該數據包丟棄,這就是最基本的防火牆原理
以 OSI 七層協議來講,每一層能夠阻擋的數據有:
在 Internet 上面使用的是 TCP/IP 通訊協議,須要用 Public IP 鏈接上 Internet
IP 地址是由32位二進制數字組成,雖然咱們使用時已經簡化爲十進制,可是仍然很差記憶。計算機都有本身的主機名稱,將主機名稱與 IP 對應起來,這樣鏈接主機只要記住主機名就能夠了。將主機與 IP 對應的系統,就是鼎鼎有名的的 DNS(Domain Name System)了。也就是 說,DNS 的主要功能就是在進行「主機名稱與該主機 IP 的解析」,一項協議,好比:主機名(域名)爲:www.baidu.com IP爲:180.97.33.107(不肯定),很顯然www.baidu.com 比 IP 容易記憶,咱們訪問 www.baidu.com時,DNS就會自動幫咱們解析主機名,獲取 IP,鏈接到主機。 在 Linux 中,DNS 主機 IP 的設定在/etc/resolv.conf 這個文件裏面