如何評測一個軟件工程師的計算機網絡知識水平與網絡編程技能水平?附帶個人整理試卷。


一、網絡程序設計課程總結部分

首先從整體上來看用戶態、內核態與客戶端和服務器交互的對應關系(包括對應的協議層),

img

 

其次對課程按照順序做出如下總結:

 

1.Socket

課程核心部分以實際Socket編程展開,具體部分可查看:Java的Socket編程與操作系統的SocketAPI關系探究。

img

Socket通信過程可描述為:

1.服務器端socket綁定端口,並一直監聽該端口,等待客戶端的連接

2.客戶端綁定一個端口,並通過套接字連接服務器端等待服務的端口

3.連接成功后,服務器端和客戶端通過建立的連接進行通信

4.一端關閉連接,另一端捕捉異常通信結束。

Socket總結:

socket從層次上來說,它位於應用層,是操作系統為應用程序員提供的 API,通過它,應用程序可以訪問傳輸層協議。

Socket的特點:

1.socket 位於傳輸層協議之上,屏蔽了不同網絡協議之間的差異

2.socket 是網絡編程的入口,它提供了大量的系統調用,構成了網絡程序的主體

3.在Linux系統中,socket 屬於文件系統的一部分,網絡通信可以被看作是對文件的讀取,使得我們對網絡的控制和對文件的控制一樣方便。

關於Linux內核的Socket系統調用源碼探究參考作業:Socket與系統調用深度分析

 

2.TCP協議

在傳輸層着重對TCP協議進行探究,通過搭建調試Linux內核網絡代碼的環境MenuOS系統,之后對Linux背后的三次握手以及數據收發進行了着重探究,具體可參考:深入理解TCP協議及其源代碼。

 

 

img

三次握手詳細描述

首先服務器端調用socket()創建服務器端的套接字之后調用bind()綁定創建socket是所拿到的socket文件描述符,之后調用acppet()阻塞自己等待客戶端的連接。

客戶端同樣調用socket()創建客戶端的套接字,之后調用connect()去連接服務器【根據服務器端的套接字鎖定服務器】,此時TCP報文段中SYN=1,seq為一隨機數字x,且客戶端的連接狀態置為SYS_SEND。

服務器端的accept()的阻塞收到該報文段之后被打斷,置連接狀態為SYN_RECV,並發送TCP報文段,SYN=1,ACK=1,seq為隨機數字y,ack=x+1。

客戶端收到該報文段后置狀態為ESTABLISED,ACK=1,seq=x+1,ack=y+1。

服務器端接收到后置自己狀態為ESTABLISED。此時三次握手已經結束。

之后便可調用read與write實現客戶端與服務器端的通信。

關於源碼部分的探究參考鏈接:TCP源碼探究。

環境搭建參考作業:Linux內核代碼調試環境搭建

 

3.IP層

網絡層的主要任務:

1.進行路由處理,即選擇下一跳

2.完成IP與MAC地址映射

其中關於路由轉發部分

路由表的轉發過程:

img

 

ARP解析

ARP是根據IP地址獲取物理地址的一個TCP/IP協議。 每個在運行的時候,都會有個arp表,在這個表里面有IP地址和mac地址的對應關系。在網絡底層數據交換過程中,每一個終端都會有一個固定的mac地址,這個地址是全世界唯一的,出廠的時候就固化到硬件里面了。網絡訪問的時候實際上是通過這個唯一的地址來確定數據包的流向的。所以,任何一次數據傳輸,都需要先訪問arp表,從而獲得對應的mac地址,才知道傳輸的對象在哪里。

img

 

4.二層交換網絡

課程講授了關於以太網的一些基礎知識,其中重點講述了交換機的工作原理。

交換機實質就是一個多端口的網橋,具備學習能力與轉發能力,那么到底是如何實現的呢?

其工作原理如下:

工作總體流程如下:

  1. 從某個端口收到的二層報文,解析二層報文的源MAC和目的MAC

  2. 根據源MAC學習形成MAC表

  3. 根據目的MAC,將該報文轉發到出端口,從而保證最終目的設備能收到這個報文。

 

5.DNS

個人理解:DNS就是IP地址不好記,把IP地址與一個好記憶的東西對應(即域名),之后訪問通過好記憶的訪問。

具體DNS解析過程參考:DNS解析過程

最后對網絡安全以及互聯網的架構設計進行了簡要的介紹。

 

部分知識老師課上只是啟發性的傳授,若想更好的理解網絡協議以及網絡編程整個過程,還是需要自己再多下點功夫吧!

 

 

 

 

 

 

 

 

 

二、網絡程序設計試卷部分:

一、單選題

1.()完成域名到 IP 地址的映射

A、DNS B、ARP C、RARP D、ICMP

參考答案:A

解析:

概念題,DNS就是IP地址不好記,把IP地址與一個好記憶的東西對應(即域名),之后訪問通過好記憶的訪問。

來源:個人出題

 

2.網絡管理員配置公司網關路由器時,為了減少路由記錄需要把多部門的網絡地址進行匯聚,166.100.32.0/22可以匯聚的網段有( )

A、166.100.35.0/24 B、166.100.36.0/24 C、166.100.37.0/24 D、166.100.38.0/24

參考答案:A

解析:

考察CIDR聚合。

需要前22位相同,選項前16位均相同,再比較后6位即可

題目:32:001000//00

A:35:001000//11,匹配

B:36:001001//00,不匹配

C:37:001001//01,不匹配

D:38 :001001//10,不匹配

來源:個人出題

 

3.在實現基於TCP的網絡應用程序時,服務器端正確的處理流程是( C )

[A] socket() -> bind() -> listen() -> connect() -> read()/write() -> close()

[B] socket() -> bind() -> listen() -> read()/write() -> close()

[C] socket() -> bind() -> listen() -> accept() -> read()/write() -> close()

[D] socket() -> connect() -> read()/write() -> close()

參考答案:C

解析:見上知識點總結Socket部分。

來源:https://wenku.baidu.com/view/a5a64a9accbff121dd3683ba.html

 

4.在學校局域網上ping https://www.ustc.edu.cn/ 沒有涉及到的網絡協議是?()

A、TCP B、DNS C、ICMP D、ARP

參考答案:A

解析:首先我們需要dns協議,將網址轉為IP地址,其次ping的原理是使用ICMP的回響機制,所以必然用到了網絡層的ICMP協議,最后在到達對方局域網的時候需要使用RARP查找mac地址,在發送主機不知道自己IP的時候也會用到ARP協議,所以綜上ping的過程中用到了 dns協議、ICMP協議、ARP協議、RARP協議。

來源:個人改編

 

5.網絡層通過什么來查詢路徑?()

A、路由表 B、ARP表 C、MAC地址表 D、網橋表

參考答案:A

解析:考察路由器工作原理。路由器在網絡層是一個極其重要的設備,每台路由器都由一張轉發表。路由器檢查到達分組首部中的一個字段的值,然后利用該值在路由器的轉發表中進行查詢,以決定該如何轉發該分組。查詢的結果是分組將被轉發的路由器的鏈路接口。路由表可以用netstat -r 或route查看

其他的選項:

MAC表 記錄着MAC地址與交換機接口的對應關系, ARP表 ip地址與mac地址的映射 。

來源:個人出題

 

6.下列哪種說法是正確的()

A、集線器可以對接收到的信號進行放大

B、集線器具有信息過濾功能

C、集線器具有路徑檢測功能

D、集線器具有交換功能

參考答案:A

解析:考察HUB的工作原理。HUB在網絡中只起到 信號放大 和重發作用,其目的是擴大網絡的傳輸范圍,而不具備信號的定向傳送能力。

來源:根據牛客網個人改編

 

7.存在以下三個CIDR地址塊192.168.11.0/27、192.168.11.32/27和192.168.11.64/26聚合后的CIDR地址塊應是( )

