計算機網絡(筆記)

計算機網絡

計算機網絡常用的小知識點:

1、IP地址分類:

Internet委員會定義了5種IP地址類型以適合不同容量的網絡,即A類~E類。其中A、B、C3類(如下表格)由InternetNIC在全球範圍內統一分配,D、E類爲特殊地址:


其實IP分類很簡單:

A類開頭:0000 0000

B類開頭:1000 0000

C類開頭:1100 0000

D類開頭:1110 0000

E類開頭:1111 0000

有各類的開頭,就可以知道上一個類別的結尾,如B類開頭爲1000,那麼A類的最後一個IP就爲127.255.255.255;

2、根據子網個數和網絡類型求取子網掩碼:

1)、把子網數目從十進制轉化爲二進制數。例如需要6個子網,轉換成2進制數爲110;

2)、統計得到的二進制位數N,根據上述可得N=3;

3)、根據網絡類型,例如C類子網掩碼255.255.255.0起,其中255.255.255爲固定前綴,0爲主機地址部分。

把主機地址部分前N位全部置爲1,得到的就是所需子網掩碼。本例子網掩碼就是爲255.255.255.224。認識112.10.200.0/21模式:21表示前21位是網絡號,那麼後11位就是主機號,因此屬於此網絡地址段的主機IP範圍有:112.10.200.0~112.10.207.255;

帶寬定義:帶寬通常指信號所佔據的頻帶寬度;在被用來描述信道時,帶寬是指能夠有效通過該信道的信號的最大頻帶寬度。

網橋定義:網橋也叫橋接器,是連接兩個局域網的一種存儲/轉發設備,它能將一個大的LAN分割爲多個網段,或將兩個以上的LAN互聯爲一個邏輯LAN,使LAN上的所有用戶都可訪問服務器。擴展局域網最常見的方法是使用網橋。最簡單的網橋有兩個端口,複雜些的網橋可以有更多的端口。網橋的每個端口與一個網段相連。網橋作用於數據鏈路層。

3、由IP地址和子網掩碼獲取網絡地址和主機號

答:網絡地址=IP地址&子網掩碼;
主機號=IP地址&子網掩碼取反;
主機數=2^主機段二進制位數-2;
求主機數時爲什麼後面要減2?因爲主機段全0和全1的都要去掉,不可以作爲主機段碼。主機段全0就還是網絡號初始狀態,全1是表示廣播地址;
更多由IP地址和子網掩碼求取廣播地址、主機數、網絡地址範圍請參考:http://blog.csdn.net/leichelle/article/details/8217022

一、網絡概述與體系結構

1、OSI模型

答:如圖:

1)運輸層中以端口號標識不同的應用程序;
2)兩個節點相互通信時,第三個節點不檢測總線上的信號;
3)物理層、數據鏈路層、網絡層的數據傳輸單位依次是比特、幀、分組;
4)各層任務:
物理層任務就是提供網絡的物理連接;
數據鏈路層要任務就是進行數據封裝和數據鏈接的建立;
網絡層爲應用程序和目標主機之間提供通信服務;
運輸層爲應用程序與應用程序之間提供邏輯通信服務;
5)局域網體系結構中的數據鏈路層被劃分成 MAC 和 LLC 兩個子層。MAC負責低一層的物理層,LLC(邏輯鏈路層)負責高一層的網絡層;
6)各層相關應用分佈情況:
TCP/IP協議: 
數據鏈路層:PPP
網絡層:IP,ARP,RARP,ICMP,IGMP
傳輸層:TCP ,UDP,UGP
應用層:Telnet,FTP,SMTP,SNMP
(實際應用中都是按照TCP/IP的四層協議進行劃分)

OSI:
物理層:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
數據鏈路層:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
網絡層:IP,ARP,RARP,IPX,AppleTalk DDP
傳輸層:TCP,UDP,SPX
會話層:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP
表示層:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML
應用層:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP

5層協議:物理層、鏈路層、網絡層、傳輸層、應用層;

實際上,軟件開發中需要了解較多的就是網絡層和傳輸層,這兩層與其他層之間的關係就是承上啓下的作用,可見下圖:


2、網絡拓撲結構

答:常見的有:星型拓撲、環形拓撲、總線拓撲、網狀拓撲結構;

廣域網的拓撲結構基本都是網狀拓撲結構;

常見的局域網拓撲結構一般是星型結構,我們家用的路由器和計算機模式就是星型結構;


3、不同城市通信容量的網絡結構選擇

答:根據本地網的業務覆蓋範圍和通信容量的不同,可以有其不同的網路組織方式:
1)、適合於特大和大城市的本地網的網路組織
採用分區雙匯接局結構。將本地網劃分成若干個匯接區,每個匯接區內設置兩個大容量的匯接局,覆蓋區內的每個端局;當匯接局均爲端/匯合一
局(用DTm/DL)時,全網的所有匯接局間爲個個相連的網狀網;當某一個匯接區內的兩個匯接局均爲純匯接局時,這兩個匯接局之間不需相連。
2)、適合於中等城市的本地網的網路組織
採用匯接局全覆蓋結構。在全網設置2~3匯接局,對全網的端局全覆蓋,匯接局一般設置在本地網的中心城市,並且相互之間採用網狀網結構。
3)、適合於較小本地網的網路組織
採用一級(無匯接局)網狀網結構。

4、網絡協議組成要素

答:網絡協議主要要素爲:語法、語義、同步(或時序)。

二、物理層

1、簡單的計算機網絡組成

答:計算機網絡通常由三個部分組成:資源子網(可以是若干主機組成)、通信子網和通信協議;
所謂資源子網是計算機網絡中面向用戶的部分,負責全網絡面向應用的數據處理工作;通信子網就是計算機網絡中負責數據通信的部分;而通信雙方必須共同遵守的規則和約定就稱爲通信協議,通信協議的存在與否是計算機網絡與一般計算機互連繫統的根本區別。

2、單模光纖和多模光纖傳輸

答:光纖傳輸按光在光纖中的傳輸模式可分爲:單模光纖和多模光纖。

多模光纖(Multi Mode Fiber):中心玻璃芯較粗(50或62.5μm),可傳多種模式的光。但其模間色散較大,這就限制了傳輸數字信號的頻率,而且隨距離的增加會更加嚴重。例如:600MB/KM的光纖在2KM時則只有300MB的帶寬了。因此,多模光纖傳輸的距離就比較近,一般只有幾公里。

單模光纖(Single Mode Fiber):中心玻璃芯很細(芯徑一般爲9或10μm),只能傳一種模式的光。因此,其模間色散很小,因此傳輸頻帶寬,容量大,適用於遠程通訊,但還存在着材料色散和波導色散,這樣單模光纖對光源的譜寬和穩定性有較高的要求,即譜寬要窄,穩定性要好。後來又發現在1.31μm波長處,單模光纖的材料色散和波導色散一爲正、一爲負,大小也正好相等。這就是說在1.31μm波長處,單模光纖的總色散爲零。從光纖的損耗特性來看,1.31μm處正好是光纖的一個低損耗窗口。這樣,1.31μm波長區就成了光纖通信的一個很理想的工作窗口,也是現在實用光纖通信系統的主要工作波段。1.31μm常規單模光纖的主要參數是由國際電信聯盟ITU-T在G652建議中確定的,因此這種光纖又稱G652光纖。

3、DCE和DTE

答:在物理層接口中,數據終端設備(Data Terminal Equipment),即信源,就是信息的發送端,是發出待傳信息的設備;

數據電路終接設備(Data Circuit-Terminating Equipment)就是信號轉換設備。

在ITU的系列建議中,數據終端設備泛指智能終端(各類計算機系統、服務器)或簡單設備(如計算機、打印機、傳真機等等),內含數據通信(或傳輸)控制單元,又稱爲計算機系統,我們需要通信的信息都可以通過它轉化爲數字世界中的01信號;數據電路終接設備是指用於處理網絡通信的設備。若傳輸信道採用專用專線方式,DTE發送的數字數據通過通信接口,經傳輸信道到達接收端的DCE,然後在經過通信接口傳送到服務器,反之亦然。

三、數據鏈路層

1、幀中繼

答:幀中繼( Frame Relay)是一種用於連接計算機系統的面向分組的通信方法。它主要用在公共或專用網上的局域網互聯以及廣域網連接。大多數公共電信局都提供幀中繼服務,把它作爲建立高性能的虛擬廣域連接的一種途徑。幀中繼是進入帶寬範圍從56Kbps到1.544Mbps的廣域分組交換網的用戶接口。幀中繼網可以說是一種廣域網。

2、BCS幀傳輸

答:(1)BCS幀傳輸的字符串填充問題:遇到DLE就在其後再填充一個DLE。比如:字符串“ A DLE STX ”填充後就是字符串“ A DLE DLE STX ”;

3、PPP協議和HDLC協議

答:PPP(Point-to-Point Protocol)協議能在兩個路由器之間互相傳遞數據分組的基本結構信息。PPP協議是一種點-點串行通信協議。PPP具有處理錯誤檢測、支持多個協議、允許在連接時刻協商IP地址、允許身份認證等功能,還有其他。PPP提供了3類功能:成幀;鏈路控制協議LCP;網絡控制協議NCP。PPP是面向字符類型的協議。

HDLC(High Level Data Link Control——高級數據鏈路控制規程)協議。 HDLC是面向比特的數據鏈路控制協議的典型代表,該協議不依賴於任何一種字符編碼集;數據報文可透明傳輸,用於實現透明傳輸的"0比特插入法"易於硬件實現;全雙工通信,有較高的數據鏈路傳輸效率;所有幀採用CRC檢驗,對信息幀進行順序編號,可防止漏收或重份,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性。HDLC面向比特的同步協議。

4、MAC地址

答:MAC(Media Access Control或者Medium Access Control)地址,意譯爲媒體訪問控制,或稱爲物理地址、硬件地址,用來定義網絡設備的位置。在OSI模型中,第三層網絡層負責 IP地址,第二層數據鏈路層則負責 MAC地址。因此一個主機會有一個MAC地址,而每個網絡位置會有一個專屬於它的IP地址。MAC地址是網卡決定的,是固定的。

MAC用來表示互聯網上每一個站點的標識符,採用十六進制數表示,共六個字節(48位)。其中,前三個字節是由IEEE的註冊管理機構RA負責給不同廠家分配的代碼(高位24位),也稱爲"編制上唯一的標識符"(Organizationally Unique Identifier),後三個字節(低位24位)由各廠家自行指派給生產的適配器接口,稱爲擴展標識符(唯一性)。

5、常見的4種傳統以太網標準

答:如下介紹:
10Base-5 使用粗同軸電纜,最大網段長度爲500m,基帶傳輸方法;
10Base-2 使用細同軸電纜,最大網段長度爲185m,基帶傳輸方法;
10Base-T 使用雙絞線電纜,最大網段長度爲100m,基帶傳輸方法;
10Base-F 使用光纖傳輸介質,傳輸速率爲10Mbps,基帶傳輸方法。

四、網絡層

1、IP協議

答:IP是TCP/IP協議族中最爲核心的協議。所有的TCP、UDP、ICMP及IGMP數據都以IP數據報格式傳輸。IP協議是不可靠的、無連接的傳送機制Internet協議,其信息傳輸方式是數據報。IP協議不具有擁塞控制、流量控制等,這些是TCP協議才具有的控制技術。

2、報文交換與分組交換

答:假設一條傳輸鏈路的數據傳輸速率是10Mbps,一個8M的數據包需要傳輸到接收端,
1)採用整體報文傳輸,整體發送的時延是8/10Mbps=800毫秒,接收方的接受時延也是800毫秒,所以一共耗費1600毫秒;
2)採用分組傳輸,每組報文大小10kb,那麼每組傳輸時延是1k/10Mbps=1ms,接受時延也是1ms,但由於發送段發送完第二組時,接收端也正好接受完第一組,所以總用時爲800+1=801ms。
總結:分組傳輸時延少一些。

3、網絡發送數據的高低位字節順序

答:X86 系列 CPU都是小端模式,所以int 型變量值都是高字節在地址高位,低字節在地址低位;網絡發送數據時,採用大端模式,高字節在地址低位,低字節在地址高位。那麼首先發送的就是低地址位上的高字節,再發送高地址位上的低字節。而接受方則把先接受到的數據作爲高位字節,後接受到的爲低位字節。

原因:由於TCP傳輸是先從低地址處開始發送數據,爲了接收方從高到低接收,所以發送前的網絡序列一般存儲爲大端模式。同時,接收數據方可以首先獲取數據報的符號位。

例如,0x78563412網絡發送順序爲:78 56 34 12,接收方收到的就是數據0x78563412;

4、ARP協議工作過程

答:主要作用是根據IP地址轉化爲Mac地址。

爲什麼需要將IP地址轉化爲MAC地址?因爲所有的網絡通信最終都是根據硬件地址進行傳送信息的。如下圖:


最終都需要將IP數據報封裝到MAC幀中,所以在進入數據鏈路層前就要使用ARP協議獲取MAC地址;

舉例:當一個基於TCP/IP的應用程序需要從一臺主機發送數據給另一臺主機時(如socket通信),它把信息分割並封裝成包,附上目的主機的IP地址。然後,尋找IP地址到實際MAC地址的映射,這需要發送ARP廣播消息。當ARP找到了目的主機MAC地址後,就可以形成待發送幀的完整以太網幀頭。最後,協議棧將IP包封裝到以太網幀中進行傳送。


在上圖中,當主機A要和主機B通信(如主機A Ping主機B)時。主機A會先檢查其ARP緩存內是否有主機B的MAC地址。如果沒有,主機A會發送一個ARP請求廣播包,此包內包含着其欲與之通信的主機的IP地址,也就是主機B的IP地址。
當主機B收到此廣播後,會將自己的MAC地址利用ARP協議響應包傳給主機A,並更新自己的ARP緩存,也就是同時將主機A的IP地址/MAC地址對保存到自己的ARP緩存中,以供後面使用。主機A在得到主機B的MAC地址後,就可以與主機B通信了。同時,主機A也將主機B的IP地址/MAC地址對保存在自己的ARP協議緩存內。


5、RARP協議

答:RARP是逆地址解析協議,作用是完成硬件地址到IP地址的映射,主要用於無盤工作站,因爲給無盤工作站配置的IP地址不能保存。

工作流程:在網絡中配置一臺RARP服務器,裏面保存着IP地址和MAC地址的映射關係,當無盤工作站啓動後,就封裝一個RARP數據包,裏面有其MAC地址,然後廣播到網絡上去,當服務器收到請求包後,就查找對應的MAC地址的IP地址裝入響應報文中發回給請求者。因爲需要廣播請求報文,因此RARP只能用於具有廣播能力的網絡。

注:由於DHCP協議(動態主機配置協議)已經包含該功能,故基本沒有人使用RARP協議了。


6、ICMP協議(網際控制報文協議)

答:ICMP協議時TCP/IP協議的子協議,位於IP層。TCP、UDP屬於傳輸層,ICMP 、IP屬於網絡層協議,而ICMP主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。ICMP是IP層的一個組成部分,它傳遞差錯報文以及其它需要注意的信息。ICMP報文通常被IP層或更高層協議使用。

ICMP報文有兩類:ICMP差錯報告報文和ICMP詢問報文;


7、ping命令的作用

答:ping 命令有助於驗證網絡層的連通性。ping在主機和服務器之間傳遞控制消息,屬於ICMP協議,但是ICMP協議是TCP/IP的子協議。

一般進行網絡故障排除時,可以使用ping 命令向目標計算機或IP地址發送ICMP回顯請求,目標計算機會返回回顯應答,如果目標計算機不能返回回顯應答,說明在源計算機和目標計算機之間的網路存在問題,需要進一步檢查解決。

ping命令是Windows操作系統中集成的一個TCP/IP協議探測工具,它只能在有TCP/IP協議有網絡中使用;

ping命令的格式爲:ping[參數1][參數2][……][目的地址];

注:ping命令中的額、數據保護傳輸實際上是使用UDP協議實現的。

8、路由表

答:(1)路由表內容分爲四個部分:

1)網絡地址(Network Destination)、網絡掩碼(Netmask):網絡地址和網絡掩碼相與的結果用於定義本地計算機可以到達的網絡目的地址範圍。通常情況下,網絡目的地址範圍包含以下四種:
主機地址;某個特定主機的網絡地址,網絡掩碼爲255.255.255.255;
子網地址,某個特定子網的網絡地址;
網絡地址;某個特定網絡的網絡地址;
2)網關(Gateway,又稱爲下一跳服務器):下一跳路由器的入口IP;在發送IP數據包時,網關定義了針對特定的網絡目的地址,數據包發送到的下一跳服務器。如果是本地計算機直接連接到的網絡,網關通常是本地計算機對應的網絡接口,但是此時接口必須和網關一致;如果是遠程網絡或默認路由,網關通常是本地計算機所連接到的網絡上的某個服務器或路由器。
3)接口(Interface):數據包到達目標網段的本地路由器的出口IP;網關必須位於和接口相同的子網(默認網關除外),否則造成在使用此路由項時需調用其他路由項,從而可能會導致路由死鎖。
4)躍點數(Metric):躍點數用於指出路由的成本,通常情況下代表到達目標地址所需要經過的躍點數量,一個躍點代表經過一個路由器。躍點數越低,代表路由成本越低;躍點數越高,代表路由成本越高。當具有多條到達相同目的網絡的路由項時,TCP/IP會選擇具有更低躍點數的路由項。

當然,還包括優先級(加入IP路由表的優先級)等其他信息。


五、傳輸層

1、傳輸層介紹

答:如第二章的總體介紹,傳輸層是後面應用層協議的基礎。例如應用層的DNS、TFTP、RIP、DHCP、NFS、專用協議都是基於傳輸層的UDP協議,HTTP、FTP、STMP、POP3、BGP協議都是基於傳輸層TCP協議。

如上所述:可以將傳輸層協議抽象成一個API工具包,其中封裝了TCP、UDP傳輸協議,應用層協議根據自身需求選擇兩種協議之一,進行信息傳輸。

形象點比喻就是:傳輸層協議就是快遞公司,TCP相當於非常正規,運作過程有監視和狀態反饋的靠譜快遞公司,但價格貴;UDP相當於運輸過程不受控,有點不靠譜的快遞公司,但價格便宜。TCP與UDP的選擇就像你要寄重要的東西就需要選擇靠譜的快遞公司,不怎麼很重要選擇便宜的公司也就可以了。


2、端口

答:端口定義在傳輸層,作用於傳輸層和應用層之間的交互。

如何知道傳輸層將數據傳遞給應用層哪個進程?

給每個應用進程分配一個端口號即可,傳輸層的數據根據端口號傳輸到相應進程;


3、套接字

答:套接字socket=(IP地址:端口號);

每一條TCP連接都唯一的被通信鏈路兩端的兩個套接字確定,其中IP確定主機地址,端口號確定應用程序;


4、socket通信

答:socket通信其實就是TCP通信的一種實現,其流程圖如下:


socket的recv返回值:

解阻塞與非阻塞recv返回值沒有區分,如下:
返回值<0 出錯;
返回值=0 連接關閉;
返回值>0 接收到數據大小。

注意:在TCP/UDP傳輸段中,源端口地址和目的端口地址是不能相同的;


5、TCP協議下的可靠傳輸的工作原理

答:可靠傳輸過程中可能會出現4種情況,分別是:無差錯情況、發送出現差錯、確認丟失和確認磁道,如下圖:

由上圖可知:可靠傳輸都是用確認和超時重傳機制實現的。

上述這種可靠傳輸方式被稱爲自動重傳請求協議,即ARQ協議;


6、信道利用率

答:發送分組時間與總時間之比,如下圖:


可見,這種信道利用率極低,大部分時間在等待確認回傳,所以現在都是用流水線傳輸模式,如下圖:

上述這種流水線傳輸模式需要採用兩個協議:連續ARQ協議和滑動串窗口協議;


7、TCP傳輸協議的報文段格式

答:TCP報文段=TCP首部+TCP報文段數據部分,TCP報文段又被包含在IP報文段中,IP報文段被包含在MAC幀中(MAC幀首部是硬件地址等信息)。
(1)TCP報文段格式如下:

注意:
①發送與接收方互相通信都是按這種格式,包括建立連接階段;
②上述TCP首部中的窗口是需要接收數據方告知數據發送方的,所以窗口是動態變換的;
③ACK是確認標誌、SYN是同步標誌、FIN是終止標誌;

(2)各個層次的報文段包含關係如下:


8、報文首部檢驗和原理

答:UDP和TCP報文首部都有檢驗和,原理也相似,如下:
發送方:
①前提操作:先添加12字節的僞首部,然後將報文的檢驗和所在的兩個字節都賦值爲0,同時保證數據部分是偶數個字節,若不是偶數就補0成爲偶數個字節。
②檢驗和計算:每兩個字節(16位)作爲一個二進制數,先取反,然後求和,最後將求和結果再取反並填充到報文檢驗和字段處。
③發送操作:去掉僞首部,將剩下的數據報發送給接收方。
接收方:
①添加僞首部;
②每兩個字節取反,然後求和,若求和結果每個二進制位爲全1,表示合法,否則就丟棄;

以下用發送方的檢驗和求取過程說明:


9、TCP可靠傳輸的實現——滑動窗口協議

答:(1)可靠傳輸需要使用的工具——滑動窗口,包括髮送窗口和接收窗口,兩者長度相等(窗口大小是動態變化);見下圖:

如上圖:
①31未收到,但32、33即使收到了也沒用,此時接收方返回給發送方的數值仍然是31(表示30以前的數據都已收到,現請求發送31開始的數據);
②此時由於31未收到,接收窗口不可右移,發送窗口也因未收到31確認而保持不動;
③直至接收方收到序號爲31的分組或者發送方發現31分組超時進行重傳並被接收方收到後,接收方返回確認值34,此時兩個窗口纔可以右移3位;
解釋:爲什麼是返回確認值34?因爲接收方窗口中已經保存了32、33號分組信息,並被標記爲已接收,故返回34表示請求發送方從34號開始發送;

(2)超時時間一般略大於一個往返時間之和RTT;

10、TCP的流量控制

答:接收方每次返回確認時都會返回一個rwnd(接收窗口)值,表示下一次可接受的最大窗口長度;流量控制就是在發送方根據接收方反饋的窗口值發送數據,保證數據量不超過窗口值大小。

11、關於TCP報文段傳輸以及擁塞控制

答:擁塞其實是一個動態問題,我們沒有辦法用一個靜態方案去解決,從這個意義上來說,擁塞是不可避免的
TCP的擁塞控制由4個核心算法組成:“慢啓動”(Slow Start)、“擁塞避免”(Congestion voidance)、“快速重傳 ”(Fast Retransmit)、“快速恢復”(Fast Recovery)。

(1)TCP報文傳輸

1)TCP 發送窗口值=Min{接受窗口值,擁塞窗口值},即根據接受窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP 發送的報文長度是應用進程給出的);
2)每一條 TCP 連接只有兩個端點;
3)TCP 連接的端點不是主機,不是主機的IP 地址,不是應用進程,也不是傳輸層的協議端口,而是做套接字(socket)或插口;

(2)擁塞控制

擁塞控制是一個全局性的過程,和流量控制不同,流量控制指點對點通信量的控制。擁塞控制有四種算法:慢開始、擁塞避免、快重傳、快恢復;

1)慢開始與擁塞避免:

①慢開始(乘法增大):

發送方維持一個叫做擁塞窗口cwnd(congestion window)的狀態變量。擁塞窗口的大小取決於網絡的擁塞程度,並且動態地在變化。慢開始算法的思路就是不要一開始就發送大量的數據,而是按倍數增長逐漸增加擁塞窗口的大小。如下圖:


所以一次傳輸輪次之後擁塞窗口就加倍,這就是乘法增長。爲了防止cwnd增長過大引起網絡擁塞,還需設置一個慢開始門限ssthresh狀態變量。

ssthresh的用法如下:

當cwnd<ssthresh時,使用慢開始算法;

當cwnd>ssthresh時,改用擁塞避免算法;

當cwnd=ssthresh時,慢開始與擁塞避免算法任意。


②擁塞避免(加法增大)

擁塞避免算法讓擁塞窗口緩慢的線性增長,即:每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是加倍


③“慢開始+擁塞避免”模式的擁塞控制:

    無論慢開始階段還是擁塞避免階段,只要發送方判斷網絡出現擁塞(其根據就是沒有收到確認,即使沒有收到確認可能是擁塞超時,也有可能是其他原因如分組丟失造成的,都當做擁塞來處理),就進行如下處理:

1°、把慢開始門限ssthresh設置爲出現擁塞時的窗口cwnd的一半;

2°、把發送窗口復位至初始值(若cwnd初始值爲1就復位爲1);

3°、然後,執行慢開始算法。

如下圖:


注:擁塞窗口大小的單位是字節。


2)快重傳和快恢復

①快重傳:
連續流水線發送模式下,當發送方連續收到接收方的3個失序分組確認時,則不管是否到達設定的重傳時間,都認爲重複分組後面的分組丟失了,馬上對該分組進行重傳。這就是快重傳。
見下圖,發送方連續收到4個M2的確認,其中後3個是因爲接收方接收到失序分組M4、M5、M6而發出的重複確認M2。接收方得知有3個重複的確認M2,就馬上重傳M3:



②快恢復:
快恢復是發送方檢測到有3個重複確認出現時,就將前面的慢開始門限ssthresh減小爲當前cwnd的一半,然後將擁塞窗口cwnd設置爲新的ssthresh值(此處與慢開始處理方式不同),然後執行擁塞避免(加法增大)算法。

③“快重傳+快恢復”模式的擁塞控制:
如下圖:圖中的Reno算法是最常用的,虛線部分的Tahoe算法已經不被使用了。
爲什麼使用Reno算法呢?因爲收到3個重複確認並不一定是網絡擁塞造成的,也有可能是分組丟失造成的。所以擁塞窗口cwnd只減少到原來的一半。


12、TCP協議和TCP連接

答:TCP協議是一種面向連接(連接導向)的、可靠的、基於字節流的傳輸層(Transport layer)通信協議。主要用於數據傳輸和通信。

TCP連接分爲長連接和短連接。長連接是指一次連接後,服務器一直監聽,後續數據傳輸都用此連接,直至此連接被用戶主動釋放關閉;短連接是指

一次連接後,指定數據傳輸完畢,就釋放此連接。

TCP協議的握手機制:請求連接需要握手3次,釋放連接需要握手4次

請求連接握手機制如下:


第一次握手:客戶端發送syn包(seq=j)到服務器。 
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個ASK包。 
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1)。 
三次握手完成後,客戶端和服務器就建立了tcp連接。這時可以調用accept函數獲得此連接。

注:從右圖可以知道客戶端、服務端各個狀態的持續時間關係;例如可知:客戶端已建立連接,但服務器可能還處於同步收到狀態(中間確認傳輸造成了一定時間差)。

釋放連接握手機制如下兩個圖(左圖爲簡易圖,右圖爲詳圖):

注:從右圖可以知道客戶端、服務端各個狀態的持續時間關係;


13、爲什麼是3次握手和4次揮手

答:(1)3次握手
第1次客戶發送握手請求報文,第2次服務端回送捂手請求確認,第3次客戶端再向服務端回送握手確認;按常理應該沒有第三次報文傳輸,那爲什麼要加入第三次報文傳輸呢?因爲這是“爲了避免殘留在網絡中的失效連接請求報文段到達服務器而產生錯誤”。所謂失效的連接請求如被認爲丟失的連接請求(實際沒有丟失,只是被滯留在某節點)。協議中添加第三個報文傳輸要求後,若不是客戶端自主發送的連接請求,這個報文傳輸就不會進行,從而保證不產生意外連接。

(2)4次揮手
4次揮手實際上按常理不需要後面兩次的,但爲什麼要添加進去?因爲“客戶端發送連接中止請求後,僅僅表示客戶端沒有數據發送需求了,並不表示服務端沒有數據回送需求”,所以前兩次報文傳輸後客戶端-服務端方向的連接就釋放了,此時TCP連接處於半關閉狀態。只有當服務端的數據傳送完後纔會再次發送服務端-客戶端方向的關閉請求,客戶端收到後發送終止確認,從而真正實現連接關閉;

14、爲什麼揮手過程中客戶端最後要在TIME-WAIT狀態下等待2MSL時間

