1.MAC(Media Access Control,介質訪問控制)html
是解決底層數據通訊衝突的解決方案。所以,給每個接入這樣網絡的主機一個id標示符,這個id標示符就叫作MAC地址。nginx
2.CSMA/CD(Carrier Sense Multipath Access Collision Detection,載波偵聽多路訪問衝突檢測),線型網絡程序員
以太網Ethernet最核心的標誌。web
3.Token-Ring(IBM)技術sql
環形網絡解決衝突的方案。可是因爲IBM的專利限制沒能推廣開來。編程
4.星形網絡ubuntu
用Hub來鏈接好多主機,這樣就造成了星形網絡。windows
這是一種變形的總線結構。仍是一根線,只不過不是一根線,而是一個設備,但實際上Hub內部仍是一根線,並且Hub搞出了好多接口,這樣就能夠方便添加主機了。它邏輯上仍是總線型網絡。服務器
5.網橋網絡
能夠粗略理解成一箇中繼器,用來放大信號什麼的。
網橋是鏈接兩個網絡的一個設備。當一個局域網的設備太多的時候衝突就會特別容易發生,利用MAC來處理的話,通訊的效率會大大降低,因此網橋就產生啦!就好像一個家裏的人多了同樣,須要分家了,可是他們之間仍是要通訊的。因此就將一個大的局域網分紅幾個小的網絡,這幾個小的網絡之間利用網橋鏈接。注意區別於Internet。
網橋內部有一個表table,能夠用來判斷髮過來的數據包是否是發送給這個小的網絡的,要是就是發送給這個小的網絡的話那麼就不須要網橋的轉發。
6.交換機
網橋的將一個大網切換成兩個小網,那麼發生碰撞的可能性就下降了一半。
取一個極限的狀況就是:網橋的一個出口只有一個主機。----->這個設備就是交換機!!
交換機最核心的就是其內部的那張表!
交換機隔離的不是廣播,它隔離的是衝突。在一個小網的內部又能夠叫作衝突域。
7.鏈接層的硬件設備
Hub集線器 --> 網橋 --> Switch交換機
8.IP地址存在的緣由
交換機隔離的不是廣播,它隔離的是衝突。因此,用再多的交換機都不能解決廣播風暴(太多的廣播)的問題,因此就產生了一個交換機所在的一個小網的總的地址,咱們將它叫作邏輯地址(他是模擬的,他是用來標識交換網絡的),又將它叫作IP地址。
MAC地址的工做機制就是用來實現廣播的!因此要用邏輯地址(IP地址)來進行更好的轉發。(NOTE:這彷佛有是一個尋求合適粒度的問題)
IP只有一個簡單的做用:他是用來在網絡之間轉發報文的。他也只是用來識別是本地網絡仍是遠程網絡的。
IP地址與MAC地址在數據包轉發過程當中的變化
IP地址一直不變,而MAC地址一直變化(由於MAC地址是不能跨網絡的)
9.ARP(Address Resolution Protocol)
地址解析協議。將IP地址解析成MAC地址。
MAC地址是一個信封,IP能夠當作是信的開頭。發送(轉發)的過程當中要不斷的換信封,可是信的開頭不能換。
10.MAC存在的必要性
IP地址是用來尋找到在一個網絡中,最終仍是要靠MAC來廣播。MAC是用來標記本地通訊的,他不斷傳,不斷變化,由於它MAC就只在本地網絡中實現自身價值,不在這個小網絡中它就要變化啦。
11.路由自動學習產生路由表
RIP協議、RIP2
12.默認網關?????
能夠理解成交換機與路由器之間的接口。
13.端口號
每一臺主機的可用端口是:0-65535
對於客戶端,隨機使用一個沒有被使用的接口就行。而服務器端就不會,一個端口後面有一個進程在監聽。
http://www.cnblogs.com/chenbuer/p/3842281.html
14.IP地址
主機位全0:網絡地址
主機位全1:廣播地址
ICANN,就是跟它買IP地址
15.路由表
一個路由條目中,當目標地址是一個主機咱們成爲主機路由,目標地址是一個網絡的時候就是網絡路由。在路由的時候選擇是最佳匹配。
路由匯聚,是將不少小的子網合併成一個大的網絡,這樣就能夠提升路由器性能減小尋找到要找的那個路由條目的時間。
16.配置文件
系統在啓動的時候會讀取配置文件。
17.IP屬於內核,不屬於網卡。
18.Linux中的網卡,對於Linux來講,每個網絡接口都有一個名稱:
lo:本地迴環
以太網卡:ethX
pppX點對點的
在ubuntu中他的名字是在 /etc/udev/70-persistent-net.rules 中被定義
19. ifconfig
顯示處於活動狀態的網卡的信息
-a
ifconfig ehtX IP/mask 設置特定網絡接口的IP和掩碼,當即生效,可是不會永久生效
ifconfig ethX [up/down] 啓用或者關閉特定的網絡接口
20. 在unbuntu中用 /etc/init.d/networking 來配置網絡服務
網絡配置文件 /etc/sysconfig/network (這兒不是在ubuntu中的,是在redhat中的)
網絡接口配置文件 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME (這兒不是在ubuntu中的,是在redhat中的)
21.route命令,查看本地路由表
-n 以數字方式顯示主機或端口等相關信息
add 添加路由
-host:主機路由
-net:網絡路由
-net 0.0.0.0默認的
route add -net(-host) gw NEXTHOP
del 刪除
-host
-net
22. DHCP(Dynamic Host Configuration Porotol,動態主機配置協議)
http://www.cnblogs.com/LittleHann/p/3705263.html
注意:IP地址是配置在操做系統上的。
DHCP服務器上有一堆IP地址能夠分配給申請IP地址的主機,這樣的一個表叫作地址池。當主機一關機,IP就釋放回收。他有一個lease租約,當時間快到了就要在租約到來以前要續租。
廣播方式請求IP地址。個人mac只是*****,誰能夠給我提供一個IP地址。服務器收到後仍是廣播回去(由於此時主機仍是沒有IP地址,只有mac地址,沒有IP地址那就只能廣播啦)。主機肯定用哪個IP地址的時候還須要廣播通知用誰的地址。
DHCPDISCOVER 廣播,請求
DHCPOFFER 廣播,提供IP報文
DHCPREQUEST 廣播,告訴選擇哪個IP地址
DHCPACK 廣播,提供IP的服務器確認
DHCP是不能跨網絡提供服務的。
23.tcp/ip配置的時候須要的參數
IPADDR
NETMASK
GATEWAY 這個可有能夠沒有,沒有大不了就是不跟外網聯繫了。
DNS 能夠有,能夠沒有
24.NFS(Network file system,網絡文件系統)
文件系統是工做在內核空間的,包括NFS,ext3。
概念講解:在一個網絡中,主機A中有一個未被掛載的設備(好比說一個分區),經過網絡,咱們將它掛載在另外一個主機B上,當咱們在網B上相應的目錄寫入數據的時候就經過網絡寫入在主機A中本地的設備。因此主機B就像訪問本機主機同樣訪問遠程主機A上的設備。
LPC(Local Process Call),本地過程調用
RPC(Remote Process Call),遠程過程調用。stub(存根)能夠當作是客戶端的RPC程序,服務器端的程序是rpc server,對於Linux而言,提供rcp服務的程序叫作Portmap(就行web和httpd、nginx之間的關係),監聽在111/tcp和111/udp
RPC是一種編程技術,是一個協議,簡化分佈式應用程序的開發,他讓兩個主機看上去就像一個主機,這樣程序員在分佈式開發的時候就不用進行網絡數據的分裝了。用它進行數據交換既能夠基於二進制,又能夠基於文本格式(xml rpc)。發展到後來,有了SOAP(Simple Object Access Protocol,簡單對象訪問協議),他是一種輕量級的xml rpc。
ftp、http、rpc都是實現數據交換,之間有不少相同的東西。
NFS不是一個服務,而是一個文件系統,它在網絡工做才能成爲NFS,他是基於RPC協議進行的,RPC是基礎,NFS基於RPC工做。
NFS因爲是用戶認證很薄弱,因此咱們只能在內網上通訊,通常只能UNIX和Linux之間,不能與windows通訊。windows用網上鄰居進行通訊。
25.LAMP(Linux+Apache+Mysql/MariaDB+PHP/Python一組成用來搭建動態網站或者服務器的開源軟件),他們自己都是各自獨立的程序,但由於京城放在一塊兒使用,共同組成了一個強大的Web應用程序平臺。從網站的流量上來講,70%以上的訪問流量是LAMP來提供的。LAMP是最強大的網站解決方案。
26.iptables & netfilter
Linux下面的網絡防火牆。
netfilter是真正起到防火牆做用的框架(Frame),工做在內核中,能夠放入規則。iptables,數據報文過濾,是NAT、mangle等規則生成的工具,工做在用於空間,他是一個規則生成器,是一個APP,能夠寫規則,並放入內核中。
防火牆?主要目的就是工做在主機邊緣,對進出主機的數據報文進行檢測,將數據與規則(匹配標準、處理辦法)標準進行檢查,這樣的一組組件(硬件或者軟件)叫作防火牆,有網絡防火牆和主機防火牆。對於網絡防火牆,對於網絡內部的數據包是不能檢測的,家賊難防。因此防火牆是一個框架Framework。因此防火牆說白了就是數據報文過濾。
內核中有一個TCP/IP協議棧,網絡數據從網卡進來就要進入這個內核的協議棧。根據路由表(路由決策),在協議棧中咱們檢查目標ip是否是本機的ip,是的話就送入目標進程,不是的話就轉發出去,在/proc/sys/net/ipv4/ip_forward中修改本機是否開放轉發功能。路由決策發生在,經過網卡以後,進入TCP/IP功能上,就當即進行路由決策。
hook function:鉤子函數。共有prerouting,input,output,forward,postrouting。
因此內核上有五個鏈PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING
鏈是什麼?
netfilter就是工做在TCP/IP協議棧上的hook。
filter(過濾),表
NAT,在PREROUTING、POSTROUTING進行。表
mangle(拆開、修改、封裝),表
raw
數據包過濾匹配流程
圖片來自http://www.2cto.com/Article/201307/224402.html
每一個鏈上的功能table都是有優先級次序的,上面的圖就顯示了這樣的次序。
可否使用自定義的鏈?可使用自定義鏈,但只在被調用時候才能發揮做用,並且若是沒有滴定義鏈中的任何匹配規則,還應該有返回機制。用戶能夠刪除自定義的空鏈,默認鏈沒法刪除。
iptables的命令能夠參考http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html
27.ICMP(Internet Control Message Protocol,Internet控制報文協議)
端口號0~65535,其中0~1023之間的端口只有管理員可使用,大於5000客戶端可使用。
28.TCP協議中的幾個裝套標誌很重要:ACK、SYN、FIN
http://www.cnblogs.com/vamei/archive/2012/12/16/2812188.html
其中ACK標誌Acknowlegment number是否有用,而SYN表示位是用來標識這個包是client端用來請求鏈接server或者server鏈接client,而FIN是用來標識結束的四次握手斷開時候用的。
29.TCP的狀態轉換能夠參考
http://www.cnblogs.com/keepsimple/archive/2013/04/28/3049044.html
(上圖中虛線表示server狀態轉換,實現表示client狀態轉換)在四次握手的時候client發送了FIN,等待server發送ACK,此時是WAIT1狀態,一旦收到server收到ACK,進入WAIT2狀態,server發送了ACK以後,client不能當即進入CLOSE,而是要進入TIME WAIT。