計算機網絡 ,通internet連接各級用戶。
多種網絡服務爲用戶提供不一樣服務、例如ftp、web、tftp等
網絡的搭建由各類網絡拓撲來提升網速,容錯等問題例如:
總線拓撲、星型拓撲、擴展星型拓撲、環形、雙環拓撲、全網狀拓撲、部分網狀拓撲。
osi模型
應用層:網絡進程訪問應用層application
表示層:數據的表達presentation
會話層:數據的會話session
傳輸層:負責可靠的傳輸transport
網絡層:數據傳輸,邏輯上的惟一地址,路由數據包network
數據鏈路層:訪問介質,定義如何格式化數據以便進行傳輸以及如何控制對網絡的訪問,物理地址 data link
物理層:二進制傳輸,定義了物理的特性 physical
PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位(7層單位的通稱)
物理層的 PDU是數據位 bit
數據鏈路層的 PDU是數據幀 frame
網絡層的PDU是數據包 packet
傳輸層的 PDU是數據段 segment
其餘更高層次的PDU是消息 message
局域網 Local Area Network
1.局域網(lan):通常限定在較小的區域內,小於10km的範圍,一般採用有線的方式鏈接起來。
2.城域網(man):規模侷限在一座城市的範圍內,10~100km的區域。
3.廣域網(wan):網絡跨越國界、洲界,甚至全球範圍。
三種通信模式 (單工 半雙工 全雙工三種工做模式)
單播 單對單通信、每一個數據包發往單個目的主機,目的地址指明單個接收接口稱爲單播
廣播 一對多通信、一個主機向網上的全部其餘主機發送幀,稱爲廣播
多播(組播)處於單播和廣播之間:幀僅傳送給屬於多播組的多個主機
如今經常使用的非屏蔽的雙絞線utp的線序 (同軸電纜,光線|超五類以上)
白橙橙白綠藍白藍綠白棕棕 T568B
白綠綠白橙藍白藍橙白棕棕 T568A
以太網Ethernet Frame(工做在物理數據鏈路層)數據幀結構
preamble 7|sof 1|Desination address(目標)6| Dourcea address(源地) 6|Length 2|802.2Header and data 46-1500|fcs 4
Ethernet 2
IEEE802.3幀結構(byte)
preamble 7|sof 1|Desination address 6|Dourcea address 6|Type 2|802.2Header and data 46-1500 |fcs 4
type 區分上層協議
IEEE 802.1Q 幀結構(byte)
Desination address 6|Dourcea address 6|Vlan tag 4|Type 2|802.2Header and data 46-1500|fcs 4
vlan tag: tpid 2|pri 3bit|cfi 1bit|vid 12bit
TPID:TagProtocolIdentifier(標籤協議標識符),2Byte,表示幀類型,取值爲0x8100時表示IEEE802.1Q的VLAN數據幀。若是不支持802.1Q的設備收到這樣的幀,會將其丟棄,各設備廠商能夠自定義該字段的值。當鄰居設備將TPID值配置爲非0x8100時,爲了可以識別這樣的報文,實現互通,必須在本設備上修改TPID值,確保和鄰居設備的TPID值配置一致
PRI:Priority,3bit,表示數據幀的802.1p(是IEEE802.1Q的擴展協議)優先級。取值範圍爲0~7,值越大優先級越高。當網絡阻塞時,交換機優先發送優先級高的數據幀
CFI:CanonicalFormatIndicator(標準格式指示位),1bit,表示MAC地址在不一樣的傳輸介質中是否以標準格式進行封裝,用於兼容以太網和令牌環網。CFI取值爲0表示MAC地址以標準格式進行封裝,爲1表示以非標準格式封裝。在以太網中,CFI的值爲0
VID:VLANID,12bit,表示該數據幀所屬VLAN的編號。VLANID取值範圍是0~4095。因爲0和4095爲協議保留取值,因此VLAN ID的有效取值範圍是1~4094
Tcp:傳輸控制協議,面向鏈接的協議;通訊前須要創建虛擬鏈路;結束後拆除鏈路(全雙工
tcp 報文頭部 在type後面IPTCP 有一個20字節的固定頭部
0-65535-源端口0-16|目標端口16-32|序號seq32|確認號ack32|數據偏移4|保留6|6標記位-URG1(緊急指針有效)|ACK|PSH(1不在緩衝放直接發包|RST(重置位1從新鏈街)|SYN(同步)|FIN(結束)|窗口16|檢驗和16|緊急指針16|選項|填充(不固定的)
源端口、目標端口:計算機上的進程要和其餘進程通訊是要經過計算機端口的,而一個計算機端口某個時刻只能被一個進程佔用,因此經過指定源端口和目標端口,就能夠知道是哪兩個進程須要通訊。源端口、目標端口是用16位表示的,可推算計算機的端口個數爲2^16個
序列號:表示本報文段所發送數據的第一個字節的編號。在TCP鏈接中所傳送的字節流的每個字節都會按順序編號。因爲序列號由32位表示,因此每2^32個字節,就會出現序列號迴繞,再次從 0 開始
確認號:表示接收方指望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送方:我但願你(指發送方)下次發送的數據的第一個字節數據的編號爲此確認號
數據偏移:表示TCP報文段的首部長度,共4位,因爲TCP首部包含一個長度可變的選項部分,須要指定這個TCP報文段到底有多長。它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。該字段的單位是32位(即4個字節爲計算單位),4位二進制最大表示15,因此數據偏移也就是TCP首部最大60字節
URG:表示本報文段中發送的數據是否包含緊急數據。後面的緊急指針字段(urgent pointer)只有當URG=1時纔有效
ACK:表示是否前面確認號字段是否有效。只有當ACK=1時,前面的確認號字段纔有效。TCP規定,鏈接創建後,ACK必須爲1,帶ACK標誌的TCP報文段稱爲確認報文段
PSH:提示接收端應用程序應該當即從TCP接收緩衝區中讀走數據,爲接收後續數據騰出空間。若是爲1,則表示對方應當當即把數據提交給上層應用,而不是緩存起來,若是應用程序不將接收到的數據讀走,就會一直停留在TCP接收緩衝區中
RST:若是收到一個RST=1的報文,說明與主機的鏈接出現了嚴重錯誤(如主機崩潰),必須釋放鏈接,而後再從新創建鏈接。或者說明上次發送給主機的數據有問題,主機拒絕響應,帶RST標誌的TCP報文段稱爲復位報文段
SYN:在創建鏈接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求創建鏈接的報文段;當SYN=1,ACK=1時,表示對方贊成創建鏈接。SYN=1,說明這是一個請求創建鏈接或贊成創建鏈接的報文。只有在前兩次握手中SYN才置爲1,帶SYN標誌的TCP報文段稱爲同步報文段
FIN:表示通知對方本端要關閉鏈接了,標記數據是否發送完畢。若是FIN=1,即告訴對方:「個人數據已經發送完畢,你能夠釋放鏈接了」,帶FIN標誌的TCP報文段稱爲結束報文段
窗口大小:表示如今容許對方發送的數據量,也就是告訴對方,從本報文段的確認號開始容許對方發送的數據量,達到此值,須要ACK確認後才能再繼續傳送後面數據,由Window size value Window size scaling factor(此值在三次握手階段TCP選項Window scale協商獲得)得出此值
校驗和:提供額外的可靠性
緊急指針:標記緊急數據在數據字段中的位置
選項部分:其最大長度可根據TCP首部長度進行推算。TCP首部長度用4位表示,選項部分最長爲:(2^4-1)4-20=40字節
最大報文段長度:Maxium Segment Size,MSS,一般1460字節
窗口擴大:Window Scale
時間戳: Timestamps
。。。netstat -na -nat 查看連接狀態和 ss -nta 功能類似
面向連接:先創建連接在通信 三次握手
第一次握手 c發送請求 SYN=1 seq=x序號 c--r c-CLOSE-SYN SENT r-CLOSE LISTEN
第二次握手 r回 SYN=1 ACk=1 SEQ=y ack=x+1 r--c r-LISTEN-SYN RCVD c-YN-SENT-ESTAB LISTHED
第三次握手 c回 ACK=1 seq=x+1 ack=y+1 c--r r-ESTAB LISTHED
sync半連接 accept全鏈接 請求來 創建半連接(鏈表) 握手完成創建全鏈接(鏈表)
/proc/sys/net/ipv4/tcp_max_syn_backlog未完成鏈接隊列大小,建議調整大小爲1024以上
/proc/sys/net/core/somaxconn完成鏈接隊列大小,建議調整大小爲1024以上
。。。
終止連接 四次揮手 互相均可以發送
第一次揮手 FIN=1 seq =u c--r c-ESTAB LISHED-FIN WAIT 1
第二次揮手 ACK=1 seq=v ack=u+1 r--c r-ESTAB LISTED-CLOSE_WALT
第三次揮手 FIN=1 ACK=1 seq=w ack=u+1 r--c c-TIN_WAIT1-FINWAIT2-TIME WAIT r-CLOSE WAIT-LASTACK
第四次揮手 ACK=1 seq=u+1 ack=w+1 c--r c-TIMEWAIT等待兩倍的數據端最大時長-CLOSE r-CLOSED
NetworkMangager 和 network 服務可能衝突
yum install httpd-tools;ab -c 100 -n 2000 http://192.23.. 遠程連接屢次 172.22.149.155
處於FIN_WAIT_2狀態的客戶端須要等待服務器發送結束報文段,才能轉移至TIME_WAIT狀態,不然它將一直停留在這個狀態。若是不是爲了在半關閉狀態下繼續接收數據,鏈接長時間地停留在FIN_WAIT_2狀態並沒有益處。鏈接停留在FIN_WAIT_2狀態的狀況可能發生在:客戶端執行半關閉後,未等服務器關閉鏈接就強行退出了。此時客戶端鏈接由內核來接管,可稱之爲孤兒鏈接(和孤兒進程相似)
Linux爲了防止孤兒鏈接長時間存留在內核中,定義了兩個內核參數
/proc/sys/net/ipv4/tcp_max_orphans指定內核能接管的孤兒鏈接數目
/proc/sys/net/ipv4/tcp_fin_timeout指定孤兒鏈接在內核中生存的時間
TCP超時重傳相關的兩個內核參數:
/proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管以前TCP最少執行的重傳次數,默認值是3
/proc/sys/net/ipv4/tcp_retries2,指定鏈接放棄前TCP最多能夠執行的重傳次數,默認值15(通常對應13~30min)
TCP擁塞控制的標準文檔是RFC 5681,其中詳細介紹了擁塞控制的四個部分:慢啓動(slow start)、擁塞避免(congestion avoidance)、快速重傳(fastretransmit)和快速恢復(fast recovery)。擁塞控制算法在Linux下有多種實現,好比reno算法、vegas算法和cubic算法等。它們或者部分或者所有實現了上述四個部分
當前所使用的擁塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control
有限狀態機FSM:Finite State Machine
CLOSED 沒有任何鏈接狀態
LISTEN 偵聽狀態,等待來自遠方TCP端口的鏈接請求
SYN-SENT 在發送鏈接請求後,等待對方確認
SYN-RECEIVED 在收到和發送一個鏈接請求後,等待對方確認
ESTABLISHED 表明傳輸鏈接創建,雙方進入數據傳送狀態
FIN-WAIT-1 主動關閉,主機已發送關閉鏈接請求,等待對方確認
FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸鏈接確認,等待對方發送關閉傳輸鏈接請求
TIME-WAIT 完成雙向傳輸鏈接關閉,等待全部分組消失
CLOSE-WAIT 被動關閉,收到對方發來的關閉鏈接請求,並已確認
LAST-ACK 被動關閉,等待最後一個關閉傳輸鏈接確認,並等待全部分組消失
CLOSING 雙方同時嘗試關閉傳輸鏈接,等待對方確認
ARP 地址解析地址 擁有ip地址經過廣播得到mac地址
ARP先於三次握手
RARP 反向解析地址 mac-ip 發送請求IP地址
IP 協議PDU報文頭部 20字節固定
版本:佔4位,指 IP 協議的版本目前的IP協議版本號爲4
首部長度:佔4位,可表示的最大數值是15個單位,一個單位爲4字節,所以IP 的首部長度的最大值是60字節
區分服務:佔8位,用來得到更好的服務,在舊標準中叫作服務類型,但實際上一直未被使用過.後更名爲區分服務.只有在使用區分服務(DiffServ)時,這個字段才起做用.通常的狀況下不使用
總長度:佔16位,指首部和數據之和的長度,單位爲字節,所以數據報的最大長度爲 65535 字節.總長度必須不超過最大傳送單元 MTU
標識:佔16位,它是一個計數器,一般,每發送一個報文,該值會加1,也用於數據包分片,在同一個包的若干分片中,該值是相同的
標誌(flag):佔3位,目前只有後兩位有意義
DF: Don’t Fragment 中間的一位,只有當 DF=0 時才容許分片
MF: More Fragment 最後一位,MF=1表示後面還有分片,MF=0 表示最後一個分片
片偏移:佔12位,指較長的分組在分片後,該分片在原分組中的相對位置.片偏移以8個字節爲偏移單位
生存時間:佔8位,記爲TTL (Time To Live) 數據報在網絡中可經過的路由器數的最大值,TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字 RFC 指定,當前值爲 64.發送 ICMP 回顯應答時常常把 TTL 設爲最大值 255
cat /proc/sys/net/ipv4/ip_default_ttl
協議:佔8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據部分上交給哪一個處理過程, 1表示爲 ICMP 協議, 2表示爲 IGMP 協議, 6表示爲 TCP 協議, 17表示爲 UDP 協議
首部檢驗和:佔16位,只檢驗數據報的首部不檢驗數據部分.這裏不採用 CRC 檢驗碼而採用簡單的計算方法
源地址和目的地址:都各佔4字節,分別記錄源地址和目的地址
片偏移以8個字節爲偏移單位,假定MTU=1500
三個包標識ID都相同,三個包DF都爲0,前兩個MF=1,最後一個MF=0
ip 地址
私有地址範圍
A 10.0.0.0 10.255.255.255
B 172.16.0.0 172.31.255.255
C 192.168.0.0 192.168.255.255
路由
主機路由:記錄到哪個主機怎麼走(數據龐大)
網絡路由:網段怎麼走
默認路由:有一條默認路徑只有這一條路
優先級:精度越高優先級越高
route -n
dhcp 動態主機配置協議 c-r 廣播發現報文discover|r-c 廣播提供消息offer|c-r 發送請求消息作出響應request|r-c 確認消息結束交換過程ACK報文 web