答:有兩個原因:
①保證客戶端發送的最後一個ACK報文段到達B。
因爲ACK報文段可能丟失,服務端接收不到就會超時重傳FIN終止請求,此時等待2MSL時間就可以保證接收到服務端重傳的FIN終止請求,並再次發送ACK確認;若不等待2MSL,服務端就可能因爲客戶端發送的ACK丟失而無法關閉連接。

②防止前面提到的“已失效的連接請求報文段”出現在本鏈接中。
在持續的2MSL等待時間內,可以使得本連接期間產生的所有請求報文段從網絡中消失,這樣就可以保證下一個新連接中不會出現這種舊的連接請求報文段,從而避免引發失效連接請求錯誤。

六、應用層

1、域名認知

答:域名系統可以用域名樹表示,如圖:


例如:job.hust.edu.cn域名,job是四級域名(一般是主機),hust是三級域名(一般是分區),edu是二級域名(一般是類別域名或者行政域名),cn是頂級域名(一般是國家地區)。


2、域名服務器

答:(1)上面小節1的的域名空間樹形結構圖6-1在實際中是用域名服務器實現的,理論上上述樹結構的每一個節點用一個域名服務器就可以了,但這樣做會造成域名樹極其複雜,所以現在都是用劃分區的辦法,如abc公司的域被劃分爲兩個區,其中一個區作爲主區用於連接外部二級域名服務器:


如上圖6-3所述:DNS域名系統層級結構由三種類別服務器組成,即根域名服務器、頂級域名服務器、權限域名服務器。

(2)此外,不得不提三層次之外的一個域名服務器——本地域名服務器:它是DNS系統中非常重要的一個域名服務器;

作用:所有的域名解析都是直接或間接通過本地域名服務器完成的。

本地域名服務器的作用過程:所有的域名解析請求都是先發送到本地域名服務器進行解析,若本地域名服務器無法解析,它就向根域名服務器發送請求,根域名服務器將告訴本地域名服務器下一步該去哪個頂級域名服務器下查找,依次迭代直至查詢出來;


3、DNS實現域名到IP的解析過程

答:過程如下:

①客戶機的應用程序調用解析程序,解析程序將域名以UDP數據報的形式發送給本地DNS服務器(使用UDP是爲了減少開銷);

②本地DNS服務器查找到IP後也以UDP形式傳送回來;

③若本地DNS服務器查找不到對應的IP,則需要將域名發送到根D域名服務器,根域名服務器返回下一步需要查詢的頂級域名服務器IP地址,然後本地DNS服務器發送域名到頂級DNS服務器,頂級DNS服務器返回下一步要查詢的權限DNS服務器IP地址,本地DNS服務器向權限DNS服務器發送請求,返回得到正確的IP,然後將其傳回給客戶主機。

注:上述本地DNS服務器採用的是迭代查詢方式,還可以採用遞歸方式;

舉例:主機m.xyz.com需要知道y.abc.com對應的IP地址,則採用本地DNS遞歸解析過程如下:


對應圖示如下(a):



4、DNS劫持

答:DNS劫持又稱域名劫持 ,是指在劫持的網絡範圍內攔截域名解析的請求,分析請求的域名,把審查範圍以外的請求放行,否則
返回假的IP地址或者什麼都不做使請求失去響應,其效果就是對特定的網絡不能反應或訪問的是假網址。

常見的訪問某一指定網址的網頁時,顯示的卻是不相關的其他運營商的網頁,就是DNS劫持現象。


5、Host文件

答:hosts的作用就是將網絡中的域名與其對應的IP地址建立一個關聯“數據庫”,當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,系統會立即打開對應網頁。如果沒有找到,則系統再會將網址提交DNS服務器進行IP地址的解析(注意:DNS只可以將域名轉化爲IP地址,不可以轉化爲MAC地址。IP轉化爲MAC是ARP協議的功能);

早期的計算機網絡規模比較小,一般都是直接把hosts文件作爲域名翻譯系統(那時還沒有DNS);如今有了DNS後,hosts文件通常用於補充或取代網絡

中 DNS 的功能。不過Hosts和DNS不同的是:計算機的用戶可以直接對hosts文件進行控制。


6、HTTP協議

答:HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。
格式:http://host[":"port][abs_path];
http協議的客戶端請求方法有get,head,post;
解釋:http表示要通過HTTP協議來定位網絡資源;host表示合法的Internet主機域名或者IP地址;port指定一個端口號,爲空則使用缺省端口80(補充:端口號是佔用16位二進制的數據,一般用十六進制表示);abs_path指定請求資源的URI;

協議詳解之消息報頭:HTTP消息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。

更多參考:http://blog.csdn.net/xiongchao99/article/details/73381280#t8http://blog.csdn.net/xiongchao99/article/details/74524807#t21

7、SMTP和POP3協議