A、192.168.11.0/25

B、192.168.11.0/26

C、192.168.11.64/25

D、192.168.11.64/26

參考答案:A

解析:

考察CIDR聚合。存在3個CIDR地址塊:192.168.11.0/27, 192.168.11.32/27, 192.168.11.64/26,聚合過程為:① 2個/27地址塊之間進行聚合: 192.168.11.0 轉化為2進制 11000000.10101000.00001011.00000000; 192.168.11.32轉2進制 11000000.10101000.00001011.00100000; 共同前綴是前26位,即11000000.10101000.00001011.00,則聚合的CIDR地址塊是192.168.11.0/26。 ② 將結果再與/26地址塊之間進行聚合: 192.168.11.0轉2進制11000000.10101000.00001011.00000000; 192.168.11.64轉2進制11000000.10101000.00001011.01000000; 共同前綴是前25位,則最終的聚合CIDR地址塊是192.168.11.0/25。

 來源:360公司筆試題

 

二、簡答題【無解析         來源:實驗部分與PPT

 

1.簡述TCP的三次握手過程【結合Socket說明更好】

首先服務器端調用socket()創建服務器端的套接字之后調用bind()綁定創建socket是所拿到的socket文件描述符,之后調用acppet()阻塞自己等待客戶端的連接。

客戶端同樣調用socket()創建客戶端的套接字,之后調用connect()去連接服務器【根據服務器端的套接字鎖定服務器】,此時TCP報文段中SYN=1,seq為一隨機數字x。

服務器端的accept()的阻塞收到該報文段之后被打斷,並發送TCP報文段,SYN=1,ACK=1,seq為隨機數字y,ack=x+1。

客戶端收到該報文段后置狀態為ESTABLISED,ACK=1,seq=x+1,ack=y+1。

服務器端接收到后置自己狀態為ESTABLISED。此時三次握手已經結束。

 

2.簡述ARP的工作流程?

參考答案:首先主機A根據路由表找到IP地址,然后在自己的本地ARP緩存中檢查主機B的匹配MAC地址。

如果主機A在ARP緩存中沒有找到映射,將ARP請求幀【請求幀中的請求的MAC地址為IP地址對應的MAC地址】廣播到本地網絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每台主機都接收到ARP請求並且檢查是否與自己的IP地址匹配。

若主機B收到,發現匹配,則主機B將包含其MAC地址的ARP回復消息直接發送回主機A。

當主機A收到從主機B發來的ARP回復消息時,會用主機B的IP和MAC地址映射更新ARP緩存。這樣即建立了新的IP與MAC的映射。

 

3.簡述交換機是如何"學習"及工作的?

1.它收到一個幀的時候,先檢查源MAC地址,看看自己維護的一個地址表中有沒有這個地址。如果有,則2;如果沒有,則將這個MAC地址、進入的端口、進入的時間放入這個表中【這樣交換機就“學習”到了新的轉發MAC地址】; 2.檢查目的MAC地址,然后到該表中查找,如果有匹配項,則按照表項中的端口號進行轉發;如果沒有,則轉發到除進口之外的其他所有端口。

 

4.簡述Socket通信過程【僅從服務器端或者客戶端說明也可】

服務器端:

1:加載套接字庫,創建套接字(socket());

2:綁定套接字到一個IP地址和一個端口上(bind());

3:將套接字設置為監聽模式等待連接請求(listen());

4:請求到來后,接受連接請求,返回一個新的對應於此次連接的套接字(accept());

5:用返回的套接字和客戶端進行通信(send()/recv());

6:返回,等待另一連接請求;

7:關閉套接字,關閉加載的套接字庫(closesocket())。

客戶端:

1:加載套接字庫,創建套接字(socket());

2:向服務器發出連接請求(connect());

3:和服務器端進行通信(send()/recv());

4:關閉套接字,關閉加載的套接字庫(closesocket())。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM