基礎知識:
局域網內尋址通過MAC地址(物理地址)來實現
FF:FF:FF:FF:FF:FF爲MAC的廣播地址,主機間通信發起方如果不知道接收方MAC會用此MAC地址發一個廣播包。
電纜傳輸過程:電流(電信號)------經過一段距離(電阻)-----電信號衰減—中繼器
不同介質的傳輸距離不同,但都是有限的。
網橋、交換機:切割衝突域(有端口MAC對應表,定期清理---學習)
路由器:(有路由表,定期學習、清理),選路根據路由協議,邏輯尋址依靠被路由協議(如ip協議)切割廣播域(引入IP等邏輯地址尋址)
網絡模式:
單工:只能單向發送數據。
半雙工:可以雙向發送數據,但同一時刻只能有一方可以發送數據(如對講機)。
全雙工:如雙絞線,傳輸數據只要用到2跟線(一個爲發送數據用的,一個爲接收數據用的),另外2根用來屏蔽干擾。雙機互聯必須使用交叉線(一端收,一端發),雙方同時可以向對方發送數據,就如同電話機,電話線就只有兩條線!---千兆網絡需要使用雙絞線全部8條線
主機要聯網----必須設置一個網關(即默認路由)
***MAC地址不能跨網絡,每次都由router封裝爲自己出口網口的MAC地址(主機間通信最終還是要靠MAC地址!)
RARP(MAC—IP, 已知對方MAC地址,請求IP地址)
IP地址分爲2段:網絡地址.主機地址;以子網掩碼標識網絡位。
子網掩碼:是一堆連續的1和0組成的二進制數字。
路由過程:發信息前,系統判定目標主機是否屬於本主機所在網絡,若不是則通過網關發出去。
**端口(範圍0~65535):系統通過端口來識別同一系統上的不同進程,以表示2臺不同主機的進程間的通信。流程:數據包----網卡----內核空間(查看目標端口號)-----用戶空間對應進程
*服務器需要監聽在某端口上,它的端口號必須固定以便於客戶端訪問。
*一個端口只能對應一個進程,2者之間建立起對應關係,這種機制對於服務器端稱爲被動打開,對於客戶端稱爲主動打開。
端口與IP有一一對應的關係,1臺server上有多個ip,就可以有多個80端口可供使用(每個ip一個80端口),對於server程序來說,必須至少與其中一個ip綁定,這種綁定(1個ip、1個端口)稱爲套接字(socket)
ISO/OSI 7層網絡模型
TCP/IP網絡模型
IP地址分類A\B\C\D
127.0.00/8用於迴環地址
*主機位全1爲廣播地址,全0爲網絡地址
*)國際組織ICANN管理IPv4地址,如需使用需要向他們註冊購買
私有地址(這些地址不會被互聯網上的路由器路由的,路由即選路):
A類:10.0.0.0/8
B類:172.16.0.0/16------172.31.0.0/16
C類:192.168.0.0/24-----192.168.255.0/24
術語:
主機路由:目標地址爲主機IP的路由條目。
網絡路由:目標地址爲網絡IP的路由條目。
*路由選路原則:一般以最佳匹配/最長匹配條目優先。
*默認路由/缺省路由:0.0.0.0 在路由表中找不到目標IP的條目時走這條路由。
超網(將幾個小網絡合併爲一個大的網絡,對應網絡位轉爲主機位)
分網(變長子網掩碼,將一個大網絡分爲幾個小網絡)
*遠端主機之間底層(物理層)可能不同,可能是ethernet/ppp/ATM等不同的MAC算法的網絡,這些都由router來屏蔽了不同。
TCP/IP網絡模型
第四層:傳輸層
UDP協議:用戶數據報協議,無連接的協議;不管接收方是否可以收到,只管發,效率高,用於例如QQ等即時通訊軟件,UDP較簡單,採用UDP的程序一般通過應用層來控制傳輸錯誤。
TCP協議描述:有連接的協議;先敲門,試探性地詢問目的方在不在,如無響應則不發,如有相應則發送報文,並且每發一個報文接收方都要確認一下,TCP比UDP更加可靠,但傳輸效率低,目前網絡服務90%以上都採用TCP
TCP協議通信過程:
1, 通信雙方建立連接(3次握手)
2, 傳輸數據
3, 斷開連接,發起方發送斷開請求—timewait1----time wait2--關閉連接。
TCP3次握手過程(第1、2步爲新建連接的過程,第3步爲連接已建立的過程)
1) 發送方向接收方發起連接請求(將SYN位置爲1,SN序列號,sn=100)
2) 接收方確認(syn=1,ack=1,an(確認號)=101(意思爲:100號報文已收到,可以發101號報文),sn=300(這是響應方的報文序列號,是另外一套編號體系))
3) 發送方(Ack=1,sn=101,an=301)------此時連接狀態爲已建立(Established)
4) 接下來開始傳輸數據:接收方發送報文(ack=1,sn=301,an=102)
TCP斷開連接過程(四次斷開)
1) 發送方想接收方發起請求(fin=1,ack=1,an=xxx)
2) 略。。。。。。。
TCP有限狀態機的概念:即tcp連接不管什麼時候,總是處於一種狀態中的!在TCP連接的不同的階段有不同的狀態!
linux網絡配置命令
對於linux,內存分爲:
用戶空間:命令:配置ip,臨時生效;配置文件:永久生效(系統啓動時讀取)
內核空間:網絡功能(TCP/IP協議棧),網絡的配置在內核生效
網絡配置的內容:
ip地址,子網掩碼,網關,本機的DNS服務器,路由,主機名,幾塊網卡綁定(用於網卡冗餘/加大吞吐量)
以上配置可以手工指定,也可以動態從DHCP服務器獲取
*linux也可以作爲router來使用!
*本機的多個DNS服務器的配置:第一個dnsserver不在線則找第二個;不是第一個dns server解析不出再找第二個!解析不出就不解析了。所以應該把訪問速度最快的dns server放在第一個。
*DHCP動態獲取ip地址:如獲取不到DHCP分配的地址,會隨機生成一個169.254.0.0/16網段的ip,此ip只能用於本地網絡間主機通信,無網關。
*linux內核:網絡屬於內核功能,ip地址屬於內核,不屬於網卡,只要當前主機有的ip,別人在另一塊網卡的ip上ping進來,也會給予響應(即使與ping請求的源ip不屬於同一網段)!
lo:本地迴環網絡接口(兼server,client,在內存中完成通信)
以太網卡名稱:ethX範圍從eth1~eth100
pppX:ppp1----ppp2
*系統一般將網卡模塊定義爲一個別名(配置文件:/etc/modprobe.conf),可以自己去改這個名字。例 :alias eth0 pcnet32
*(RHEL6)系統一般將網卡模塊定義爲一個別名
(配置文件:/etc/udev/rules.d/70-persistent-net.rules),可以自己去改這個名字。
ifconfig命令(顯示當前系統上處於活動狀態的網卡信息),顯示信息關鍵字如下:
Rx:接受到的包的個數 Errors:錯誤包個數 dropped:丟棄報個數
Tx:發送的包的個數 collisions:衝突包個數overruns:溢出包個數
txqueuelen:傳輸隊列長度 Rx bytes:接受到的字節數 Tx bytes:傳出去的字節數
Interrput:中斷號
ifconfig命令使用示例:
ifconfig -a 顯示所有連接(接口)配置信息
ifconfig ethX顯示指定連接(接口)配置信息
ifconfig ethX IP/mask(指定連接(接口)ip,2種風格:(1)x.x.x.x/24(2)x.x.x.x/255.0.0.0)
ifconfig ethX IP/mask [up|down] (指定連接(接口)ip並啓用|關閉對應接口)
ifup/ifdown ethX 啓用或關閉對應接口
以上配置方式是一次生效,重啓網絡服務後即失效
RHEL5上網絡服務腳本:/etc/init.d/network
RHEL6上網絡服務腳本:/etc/init.d/NetworkManager(建議禁用使用NetworkManager服務)
網關添加(臨時):
route [add|del] [-host(主機路由)|-net(網絡路由)]DEST gw NextHop
route命令不帶參數爲查看系統路由表,DEST爲default爲默認路由。
route命令輸出詳解:flags:U爲本地網絡,就是本機直連的。UG爲網關路由,需要通過網關發出去。
route命令實例:
默認路由添加:#route add default gw NextHop
#routeadd -net 10.0.0.0/8 gw 192.168.10.1
route –n(以數字形式(不解析主機名)顯示路由信息,這樣執行速度會比較快)
配置文件配置網卡ip(永久有效)
示例:vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #表示關聯的設備
BOOTPROTO={static|none|dhcp|bootp} #引導的協議
IPADDR=
NETMASK=
GATEWAY=
ONBOOT= #network服務啓動時是否自動激活此接口
HWADDR= #硬件地址,要與硬件中的地址保持一致,可以省略
USERCTL={yes|no} #是否允許普通用戶控制此接口
PEERDNS={yes|no} #是否在BOOTPROTO爲dhcp時接收由dhcp服務器指定的DNS地址,並更新到/etc/resolve.conf
*這種方式配置網卡不會立即生效,但重啓網絡服務後會生效!
配置路由(配置文件形式):/etc/sysconfig/network-scripts/route-ethX(自己在這個目錄下建一個對應網口的路由配置文件,通過那個網口出去就寫那個網卡名稱)
有兩種添加格式:
1) Dest via NextHop
例如:vi route-eth1輸入:
168.10.0/24 via 10.10.10.254 :x保存退出
#service network restart#route –n
2) 例如:vi route-eth1輸入:
ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.1
ADDRESS1=
NETMASK1=
GATEWAY1=
*DNS Server指定方法:編輯/etc/resolve.conf(最多指定3個)用nameserverx.x.x.x來指定
可以指定的DNS Server被dhcp服務器指定的DNS地址給覆蓋掉,將ifcfg-ethX中PEERDNS=no設置一下即可不被覆蓋。
指定本地解析:
編輯/etc/hosts文件:輸入:10.0.0.1(IP) www.a.com(主機名) www(別名)
本地解析主機名順序一般爲:1)先找hosts文件2)再找dns緩存3)再找dns服務器
這個順序可以在/etc/nsswitch.conf文件中配置!
臨時配置主機名:hostname命令
永久配置主機名:編輯/etc/sysconfig/network文件
HOSTNAME指令配置主機名
NETWORKING={yes|no}指令指定是否啓用網絡(IPv4)總開關,也可以在這個文件中定義GATEWAY=(全局的網關)-----*****在網卡配置文件中定義的GATEWAY更加優先,那個是專門對應於網卡的,這裏的GATEWAY是全局的。
策略路由:某個網絡採用哪一張路由表(系統可以有多張路由表)
軟件包iproute2提供了很強大的命令集,其中包含ip命令,ip命令的有些高級功能是ifconfig命令無法替代的。它可以控制流量
ip link(網絡接口屬性) show
set ethX [up|down|arp {on|off}]
ip命令過於強大,此處略!
一個網卡可以有多個IP,用別名來配置
示例:
#ifconfig eth0:0 x.x.x.x/24
讓別名永久生效:
新建一個配置文件/etc/sysconfig/network-scripts/ifconfig-ethx:x(注:別名不能使用dhcp協議,只能配置靜態地址!)
*)/etc/init.d/NetworkManager(此服務不支持網絡橋接功能,建議禁用此服務)
禁用此服務方法:
將網卡配置文件中
NM_CONTROLLED=no
#chkconfig NetworkManager off
#chkconfig network on
#service NetworkManager stop
#service network start
***實現網卡配置時,可以複製其他的網卡配置文件在此基礎上改一下即可,但注意HWADDR一定要改過來,覺得麻煩刪掉HWADDR這一行也可以!