計算機網絡常見面試題

(一)請簡述TCP\UDP的區別

TCP和UDP是OSI模型中的運輸層中的協議。TCP提供可靠的通訊傳輸,而UDP則常被用於讓廣播和細節控制交給應用的通訊傳輸。

二者的區別大體以下:

TCP面向鏈接,UDP面向非鏈接即發送數據前不須要創建連接
TCP提供可靠的服務(數據傳輸),UDP沒法保證
TCP面向字節流,UDP面向報文
TCP數據傳輸慢,UDP數據傳輸快

UDP(User Datagram Protocol)

UDP不提供複雜的控制機制,利用IP提供面向無鏈接的通訊服務。而且它是將應用程序發來的數據在收到的那一刻,馬上按照原樣發送到網絡上的一種機制。

即便是出現網絡擁堵的狀況下,UDP也沒法進行流量控制等避免網絡擁塞的行爲。此外,傳輸途中若是出現了丟包,UDP也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。若是須要這些細節控制,那麼不得不交給由採用UDP的應用程序去處理。換句話說,UDP將部分控制轉移到應用程序去處理,本身卻只提供做爲傳輸層協議的最基本功能。UDP有點相似於用戶說什麼聽什麼的機制,可是須要用戶充分考慮好上層協議類型並製做相應的應用程序。

TCP(Transmission Control Protocol)
TCP充分實現了數據傳輸時各類控制功能,能夠進行丟包的重發控制,還能夠對次序亂掉的分包進行順序控制。而這些在UDP中都沒有。此外,TCP做爲一種面向有鏈接的協議,只有在確認通訊對端存在時纔會發送數據,從而能夠控制通訊流量的浪費。

TCP經過檢驗和、序列號、確認應答、重發控制、鏈接管理以及窗口控制等機制實現可靠性傳輸。

TCP與UDP如何加以區分使用?

TCP用於在傳輸層有必要實現可靠性傳輸的狀況。因爲它是面向有鏈接並具有順序控制、重發控制等機制的。因此它能夠爲應用提供可靠傳輸。

另外一方面,UDP主要用於那些對高速傳輸和實時性有較高要求的通訊或廣播通訊。舉一個IP電話進行通話的例子。若是使用TCP,數據在傳送途中若是丟失會被重發,可是這樣沒法流暢地傳輸通話人的聲音,會致使沒法進行正常交流。而採用UDP,它不會進行重發處理。從而也就不會有聲音大幅度延遲到達的問題。即便有部分數據丟失,也只是影響某一小部分的通話。此外,在多播與廣播通訊中也使用UDP而不是UDP。RIP、DHCP等基於廣播的協議也要依賴於UDP。

TCP與UDP區別總結:

一、TCP面向鏈接(如打電話要先撥號創建鏈接);UDP是無鏈接的,即發送數據以前不須要創建鏈接
二、TCP提供可靠的服務。也就是說,經過TCP鏈接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
三、TCP面向字節流,其實是TCP把數據當作一連串無結構的字節流;UDP是面向報文的
UDP沒有擁塞控制,所以網絡出現擁塞不會使源主機的發送速率下降(對實時應用頗有用,如IP電話,實時視頻會議等)
四、每一條TCP鏈接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通訊
五、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
六、TCP的邏輯通訊信道是全雙工的可靠信道,UDP則是不可靠信道

(二)請簡單說一下你瞭解的端口及對應的服務?
端口 服務
21 FTP(文件傳輸協議)
22 SSH
23 Telnet(遠程登陸)服務
25 SMTP(簡單郵件傳輸協議)
53 DNS域名服務器
80 HTTP超文本傳輸協議
110 POP3郵件協議3
443 HTTPs
1080 Sockets
1521 Oracle數據庫默認端口
3306 MySQL服務

(三)說一說TCP的三次握手

在TCP/IP協議中,TCP協議提供可靠的鏈接服務,鏈接是經過三次握手進行初始化的。三次握手的目的是同步鏈接雙方的序列號和確認號並交換 TCP窗口大小信息。

一、第一次握手:創建鏈接,客戶端發送鏈接請求報文段,件SYN位置爲1,SequenceNumber爲x;而後客戶端進入SYN_SEND狀態,等待服務器確認
二、第二次握手:服務器收到客戶端的SYN報文段,須要對這個SYN報文段進行確認,設置AcknowledgmentNumber爲x+1(SequenceNumber+1);同時,本身還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述全部信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態。
三、第三次握手:客戶端接收到SYN_ACK報文段,而後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢以後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。

(四)有哪些私有(保留)地址?

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

(五)IP地址分爲哪幾類?簡單說一下各個分類

所謂的「分類的IP地址」就是將IP地址分爲若干個固定類,每一類都由兩個固定長度的字段組成,其中第一個字段是網絡號,它標誌主機(或路由器)所鏈接到的網絡。一個網絡號在整個因特網範圍內必須是惟一的。第二個字段是主機號,它標誌該主機(或路由器)。一個主機號在它前面的網絡號所指明的網絡範圍內必須是惟一的。因而可知,一個IP地址在整個因特網範圍內是惟一的。
A類 以0開頭 1.0.0.0-127.255.255.255 8位 24位
B類 以10開頭 128.0.0.0-255.255.255 16位16位
C類 以110開頭 192.0.0.0-223.255.255.255 24位8位
D類前四位固定爲1110,後面爲多播地址,因此D類地址爲多播地址
E類前五位固定爲11110,後面保留爲從此所用

(六)在瀏覽器中輸入網址以後執行會發生什麼?

查找域名對應的IP地址。這一步會依次查找瀏覽器緩存,系統緩存,路由器緩存,ISPNDS緩存,根域名服務器
瀏覽器向IP對應的web服務器發送一個HTTP請求
服務器響應請求,發回網頁內容
瀏覽器解析網頁內容

在瀏覽器中輸入www.baidu.com後執行的所有過程
一、客戶端瀏覽器經過DNS解析到www.baidu.com的IP地址220.181.27.48,經過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,而後經過TCP進行封裝數據包,輸入到網絡層。

二、在客戶端的傳輸層,把HTTP會話請求分紅報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。而後使用IP層的IP地址查找目的端。

三、客戶端的網絡層不用關係應用層或者傳輸層的東西,主要作的是經過查找路由表肯定如何到達服務器,期間可能通過多個路由器,這些都是由路由器來完成的工做,我不做過多的描述,無非就是經過查找路由表決定經過那個路徑到達服務器。

四、客戶端的鏈路層,包經過鏈路層發送到路由器,經過鄰居協議查找給定IP地址的MAC地址,而後發送ARP請求查找目的地址,若是獲得迴應後就可使用ARP的請求應答交換的IP數據包如今就能夠傳輸了,而後發送IP數據包到達服務器的地址。

(七)簡單解釋一些ARP協議的工做過程

1:首先,每一個主機都會在本身的ARP緩衝區中創建一個ARP列表,以表示IP地址和MAC地址之間的對應關係。
2:當源主機要發送數據時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,若是有,則直接發送數據,若是沒有,就向本網段的全部主機發送ARP數據包,該數據包包括的內容有:源主機IP地址,源主機MAC地址,目的主機的IP地址。
3:當本網絡的全部主機收到該ARP數據包時,首先檢查數據包中的IP地址是不是本身的IP地址,若是不是,則忽略該數據包,若是是,則首先從數據包中取出源主機的IP和MAC地址寫入到ARP列表中,若是已經存在,則覆蓋,而後將本身的MAC地址寫入ARP響應包中,告訴源主機本身是它想要找的MAC地址。
4:源主機收到ARP響應包後。將目的主機的IP和MAC地址寫入ARP列表,並利用此信息發送數據。若是源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。
廣播發送ARP請求,單播發送ARP響應。

(八)說一說OSI七層模型

物理層
在OSI參考模型中,物理層(Physical Layer)是參考模型的最低層,也是OSI模型的第一層。
物理層的主要功能是:利用傳輸介質爲數據鏈路層提供物理鏈接,實現比特流的透明傳輸。
物理層的做用是實現相鄰計算機節點之間比特流的透明傳送,儘量屏蔽掉具體傳輸介質和物理設備的差別。使其上面的數據鏈路層沒必要考慮網絡的具體傳輸介質是什麼。「透明傳送比特流」表示經實際電路傳送後的比特流沒有發生變化,對傳送的比特流來講,這個電路好像是看不見的。
數據鏈路層
數據鏈路層(Data Link Layer)是OSI模型的第二層,負責創建和管理節點間的鏈路。該層的主要功能是:經過各類控制協議,將有差錯的物理信道變爲無差錯的、能可靠傳輸數據幀的數據鏈路。
在計算機網絡中因爲各類干擾的存在,物理鏈路是不可靠的。所以,這一層的主要功能是在物理層提供的比特流的基礎上,經過差錯控制、流量控制方法,使有差錯的物理線路變爲無差錯的數據鏈路,即提供可靠的經過物理介質傳輸數據的方法。
該層一般又被分爲介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層。
MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制;
LLC子層的主要任務是創建和維護網絡鏈接,執行差錯校驗、流量控制和鏈路控制。
數據鏈路層的具體工做是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;一樣,也未來自上層的數據幀,拆裝爲位流形式的數據轉發到物理層;而且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。
網絡層
網絡層(Network Layer)是OSI模型的第三層,它是OSI參考模型中最複雜的一層,也是通訊子網的最高一層。它在下兩層的基礎上向資源子網提供服務。其主要任務是:經過路由選擇算法,爲報文或分組經過通訊子網選擇最適當的路徑。該層控制數據鏈路層與傳輸層之間的信息轉發,創建、維持和終止網絡的鏈接。具體地說,數據鏈路層的數據在這一層被轉換爲數據包,而後經過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另外一個網絡設備。
通常地,數據鏈路層是解決同一網絡內節點之間的通訊,而網絡層主要解決不一樣子網間的通訊。例如在廣域網之間通訊時,必然會遇到路由(即兩節點間可能有多條路徑)選擇問題。
在實現網絡層功能時,須要解決的主要問題以下:
尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不一樣子網之間通訊時,爲了識別和找到網絡中的設備,每一子網中的設備都會被分配一個惟一的地址。因爲各子網使用的物理技術可能不一樣,所以這個地址應當是邏輯地址(如IP地址)。
交換:規定不一樣的信息交換方式。常見的交換技術有:線路交換技術和存儲轉發技術,後者又包括報文交換技術和分組交換技術。
路由算法:當源節點和目的節點之間存在多條路徑時,本層能夠根據路由算法,經過網絡爲數據分組選擇最佳路徑,並將信息從最合適的路徑由發送端傳送到接收端。
鏈接服務:與數據鏈路層流量控制不一樣的是,前者控制的是網絡相鄰節點間的流量,後者控制的是從源節點到目的節點間的流量。其目的在於防止阻塞,並進行差錯檢測。

傳輸層
OSI下3層的主要任務是數據通訊,上3層的任務是數據處理。而傳輸層(Transport Layer)是OSI模型的第4層。所以該層是通訊子網和資源子網的接口和橋樑,起到承上啓下的做用。
該層的主要任務是:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。傳輸層的做用是向高層屏蔽下層數據通訊的細節,即向用戶透明地傳送報文。該層常見的協議:TCP/IP中的TCP協議、Novell網絡中的SPX協議和微軟的NetBIOS/NetBEUI協議。
傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層得到數據,並在必要時,對數據進行分割。而後,傳輸層將數據傳遞到網絡層,並確保數據能正確無誤地傳送到網絡層。所以,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯繫肯定以後,傳輸層則負責監督工做。綜上,傳輸層的主要功能以下:
傳輸鏈接管理:提供創建、維護和拆除傳輸鏈接的功能。傳輸層在網絡層的基礎上爲高層提供「面向鏈接」和「面向無接連」的兩種服務。
處理傳輸差錯:提供可靠的「面向鏈接」和不太可靠的「面向無鏈接」的數據傳輸服務、差錯控制和流量控制。在提供「面向鏈接」服務時,經過這一層傳輸的數據將由目標設備確認,若是在指定的時間內未收到確認信息,數據將被重發。
監控服務質量。
會話層
會話層(Session Layer)是OSI模型的第5層,是用戶應用程序和網絡之間的接口,主要任務是:向兩個實體的表示層提供創建和使用鏈接的方法。將不一樣實體之間的表示層的鏈接稱爲會話。所以會話層的任務就是組織和協調兩個會話進程之間的通訊,並對數據交換進行管理。
用戶能夠按照半雙工、單工和全雙工的方式創建會話。當創建會話時,用戶必須提供他們想要鏈接的遠程地址。而這些地址與MAC(介質訪問控制子層)地址或網絡層的邏輯地址不一樣,它們是爲用戶專門設計的,更便於用戶記憶。域名(DN)就是一種網絡上使用的遠程地址例如:www.3721.com就是一個域名。會話層的具體功能以下:
會話管理:容許用戶在兩個實體設備之間創建、維持和終止會話,並支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,並管理會話中的發送順序,以及會話所佔用時間的長短。
會話流量控制:提供會話流量控制和交叉會話功能。
尋址:使用遠程地址創建會話鏈接。l
出錯控制:從邏輯上講會話層主要負責數據交換的創建、保持和終止,但實際的工做倒是接收來自傳輸層的數據,並負責糾正錯誤。會話控制和遠程過程調用均屬於這一層的功能。但應注意,此層檢查的錯誤不是通訊介質的錯誤,而是磁盤空間、打印機缺紙等類型的高級錯誤。
表示層
表示層(Presentation Layer)是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各類語法賦予相應的含義,並按照必定的格式傳送給會話層。其主要功能是「處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密」等。表示層的具體功能以下:
數據格式處理:協商和創建數據交換的格式,解決各應用程序之間在數據格式表示上的差別。
數據的編碼:處理字符集和數字的轉換。例如因爲用戶程序中的數據類型(整型或實型、有符號或無符號等)、用戶標識等均可以有不一樣的表示方式,所以,在設備之間須要具備在不一樣字符集或格式之間轉換的功能。
壓縮和解壓縮:爲了減小數據的傳輸量,這一層還負責數據的壓縮與恢復。
數據的加密和解密:能夠提升網絡的安全性。
應用層
應用層(Application Layer)是OSI參考模型的最高層,它是計算機用戶,以及各類應用程序和網絡之間的接口,其功能是直接向用戶提供服務,完成用戶但願在網絡上完成的各類工做。它在其餘6層工做的基礎上,負責完成網絡中應用程序與網絡操做系統之間的聯繫,創建與結束使用者之間的聯繫,並完成網絡用戶提出的各類網絡服務及應用所需的監督、管理和服務等各類協議。此外,該層還負責協調各個應用程序間的工做。
應用層爲用戶提供的服務和協議有:文件服務、目錄服務、文件傳輸服務(FTP)、遠程登陸服務(Telnet)、電子郵件服務(E-mail)、打印服務、安全服務、網絡管理服務、數據庫服務等。上述的各類網絡服務由該層的不一樣應用協議和程序完成,不一樣的網絡操做系統之間在功能、界面、實現技術、對硬件的支持、安全可靠性以及具備的各類應用程序接口等各個方面的差別是很大的。應用層的主要功能以下:
用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶可以與網絡進行交互式聯繫。
實現各類服務:該層具備的各類應用程序能夠完成和實現用戶請求的各類服務。
OSI7層模型的小結
因爲OSI是一個理想的模型,所以通常網絡系統只涉及其中的幾層,不多有系統可以具備全部的7層,並徹底遵循它的規定。
在7層模型中,每一層都提供一個特殊的網絡功能。從網絡功能的角度觀察:下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通訊爲主;第4層做爲上下兩部分的橋樑,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能爲主。簡言之,下4層主要完成通訊子網的功能,上3層主要完成資源子網的功能。

