1. 程式人生 > >9、網絡知識(路由交換和ARP協議)+配置單網卡多ip和配置默認路由

9、網絡知識(路由交換和ARP協議)+配置單網卡多ip和配置默認路由

路由交換 ARP協議 網絡配置

網絡知識詳解

提問:網絡到底是什麽?
我們在電纜中傳輸的都是電信號(高電壓或者是低電壓),所以高電壓就是1,低電壓就是0,所以規定一定的時間傳輸固定的高低電壓來當做是接收的數據
我們所謂的10Mbps:每秒中可以傳輸10M個bit
所以別人說你的是4M的帶寬,指的就是4Mbps,要除以8才是實際的速率
那就是4Mbps=4/8MBs=0.5MBs=0.51024KBs=(41024)Kbps=512KB/s的下載速率
我們平時說的下載速度就是以KB/s為單位的
1KB/S=8Kbps 512KB/S=8K*512bps=4096Kbps=4Mbps

信號傳輸遵循的一種規定,叫做協議
協議:protocol
技術分享圖片

網絡類型

1.總線型網絡(上圖就是一個總線型網絡):

遵循著CSMA/CD:Carrier sense multi access collision detection載波偵聽多路訪問,沖突檢測。在某一個時刻,一條線纜只能傳輸一個信號,因此就必須有一個線路仲裁的約定(說白了就是哪一個時刻誰可以使用誰不能使用的意思)

要想實現線路仲裁,就要知道以下的知識點
CSMA/CD:Carrier Sense Mutil Access Collision Detection載波偵聽多路訪問,沖突檢測
檢測有數據,就退出不發了,邊發送邊偵聽,這樣的一種機制就是以太網
以太網最核心的標識就是上面這個東西

MAC:Media Access Control
我們給每一個主機一個識別碼,一種標示,在發送信號的時候,這個信號的首部就放著接收方的mac地址,接收的時候根據mac去匹配這個數據是不是發給你的,不是你的就不接收

無論是首部還是數據,其實在電信號上都是01代碼來的。

2.環形網絡(IBM的專用技術):
令牌在不斷的環形網絡中遊走,誰要發送信息的時候,只要抓住這個令牌就可以了
令牌環網:只有持有令牌的人才能發信息
所以他也是解決一種網絡仲裁的
技術分享圖片

3.星型網絡
(從邏輯上來講,他還是一個總線型的網絡,只是更方便接線的,當A發送B的時候,C也是可以收到信號的):
技術分享圖片

提問:電壓是什麽?
在電源的兩極間產生了電位差,也就是我們常說的電壓;一加壓,電子是從負極流向正極的。
中繼器:我們電壓如果在傳輸的過程中,線路太長,他會因為電阻,線纜質量,等因素,電信號是會不斷的衰減的,所以引入一個新的概念,就是中繼器,她能將縮減的信號,重新放大,再進行傳送。

比如說我們的網線,實際傳輸距離不可以超過100m,是因為長度越長,衰減越大,就需要一個交換機再將信號放大,在傳送,這個實例中的交換機就是類似於中繼器的概念

提問:網橋的作用?
網橋就是來連接兩岸的,所以當A和C需要通信的時候,而B的鏈路是收不到的(如果A不知道C在哪裏,那B會收到A發過來的廣播包,而之後網橋形成了自己的MAC地址表的時候下一次A和C的通信B就不會收到了),而A要和B通信的時候,也是通過網橋來進行傳輸的
技術分享圖片

那麽網橋是怎麽知道A要發給B的呢?
其實它本身就有一個表,通過廣播之後就會形成MAC地址表在網橋內。
就是根據MAC地址表來發送的

那麽表中的數據從何而來?
提問:假如網橋中沒有任何信息,那是怎麽通信的呢?
其實通信的開始就是通過廣播機制的方式得知的,就是通過不斷的學習,然後交換機不斷的強大自己的MAC地址表,然後就得知所有的內部網絡了,外部的當然被路由器給隔絕了
那我們假如每一臺主機都接到網橋的一個接口,如下圖所示
技術分享圖片

全雙工和半雙工
A可以發信號給B,但是同一時刻B不能發送數據。就是:半雙工(如對講機設備;)
A可以發信號給B,同一時刻B也能發送數據給A就是:全雙工(如電話設備;)
網線,其實有用的只有4根,絞線的原因是防止幹擾的

而我們的這個網橋設備,能夠用自己的MAC地址表識別整個網絡,就是叫做交換機
交換機:隔絕了沖突域,不能隔離廣播域
路由器:可以隔絕廣播域,

沖突域:
廣播域:
我們原來用的是物理地址去通信,通過MAC地址去廣播,這樣就能廣播所有的主機,萬一整個網絡很大,那所有的主機都要被廣播,而且鏈路中也充滿了廣播,所以大大的加大了鏈路的負載
為了不用廣播到所有網絡中,要的就是一個邏輯地址去通信,指定要通信的對方,而這個邏輯地址就是我們所謂的IP地址
廣義上的IP包不再看MAC地址是什麽,只看我們的ip地址是什麽,這樣來傳輸
比如說1.1->2.1(這是兩個網段)的時候就是跨網絡的傳播,到了對端,也不會和MAC地址一樣,到了對端還廣播找設備,而有一個設備就有專門的表,他記載的是不同接口的ip地址,而這種跨網段的數據連接,主機都是交給自己的網關去處理,而到了其他網段的時候,就根據這個表去將數據包發給指定的網段的主機,而這個設備就是路由器,這個表就是路由器的路由表
當然第一次的時候也是需要廣播的,廣播之後,就記載了所有網段之間的對應的網段的

網絡通信過程(路由器和交換機)
網絡早先就是一個總線型網絡,雖然用了網橋集合了所有端口,也改變不了實質是總線型的概念
技術分享圖片

當我們的AB通信,整個鏈路都沒辦法通信的,因為傳輸的是電信號,整個線路都充斥著這個電信號

所以CD也是不能通信的(總線型的缺點)
那我們就需要的是隔離這種沖突,我們用一種設備將他們隔離開來(就是網橋)
用了網橋,如果AC需要通信的話,如果A是剛接入網絡中來的,第一次想發送數據給C的話,A首先發送的報文是這樣的(廣播包)(MA|MBrodcost)(也就是記錄了本地的MAC地址和發送一個廣播地址的包),因為A壓根不知道C的MAC地址是什麽,所以首個報文的目的就是廣播的,而網橋也是無條件去轉發這一種廣播包的,也同時讓所有設備知道有A的存在,也讓網橋在MAC地址表記載A的信息

本地通信的話是一定要依賴於廣播的,不然怎麽內部通信?
網橋在以前就只接多個網絡的,而現在是有多端口的網橋,命名就叫做交換機
技術分享圖片

其中廣播和交換機沒有什麽關系,就看主機發送的是不是廣播包,而交換機是無條件發送廣播的
所以如果整個網絡都無條件接收廣播的話,那整個網絡鏈路會有多麽的混亂和增大鏈路負載

這就引入了一個新的設備:
路由器(隔絕廣播域)
路由器區分不同區域的話,如果用MAC地址,他根本不知道怎麽區分MAC地址屬於哪一個區域,因為MAC地址在記載到網卡上,網卡上的辨識是不同的廠商提供的,所以辨別不同的區域用的是邏輯地址,也就是ip地址和子網掩碼合起來去區分。
所以有了路由器發的報文就是這樣子的
只要發現目標主機和當前主機不是同一個網段,就把包交給路由器(用來轉換非本地通訊的,本地通訊依賴於廣播包)
技術分享圖片

邏輯地址是附加上主機上的,其實最終通訊的話,還是要根據MAC地址去通訊的
我們ping的是ip地址,但是在進程中是靠MAC地址去通信的
我們不通過路由器的內部網絡,無論如何,本地通訊都是先通過廣播先進行通信的,然後將對應的MAC地址和主機的ip地址記載到了交換機的MAC地址表,而我們本地通訊依靠的廣播,就是依靠ARP協議進行ip地址和MAC地址之間查詢的

ARP協議

第一次的找目標主機發送的是廣播,而是通過就是邏輯地址找MAC地址的,就是ARP協議,而反過來的通過MAC地址找邏輯地址的就是RARP協議

我們區分1.0和2.0是不同網絡的是子網掩碼(判斷哪一部分是指網絡的,哪一部分是取的主機的)
像192.168.1.0和192.168.2.0的話,如果子網掩碼是24的話,就是不同網絡,
而如果子網掩碼是22的話,那這兩個就是同一個子網
因為22就是255.255.252.0,則網絡就是192.168.0.0-192.168.3.255都是同一個網絡
不在同一網絡的話,就是通過網關去轉發
如果網關不跟自己內部的地址在同一個網絡是不行的,一定要在同一個網絡,這個是常識
理解下圖的邏輯(如主機是192.168.1.1/24,網關肯定是屬於192.168.1.0/24的網絡)

技術分享圖片

從1.1到2.1的通訊,MAC地址先用的是路由器的1.1的網關的MAC
到了路由器的時候,再重新封裝成目標2.1的MAC地址,目標ip是不會變化的
所以說數據包在傳輸的過程中,MAC地址都是一直變化的,而變化的範圍就是本網段的源MAC和目的MAC之間的轉換,目的MAC就是下一跳的設備的MAC
技術分享圖片

之後到了2.1就去掉MAC了,然後查看是到自己的網絡IP,就繼續解包,最後就可以得到數據了
所以為什麽我們發報文的是時候,要有ip首部地址和MAC首部地址了

路由器的路由表
IP和路由器端口號
交換機的MAC地址表
IP和MAC地址

深度去理解互聯網中多個路由器的概念:要指定網絡到路由表去
1是使用指定靜態路由(做這個的話要做雙向的指定,不然去的了目的網絡,卻回不來的)
2是采取協議來實行(如ospf,rip,eigrp這些路由協議這些去學習)
這是屬於思科的網絡知識
假如一個信息由一個口告訴另外一個口,那這個口不能告訴我告訴你的網絡,不然的話會形成環路的,(水平分割);所以動態學習的機制,還是需要更多的去配置,這裏的話就是一個水平分割的知識點

在通信過程中
MAC地址是用來標記本地網絡的地址通信(所以一個數據包,MAC地址是不斷的變化的)
而ip地址呢?是從源主機到目標主機都不會改變的

我們來通過端口來識別
同一臺主機上的不同進程
端口都是0-65536之間的
端口和進程之間是沒有必然的關系
比如http服務器是80端口,而在客戶機上的是隨意的端口去辨識http的進程
而這個http的80端口,是專門分配給web服務的
某一些著名的服務,必須用固定的端口的,ssh是22,dns是53,你更換成其他是可以使用,但是必須要加上你指定的端口去訪問,而默認的不用指定,內部就指定了,比如打開網址,默認就是80端口
實際上客戶機來講自己打開的端口是隨機的。

我們著名的服務,端口必須一致打開,這叫做監聽(監聽就是必須要打開一個端口)
一個端口只能屬於一個進程
所以有人訪問,就隨時可以訪問
客戶端是主動打開,服務器是被動打開
要理解什麽叫監聽

端口和ip其實還是有關聯關系的
ip:port綁定起來就叫做一個套接字:Socket
協議的分層(這是因為數據報文必須交給對應的層去解析的):
有專門管理MAC的
裝專門管理IP的
有專門管理端口的

也就是osi七層模型
應用層
表示層
會話層
傳輸層
網絡層
數據鏈路層
物理層

學網絡最核心的就是傳輸層(解析端口的)和網絡層(解析IP地址的)
實際每一個都是非常難的
就比如說網絡層的ip,一個IP Header(ip首部)如下圖所示
技術分享圖片

4位的版本號
4位的標識首部長度
服務類型(TOS)
Total Length整體長度
Identification(Fragment ID):標記符(片標識符)
Fragment Offser:片偏移量,一共有13位
DF:標識不分片(不準分片)
MF:標識有更多的分片
Time-to-Live:存活時間
Protocol:由於標記在data當中的上一個協議標識(常見的是TCP,UDP)
Header Checksum:首部校驗和
Source IP:邏輯源ip地址
上圖是學習網絡的基礎知識
當然TCP首部會比這個IP首部還要麻煩

