無線網絡標準
IEEE 802.3
802.11a/b/g/n/ac 物理層,數據鏈路層data link layer
以太網是工作在物理層和數據鏈路層上
單工,雙工(物理層概念)
單工:單向傳輸數據??? (廣播,收音機)
雙工:雙向傳輸數據
全雙工:同時雙向?????? (手機)
半雙工:輪流雙向???? (對講機)
Hub集線器
共享帶寬(同一時間只能一臺機器發數據)
半雙工(一邊發另一邊不能發)
廣播發送數據(沒有安全性)
工作在物理層(不記憶MAC地址)
沖突域:指范圍,一個主機發送單波數據另一個主機同時發送單波數據,數據沖突,這兩臺主機就在同一個
沖突域。如果兩個主機同時向網絡發信息,信息不沖突,就證明兩個主機在不同的沖突域。
以太網橋
工作在數據鏈路層(記錄MAC地址)
學習源地址填充MAC地址表(網橋表)
網橋可以隔離分割沖突域
學習時根據源地址記錄機器位置,添加到網橋表
通過記錄網橋表,實現數據隔離,分割沖突域
當學習完成,進入轉發階段時,以太網橋是通過目標地址來轉發
網橋能夠隔斷沖突域不能隔斷廣播域
廣播地址只能出現在目標地址,所以網橋表不可能出現廣播地址
廣播域:一個主機發送廣播,其他機子收到廣播,那就表示所有機子在一個廣播域中。
交換機swich
工作在數據鏈路層(MAC地址)
全雙工
每一個接口代表一個沖突域
無法隔斷廣播域
查看網卡信息
mii -tool -v eth0
ethtool eth0
路由器router
工作在網絡層
隔斷廣播形成的廣播域
選擇路由表中到達目標最好的路徑
維護和檢查路由信息
連接廣域網
路由表記錄的不是MAC地址而是IP地址
路由器和電腦上都有路由表而且至關重要
只要要網絡通訊,就必須有路由表告訴系統信息應該怎么走
路由器隔開的叫網段
注意:100M的網絡傳輸100M的數據理論要8秒多,因為實際傳輸速率是要100M/8bit,還有報文首部等額
外驗證信息等要傳輸,所以實際達不到那么高。
查看路由表(在電腦和路由器上都有)
route -n
網卡工作在數據鏈路層
wifi 802.11工作在數據鏈路層
交換機是局域網設備,路由器是廣域網設備
局域網通訊是基于廣播機制的,廣域網通訊是基于單波(點對點)機制。
VLAN虛擬局域網
交換機隔斷廣播域的技術
VLAN=廣播域=邏輯網絡(Subnet)=網段
按照交換機端口來劃分不同的VLAN,實現隔斷廣播的效果
VLAN一般使用數字來編號? 10VLAN??? 20VLAN
在同一個廣播域的機器必須使用同一個廣播域的IP地址(網段)
172.20.x.x???? 不能直接訪問???? 172.18.x.x??? 必須加路由器
因此可以在路由器上加安全訪問策略,實現單向或雙向或禁止訪問。
兩個VLAN間通訊必須有路由
因此用trunk連接路由器和交換機,實現不同VLAN之間的通訊。
trunk
干道線路
鏈接不同樓層同一VLAN接口的數據,可以同時傳輸多個VLAN數據。
trunk協議
為了區別不同VLAN數據,所以會修改數據包,為數據幀打標簽,添加VLAN標簽
國際標準:802.1Q? (華為等)
思科:ISL
(另一個角度劃分)分層的網絡架構:
核心層???? 高速交換機? 企業級應用快速轉發
分布層???? 路由器???????? 路由、安全策略
訪問層???? 交換機???????? 接入
TCP/IP 協議棧???????????????????? OSI
應用層??????????? data??????????????????????? 應用層?? 表示層?? 會話層
傳輸層??????????? tcp/udp????????????????? 傳輸層
Internet層????? ip??????????????????????????? 網絡層
網絡訪問層???? ethernet???????????????? 數據鏈路層?? 物理層
應用層協議:
http80 https443? ftp21?? nfs?? dns(tcp53 udp53) tftp69?? smtp25? pop3? imap143 telnet23? ssh22 QQ
mysql 3306
oracle 1521
sql server 1433
查詢協議
cat /etc/services
cat /etc/services? | less
端口號就是標記
表示上層協議的區分
傳輸層
UDP? TCP
里面含有上層協議的端口號,用于區分數據的類型
多會話
分段
流控制(需要時)
面向連接(需要時)
可靠性(需要時)
Internet層
里面也有標記體現上層是TCP還是UDP協議的類型
IP地址
TCP
傳輸控制協議
工作在傳輸層
可靠 (錯誤檢查)
有序號? (可重傳)
文件Email下載
UDP
用戶數據包協議
高效
無序號
聲音圖像流
TCP特性
工作在傳輸層
面向連接協議(有協商過程)
全雙工
半關閉
錯誤檢查
數據包打包分段
確認機制
數據恢復重傳
流量控制滑動窗口
擁塞控制,慢啟動和擁塞避免算法
TCP包頭
共32位
0-15位表示源端口
16-31位表示目的端口
因此理論最多通訊的應用程序
2^16=65536
IANA:互聯網數字分配機構
0-1023:系統端口(僅管理員可用端口)
1024-49151:用戶端口或注冊端口
49152-65536:隨機端口(客戶端,上面是服務器的端口)
其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range
查看當前空余未被使用的端口號
cat? /etc/services | grep 9527
源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數為2^16個NFS? network file system
端口號不固定,且同時用好幾個
序號
本方電腦端的數據包編號
最大編號
2^32
42億多,用完就重新從0編(配合時間戳區分)
確認號
對方電腦端的序號
例如序號為100對方確認號就是101
表示100號包已收到并希望本方下次發101號包
ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段才有效。TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段
SYN:在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1,帶SYN標志的TCP報文段稱為同步報文段
FIN:表示通知對方本端要關閉連接了,標記數據是否發送完畢。如果FIN=1,即告訴對方:“我的數據已經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段
三次握手:?????????????????????????????????????????????????????????? A狀態????????????????????????? B 狀態
第一次握手:SYN位是1其他位全為0????????????????? CLOSED??????????????????? CLOSED/ LISTEN
第二次握手:SYN、ACK為1其他為0???????????????? SYN-SENT??????????????????? SYN-RCVD
第三次握手:ACK為1其他為0???????????????????????? ESTABLISHED?????????????? ESTABLISHED
四次揮手:????????????????????????????????????????????????????????? A狀態??????????????????????????? B狀態
第一次揮手:FIN為1?????????????????????????? ESTABLISHED/FIN-WAIT1???????? ESTABLISHED
第二次揮手:ACK為1???????????????????????????????????? FIN-WAIT2???????????????????? CLOSE-WAIT
第三次揮手:FIN、ACK為1??????????????????????????? FIN-WAIT2??????????????????????? LAST-ACK
時間等待狀態:2倍MSL時間,消息生存期
第四次揮手:ACK為1?????????????????????????????? TIME-WAIT /CLOSED????????????????? CLOSED
有限狀態機FSM:FiniteState Machine
CLOSED 沒有任何連接狀態
LISTEN 偵聽狀態,等待來自遠方TCP端口的連接請求
SYN-SENT 在發送連接請求后,等待對方確認
SYN-RECEIVED 在收到和發送一個連接請求后,等待對方確認
ESTABLISHED 代表傳輸連接建立,雙方進入數據傳送狀態
FIN-WAIT-1 主動關閉,主機已發送關閉連接請求,等待對方確認
FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸連接確認,等待對方發送關閉傳輸連接請求
TIME-WAIT 完成雙向傳輸連接關閉,等待所有分組消失
CLOSE-WAIT 被動關閉,收到對方發來的關閉連接請求,并已確認
LAST-ACK 被動關閉,等待最后一個關閉傳輸連接確認,并等待所有分組消失
CLOSING 雙方同時嘗試關閉傳輸連接,等待對方確認 (比較少見)
窗口大?。罕硎粳F在允許對方發送的數據量,也就是告訴對方,從本報文段的確認號開始允許對方發送的數據量
校驗和:提供額外的可靠性
緊急指針:標記緊急數據在數據字段中的位置
處于FIN_WAIT_2狀態的客戶端需要等待服務器發送結束報文段,才能轉移至TIME_WAIT狀態,否則它將一直停留在這個狀態。如果不是為了在半關閉狀態下繼續接收數據,連接長時間地停留在FIN_WAIT_2狀態并無益處。連接停留在FIN_WAIT_2狀態的情況可能發生在:客戶端執行半關閉后,未等服務器關閉連接就強行退出了。此時客戶端連接由內核來接管,可稱之為孤兒連接(和孤兒進程類似)
孤兒連接數最大數目:
/proc/sys/net/ipv4/tcp_max_orphans
孤兒連接最大保留時間:
/proc/sys/net/ipv4/tcp_fin_timeout
SYN攻擊
通過不斷發送2次握手耗光服務器內存,導致服務器無法響應普通用戶訪問
哪些端口處于監聽狀態
ss -ntul
Window size
固定窗口
滑動窗口
與TCP超時重傳相關的兩個內核參數:
/proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管之前TCP最少執行的重傳次數,默認值是3
/proc/sys/net/ipv4/tcp_retries2,指定連接放棄前TCP最多可以執行的重傳次數,默認值15(一般對應13~30min)
UDP包頭
16bit? source port???? 16bit destination port
16bit? UDP? length??? 16bit? UDP checksum
data
特性
工作在傳輸層
提供不可靠的網絡訪問
非面向連接協議
有限的錯誤檢查
傳輸性能高
無數據恢復特性
Internet層
Internet Protocol IP
Internet Control Message Protocol (ICMP)
Address Resolution Protocol(ARP)
Reverse Address Resolution Protocol(RARP)
分層編址
無數據恢復功能
IP協議
ICMP協議
ping 命令就是用這種協議
默認每次發送一條
判斷網絡穩定性:把包調大?? 最大65507
ping 192.168.30.128 -s 65507
洪水攻擊??? dos攻擊? 拒絕服務
必須本機性能比目標性能好,或者組團PING
ping 172.20.108.10 -s 65507 -f
IGMP???? 多播應用
Internet Group Management Protocol
ARP
地址解析協議
把IP地址解析成MAC地址
查看APR
arp -n
注意:
tcp握手前一定要經過arp廣播取得MAC地址才有可能進行
電腦上有一個類似路由表的表格,把取得的IP和MAC地址關系存放起來
ARP協議是基于廣播機制
ARP廣播不能跨路由
ARP會先行判斷兩臺機子是否處于一個4網段:
1)如果是一個網段則發送ARP廣播。
2)如果不是,就使用ARP廣播發送IP地址給默認網關,以此取得路由網關的MAC端口地址,以后發送數據包直接使用對應端口的網關MAC地址,由路由再次使用ARP廣播取得目標機器MAC地址,同時轉發信息給目標IP機器。
3)由此可知,在跨路由情況下,MAC地址會變化,IP地址不變。
arp -d
清除目標IP地址對應MAC地址記錄
systemctl restart network
重啟網絡
特殊ARP
機子重啟后,通過自問自答形式取得IP,目的防止將使用的IP地址與網絡上其他機子沖突(IP相同)。
RARP
反向地址解析協議
通過MAC地址獲得綁定的IP地址
通常用于無硬盤工作站獲取IP
通常獲取的是固定的IP地址
面試:
當你打開網絡瀏覽器訪問網站,背后做了什么事
它詳細的工作過程是什么?
應用層APP發出通訊請求,并提出數據包是基于可靠還是基于效率。
傳輸層響應上層APP的請求,準備建立通訊,基于可靠性則使用TCP協議,基于效率則使用UDP協議。在數據包里添加源端口號以及SYN等信息,并向下層INTERNET層提出通訊要求。
INTERNET層響應上層傳輸層的要求,準備建立IP通訊,把上層信息添加好本機以及對方IP地址信息,并通過查詢ARP表來確定是否有對應IP的MAC地址,如果沒有,則需要通過ARP廣播向網路中尋找目標IP。于是向下層網絡訪問層提出ARP廣播請求。
網絡訪問層響應INTERNET層要求,把源地址設為自己MAC,以48個1廣播地址為目標MAC向網路發送廣播信息。對方主機的網絡訪問層收到Frame后,向INTERNET層反映,目標主機INTERNET層收到廣播信息后,添加對方IP以及MAC地址到自己的ARP table,要求網絡訪問層通過單波把自己的MAC地址信息發送回給主機。主機收到信息后,傳送給本機ARP,并在ARPtable里添加上對方的IP以及MAC信息。
至此通訊雙方的IP以及MAC地址信息都已經齊全,可以開始三次握手過程,SYN、SYN ACK 、ACK通過三次握手建立對話連接后,開始進入穩定數據傳輸模式。
Internet 協議特征
運行于OSI 網絡層
面向無連接的協議
獨立處理數據包
分層編址
盡力而為傳輸
無數據恢復功能
IP PDU 報頭
含有上層協議的類型(tcp/udp)
版本:占4位???? ipv4
標識: 大于1500數據幀大小的單位切割的標識,標識一樣就代表來自同一個包
標志:占3位,表示包是拆分包還是不可拆分包,同時是否最后一個拆分包
目前只有后兩位有意義
DF,中間的一位,只有當DF=0時才允許分片
MF,最高位,MF=1表示后面還有分片。MF=0表示最后一個分片。
源地址? 目標地址? 每個地址32位????? 2^32 總共42億個地址
片偏移,實際就是切片包位于整個數據包的位置。
生存時間就是,ping命令看到的ttl,以經過路由器數量為單位,每經過一個路由器,ttl值就要減1。ttl為0則會被認為失效,會被拋棄。默認值為64。
ttl值可人為更改
echo 128 > /proc/sys/net/ipv4/ip_default_ttl
linux默認64,windows默認128,為防黑客通過ping判斷系統類型,可以修改ttl來實現。
192.168.30.128
如何從10進制轉換成2進制
實際范圍就是:0-255????? 00000000-11111111
00000000???? 0
00000001???? 1
00000010???? 2
00000100???? 4
00001000???? 8
00010000???? 16
00100000???? 32
01000000???? 64
10000000??? 128
11111111??? 255
所以根據上圖可知,
192=128+64
11000000
168=128+32+8
10000000+00100000+00001000=10101000
30=32-2
00100000-00000010=00011110
128
10000000
192.168.30.128
11000000? 10101000 00011110 10000000
把這一串數字連起來用bc轉化成10進制就是
3232243328
ping 3232243328? 能ping通!
實驗證明IP地址為2進制
協議域 Protocol Numbers
6表示TCP
17表示UDP
它們可唯一標識IP 網絡中的每臺設備
每臺主機(計算機、網絡設備、外圍設備)必須具有唯一的地址
IP地址由兩部分組成:
網絡ID:netid
標識網絡
每個網段分配一個網絡ID
主機ID:hostid
標識單個主機
由組織分配給各設備
為什么有了唯一的MAC地址還要有IP地址來標識設備?
因為MAC地址體現不出管理性,IP地址則可以體現管理思路,例如通過網絡ID體現主機處于哪個網段,主機ID體現哪個網段里哪一臺主機。
網絡ID肯定在前面,主機ID肯定在后面,具體看地址分類:
A類地址
0XXXXXXX.J.Y.Z
范圍就是
00000000?? 0
01111111?? 127
0-127
但是0和127都是特殊地址必須去除,所以實際范圍是1-126
前8位為網絡ID
A類網絡有幾個?
公式:
網絡(網段)數量=2^可變網絡ID位數
一個網絡的主機數量=2^主機ID位數-2
兩個地址不能用所以減2:
X.0.0.0? X網段號
X.255.255.255? X網段廣播
有類地址:
類別??????????? 地址????????????????????????????????? 網段號????????? 網絡ID?????????? 主機ID
A???? 0xxxxxxx.j.y.z?????????????????????????????? 1-126?????????? 前8位???????????? 后 24位
B???? 10xxxxxx.xxxxxxxx.y.z????????????????? 128-191?????? 前16位?????????? 后16位
C???? 110xxxxx.xxxxxxxx.xxxxxxxx.z???? 192-223??????? 前24位?????????? 后8位
D???? 1110xxxxx.x.x.x?????????????????????????? 224-239???????????????? 多播地址
E????? 11110xxx.x.x.x??????????????????????????? 240-255???????????????? 保留地址
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101537