(1) SMTP:simple mail transfer protocol,簡單郵件傳輸協議。專注於郵件在服務器之間的中轉,是發送郵件服務器;通過強制用戶登錄郵件發送服務器的方式,即用戶需要輸入用戶名和密碼後才能登錄進發送郵件服務器;減少垃圾郵件的產生;

(2)POP3: post office protocol,郵局協議的第三個版本,是接收郵件服務器;規定怎麼將個人計算機連接到Internet的郵件服務器和下載電子郵件的電子協議;是因特網的第一個離線協議標準,POP3允許用戶從服務器上把郵件存儲到本地,同時刪除保存在郵件服務器上的電子郵件。 缺點:用戶需要將服務器上所有的郵件下載到客戶端本地,若出現郵件炸彈或大附件,會造成網絡擁塞。

(3)IMAP:Internet Mail Access Protocol,交互式郵件存取協議,支持在線(如webmail郵件)、離線(郵件客戶端軟件)、分離方式(在線和離線方式的結合)的處理;是接收郵件服務器。用戶在客戶端上的操作,會反饋到服務器上,如刪除郵件,標記已讀等,服務器上的郵件也會做相應的動作。所以無論從瀏覽器登錄或者客戶端軟件登錄郵箱,看到的郵件以及狀態都是一致的。相比POP3而言,不需要將郵件下載到本地後才能進行操作,這樣用戶可以在根據郵件的簡單信息有選擇性地下載郵件至本地。



七、網絡完全

1、QoS協議

答:QoS(Quality of Service)服務質量,是網絡的一種安全機制, 是用來解決網絡延遲和阻塞等問題的一種技術,用於廣域網。 在正常情況下,如果網絡只用於特定的無時間限制的應用系統,並不需要QoS,比如Web應用,或E-mail設置等。但是對關鍵應用和多媒體應用就十分必要。當網絡過載或擁塞時,QoS 能確保重要業務量不受延遲或丟棄,同時保證網絡的高效運行。


八、其他

1、NAT——網絡轉換器

答:在計算機網絡中,網絡地址轉換(英語:Network Address Translation,縮寫爲NAT),也叫做網絡掩蔽或者IP掩蔽(IP masquerading),是一種在IP封包通過路由器或防火牆時重寫源IP地址或目的IP地址的技術。這種技術被普遍使用在有多臺主機但只通過一個公有IP地址訪問因特網的私有網絡中。 NAT 是作爲一種解決IPv4地址短缺,以避免保留IP地址困難的方案而流行起來的。支持端口轉換的NAT又可以分爲兩類:源地址轉換和目的地址轉換NAT。前一種情形下發起連接的計算機的IP地址將會被重寫,使得內網主機發出的數據包能夠到達外網主機。後一種情況下被連接計算機的IP地址將被重寫,使得外網主機發出的數據包能夠到達內網主機。實際上,以上兩種方式通常會一起使用以支持雙向通信。


2、虛擬局域網——VLAN

答:虛擬局域網(VLAN)是一種可以將非局域網用戶整合成如同在同一局域網內的技術。VLAN用戶是邏輯上的設備和用戶,這些設備和用戶並不受物理位置的限制,可以根據功能、部門及應用等因素將它們組織起來,相互之間的通信就好像它們在同一個網段中一樣,由此得名虛擬局域網。VLAN是一種比較新的技術,工作在OSI參考模型的第2層和第3層,一個VLAN就是一個廣播域,VLAN之間的通信是通過第3層的路由器來完成的。與傳統的局域網技術相比較,VLAN技術更加靈活,它具有以下優點: 

網絡設備的移動、添加和修改的管理開銷減少;
可以控制廣播活動;
可提高網絡的安全性。

在計算機網絡中,一個二層網絡可以被劃分爲多個不同的廣播域,一個廣播域對應了一個特定的用戶組,默認情況下這些不同的廣播域是相互隔離的。不同的廣播域之間想要通信,需要通過一個或多個路由器。這樣的一個廣播域就稱爲VLAN。

3、計算機和打印機之間的通信模式

答:單工傳輸,即只有計算機向打印機傳輸信息,打印機僅僅是輸出設備。就好比遙控器發送信息,電視機僅僅作爲輸出一樣。

至於計算機如何知道打印機故障或者缺紙等,這是由於計算機主動查看打印機狀態完成的,並非打印機將相關信息發送給計算機。

4、總線請求

答:集中式總線請求方案有三種,定時查詢、串行連接和獨立請求。
定時查詢和串行連接所有部件都用一條"總線請求"線,但是定時查詢是由CPU去定時查詢總線上的部件,而串行連接是部件去請求CPU。獨立請求每個部件均有一條 "總線請求"線。


5、網絡連接10K問題

答:10K問題是指網絡服務器在連接數達到10K左右時,併發數就達到瓶頸。現在主流的10K解決方式是:IO多路複用,即使用epoll機制。


發佈了38 篇原創文章 · 獲贊 202 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章