OSI7層參考模型,而現在都是以TCP/IP這種協議來學習,而且反而這種TCP/IP、是現在現實中正在使用的模型
IP層首部有20個字節
技術分享圖片
技術分享圖片

4位的版本號 4位的標識首部長度 8位服務類型(TOS) Total Length整體長度
Identification(Fragment ID):標記符(片標識符)
Fragment Offser:片偏移量,一共有13位
DF:標識不分片(不準分片)
MF:標識有更多的分片
Time-to-Live:存活時間
Protocol:由於標記在data當中的上一個協議標識(常見的是TCP,UDP)
Header Checksum:首部校驗和
Source IP:邏輯源ip地址

IPv4點分十進制學習(網絡基礎)
一個ip地址是分為網絡地址和主機地址
A類的是首位是0,其他7位可變化
127個A類,127用於回環,有用的就是1-126,2^7-1個A類
(實際設計用127的A類做回環,是非常浪費的)
B類是以10開頭,後面7位隨意變化
64個B類網絡,2^14個B類網絡
C類是以110開頭,後面隨意變化
32個C類地址,2^21個C類網絡
D類:
224-239
E類:
技術分享圖片

所有的IP地址都由

國際組織NIC(Network Information Center)負責統一分配.

目前全世界共有三個這樣的網絡信息中心。
InterNIC:負責美國及其他地區;
ENIC:負責歐洲地區;
APNIC:負責亞太地區。
我國申請IP地址要通過APNIC,APNIC的總部設在日本東京大學。申請時要考慮申請哪一類的IP地址,然後向國內的代理機構提出

私有地址(這些地址也是不能被路由的,作為源地址是可以的,作為目標地址在互聯網中是不會傳送的):
技術分享圖片

路由(選擇路徑的,有很多考慮的因素:如cost值,跳數之類的)

目標是一個主機的就是主機路由(如7.1主機)
目標是一個網絡的就是網絡路由(如到達7.0的網絡)
最佳匹配我們默認是選擇主機路由優先的(默認選擇會覺得主機路由是為我專用鋪設的,而網絡範圍大的次選)
一個路由器如果沒有匹配的條目,一般都會設置一個默認路由0.0.0.0/0

劃分子網:簡單來說就是把主機位拿過來給網絡位來用
TCP詳解
TCP也是沙漏的模型
無論底層的傳輸介質什麽不同,到了第三層的ip就都是一樣的,如下
底下是以太網的,或者是點對點的撥號網絡:ppp,ATM的
這些底層機制都不一樣,但是到了IP都服服帖帖都變成可識別的了
技術分享圖片

TCP: Transmission Control Protocol
有連接可靠的協議
試探性的找到對方,然後在進行連接,然後才進行報文發送的

經典的三次握手
雙向通道,雙向斷開的
(斷開需要四次握手(比如模擬斷開:tom說分手(主動斷開),對方同意,等一下對方也要說一次分手,tom同意)
tom提出分手的就是主動關閉,提出之後,time-wait1等待對方說同意,time-wait2等待對方說一次分手)
下面我們來看一下TCP的首部

技術分享圖片

技術分享圖片
TCP首部 4個字節
源端口和目標端口
序列號
確認號
首部長度(4bit) 3位Reserved URG(緊急位)ACK(確認位)PSH(不在緩沖區停留,而是趕緊的發送出去)RST(連接重置(不需要像三次握手這樣做))SYN(追求的)FIN(說分手的) Window Size窗口大小(接收方可接受的緩沖區的報文的個數,所以數據報文傳送多少要取決於接收方的窗口大小)
TCP的校驗和
緊急指針
Options

我們現在看一下三次握手和四次斷開,如下圖

技術分享圖片
TCP的有限狀態機,而且TCP就是在這些狀態裏不斷的轉換的,他一定屬於上面的某一次握手或者斷開,所以在抓包的時候就可以看到了.
技術分享圖片

資源子網:資源的共享或者是子網的獲取.

網絡功能是內核的層次
路由器(其實就是扁平化的一臺電腦而已,只是系統和硬件專門對網絡轉發等做了優化而已,一般底層也都是Linux來的)

技術分享圖片

網卡的綁定機制:bonding
我們作為系統管理員,完全可以將兩塊網卡同時工作(負載也好,主備也好)

UDP:User Datagram Protocol
無連接不可靠的協議
直接把報文丟到網絡去,對方能不能收到不理會
QQ用的就是UDP(他會返回對方未收到之類的信息是在應用層的部署,他在傳輸層就是UDP的協議)

要知道哪一些是TCP的,哪一些是UDP的
點對點的撥號網絡:ppp

網絡配置與管理:
在2013年這個網絡基礎有詳細的筆記
沖突域:老的總線型網絡是各個終端處在一個沖突域的
網橋:
多接口:交換機
學習:
廣播域:
8位2進制數據:0-255
0-255.0-255
技術分享圖片

Hub有MAC地址(各個Host處在同一個廣播域)
路由器有路由表
在2013年的教程中有詳細的學習
1.1 --> 2.2
1111 1111. 0000 0000
1.0
2.0
IP: 4段
1.1.1.1
32位:
大:0 000 0000 - 0 111 1111:0-127
中:10 00 0000 - 10 11 1111:128-191
小:110 0 0000 - 110 1 1111:192-223
d1110 0000 - 1110 1111:224-239
e1111 0000 - 1111 1111:240-255

全0:網絡地址
全1:廣播地址

A:1-126
126個網絡
每個網絡中的主機:2^24-2
B:128-191
2^14個網絡
每個網絡中的主機:2^16-2
C:192-223
2^21個網絡
每個網絡中的主機:2^8-2

172.16.0.0
255.255.0.0
子網劃分
172.16.0.0/255.255.255.0
172.16.255.0/255.255.255.0
172.16.255.255

子網匯聚;超網
192.168.0.0/255.255.255.0 --> 192.168.255.0/255.255.255.0
192.168.0.0/255.255.0.0

ip地址劃分

A類:
1-126個網絡,127用於回環,2^7-1(127網段用作回環地址其實是非常浪費的,當時肯定劃分的時候一定是非常多地址,其實我們ping回環地址不只是127.0.0.1,其實是127網段的可用地址都是通的,比如127.0.0.5)
容納的主機數:2^24-2
默認掩碼:255.0.0.0
主機位全0:網絡地址
主機位全1:廣播地址

B類:
2^14個網絡
容納的主機數:2^16-2
默認掩碼:255.255.0.0

C類:
2^21個網絡
容納的主機數:2^8-2
默認掩碼:255.255.255.0

私有地址
A類:
1個:10.0.0.0/255.0.0.0
B類:
16個:172.16.0.0/255.255.0.0-172.31.0.0/255.255.0.0
C類:
256個:192.168.0.0/255.255.255.0-192.168.255.0/255.255.255.0

路由表生產方法:
1、靜態設置
2、動態生成(rip,ospf,eigrp之類的)
cost: 成本
rip特性:經過的跳數越少就越小
時長
路由協議:RIP2, OSPF, EIGRP(生產路由條路,對路由進行匹配傳輸的)
可路由協議:IP協議
其實是進程與進程之間的交互(有一個概念就是叫做進程監聽器)

ip是真正實現主機到主機之間的通信的,目的地址是不會變的
物理介質:物理層,物理層協議
鏈路層:數據幀,鏈接層協議(PPP等等);只能完成同層的設備之間進行通信
網絡層:數據包,IP協議
傳輸層:傳輸層 (TCP,UDP)
TCP:0-65535
UDP:0-65535
應用層:標記資源
技術分享圖片

端口:用於標記進程
0-65535:

Socket: IP:port(套接字就是IP和端口的組合)進程之間通信是通過套接字的
172.16.100.7:80
172.16.100.8:80

協議棧:內核
TCP/IP協議簇

主機名:FQDN完全合格;完全限定的域名
Full Qulified Domain Name
www.magedu.com
名稱解析:DNS
技術分享圖片