(九)說一說TCP/IP四層模型
一、網絡接口層  
   實際上TCP/IP參考模型沒有真正描述這一層的實現,只是要求可以提供給其上層-網際層一個訪問接口,以便在其上傳遞IP分組。因爲這一層次未被定義,因此其具體的實現方法將隨着 網絡類型的不一樣而不一樣。  
  二、網際層  
   網際層是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網絡或主機。同時,爲了儘快地發送分組,可能須要沿不一樣的路徑同時進行分組傳遞。所以,分組到達的順序和發送的 順序可能不一樣,這就須要上層必須對分組進行排序。  
   網際層定義了分組格式和協議,即IP協議(Internet Protocol)。  
   網際層除了須要完成路由的功能外,也能夠完成將不一樣類型的網絡(異構網)互連的任務。除此以外,網際層還須要完成擁塞控制的功能。  
  三、傳輸層  
  在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體能夠進行會話。在傳輸層定義了兩種服務質量不一樣的協議。即:傳輸控制協議TCP(transmission control protocol)和用戶數據報協議UDP(user datagram protocol)。  
  TCP協議是一個面向鏈接的、可靠的協議。它將一臺主機發出的字節流無差錯地發往互聯網上的其餘主機。在發送端,它負責把上層傳送下來的字節流分紅報文段並傳遞給下層。在接收端,它負責把收到的報文進行重組後遞交給上層。TCP協議還要處理端到端的流量控制,以免緩慢接收的接收方沒有足夠的緩衝區接收發送方發送的大量數據。  
  UDP協議是一個不可靠的、無鏈接協議,主要適用於不須要對報文進行排序和流量控制的場合。  
  四、應用層  
  TCP/IP模型將OSI參考模型中的會話層和表示層的功能合併到應用層實現。  
  應用層面向不一樣的網絡應用引入了不一樣的應用層協議。其中,有基於TCP協議的,如文件傳輸協議(File Transfer Protocol,FTP)、虛擬終端協議(TELNET)、超文本連接協議(Hyper Text Transfer Protocol,HTTP),也有基於UDP協議的。

(十)HTTP 協議包括哪些請求?

GET:對服務器資源的簡單請求
POST:用於發送包含用戶提交數據的請求
------------以及------------

HEAD:相似於GET請求,不過返回的響應中沒有具體內容,用於獲取報頭
PUT:傳說中請求文檔的一個版本
DELETE:發出一個刪除指定文檔的請求
TRACE:發送一個請求副本,以跟蹤其處理進程
OPTIONS:返回全部可用的方法,檢查服務器支持哪些方法
CONNECT:用於ssl隧道的基於代理的請求

(十一)簡述HTTP中GET和POST的區別

從原理性看:

根據HTTP規範,GET用於信息獲取,並且應該是安全和冪等的
根據HTTP規範,POST請求表示可能修改服務器上資源的請求

從表面上看:

GET請求的數據會附在URL後面,POST的數據放在HTTP包體
POST安全性比GET安全性高
相關文章
相關標籤/搜索