理解其中一些概念?
Fragment: IP分片(分開傳輸,到達時候再合並)
我們本地傳輸這麽快,和遠程傳輸這麽慢
源於幀,源於MTU:Maximum Translate Unit(最大傳輸單元)
我們發送的本地是1500的傳輸單元,而路由器有一些還有一些不支持這麽大的MTU,就必須再分片去傳輸
Fragment: IP分片(分開傳輸,到達時候再合並)
所以分片的會非常的小去傳輸,而且中間很多路由器,會不斷拆和不斷去封裝
合並的話要怎麽去合呢?
技術分享圖片

TCP Header
技術分享圖片

FIN結束關系,SYN建立關系
ACK確認號,URG緊急位
下圖是三次握手和四次斷開
技術分享圖片

TCP被稱為:有限狀態機
FSM: Finite State Machine

Bonding的模式一共有7種:
#define BOND_MODE_ROUNDROBIN 0 (balance-rr模式)網卡的負載均衡模式
#define BOND_MODE_ACTIVEBACKUP 1 (active-backup模式)網卡的容錯模式
#define BOND_MODE_XOR 2 (balance-xor模式)需要交換機支持
#define BOND_MODE_BROADCAST 3 (broadcast模式)
#define BOND_MODE_8023AD 4 (IEEE 802.3ad動態鏈路聚合模式)需要交換機支持
#define BOND_MODE_TLB 5 自適應傳輸負載均衡模式
#define BOND_MODE_ALB 6 網卡虛擬化方式

bonding模塊的所有工作模式可以分為兩類:多主型工作模式和主備型工作模式,balance-rr 和broadcast屬於多主型工作模式而active-backup屬於主備型工作模式。(balance-xor、自適應傳輸負載均衡模式(balance-tlb)和自適應負載均衡模式(balance-alb)也屬於多主型工作模式,IEEE 802.3ad動態鏈路聚合模式(802.3ad)屬於主備型工作模式.

回顧:網絡基礎知識
ARP:協議
本地通信必須要通過MAC地址來通信
在一個局域網內,A需要知道B的MAC地址,A就需要發送一個廣播,然後通過ARP協議知道B端的MAC地址
涉及到了一個ARP欺騙.
比如在一個局域網內,A要和B通信,A要獲取B的mac地址,但是是C主機作為攻擊主機,他截取收到,給A發送了一個回去的包,A以為C就是B,而這時候A需要回包給B的時候,就回包給了C,然後C再回包給B,整個流程就形成了一個ARP欺騙,每一次數據A到B的時候,C都會收到一份

Hostname: 主機名
ifconfig route
ifconfig ethX IP/Mask {up}
ifconfig ethX IP netmask Mask
ip addr add dev ethX IP/Mask [label LABEL]
以上是立即生效,但不會永久有效,而下面的是不會立即生效重啟有效
/etc/sysconfig/network-scripts/ifcfg-ethX

配置主機名的方法:FQDN(Fully Qualified Domain Name 正式域名)
hostname HOSTNAME
/etc/sysconfig/network
NETWORKING={yes|no}
HOSTNAME=
GATEWAY=這裏也可以配置網關的,(作用範圍越小,有效性越高)
[root@www ~]# cat /etc/sysconfig/network
NETWORKING=yes 網絡開關
HOSTNAME=www 主機名

默認網關只有一個,但是路由可以有很多條
路由:
route add {-host|-net} gw GATEWAY 添加主機路由或者是網絡路由
route add default gw GATEWAY 添加默認路由

ip route add DEST [via NEXT_HOP|dev DEVICE] [src SOURCE]

常用的網絡狀態的選項是-tan
netstat -tan (t表示tcp,a表示的是ESTABLISHED和LISTEN都顯示出來,一般我們顯示LISTEN就好,因為顯示建立連接的可能會很多,n表示以數字顯示)
netstat -untlp 常用這個(沒有顯示ESTABLISHED)
ss -untlp

proc是偽文件系統,所以很多proc的都是不能直接vim編輯器去編輯的
所以是通過sys接口去修改內核參數的
我們的主機名是保存在內核文件中的/proc/sys/kernel/hostname

9、網絡知識(路由交換和ARP協議)+配置單網卡多ip和配置默認路由