計算機網絡 & 網絡編程 期末總結與測評題


  

 

 

第一部分:網絡編程部分的相關知識

 

Socket套接字定義:

 

套接字(socket)是一個抽象層,應用程序可以通過它發送或接收數據,可對其進行像對文件一樣的打開、讀寫和關閉等操作。套接字允許應用程序將I/O插入到網絡中,並與網絡中的其他應用程序進行通信。網絡套接字是IP地址與端口的組合。

 

    • Socket的英文原義是“孔”或“插座”。在網絡編程中,網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個Socket。

    • Socket套接字是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。
      它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。

    • Socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口。 

 

Socket 調用流程:

 

 

 

socket():創建套接字。

bind():指定本地地址。一個套接字用socket()創建后,它其實還沒有與任何特定的本地或目的地址相關聯。在很多情況下,應用程序並不關心它們使用的本地地址,這時就可以不用調用bind指定本地的地址,而由協議軟件為它們選擇一個。但是,在某個知名端口(Well-known Port)上操作的服務器進程必須要對系統指定本地端口。所以一旦創建了一個套接字,服務器就必須使用bind()系統調用為套接字建立一個本地地址。

connect():將套接字連接到目的地址。初始創建的套接字並未與任何外地目的地址關聯。客戶機可以調用connect()為套接字綁定一個永久的目的地址,將它置於已連接狀態。對數據流方式的套接字,必須在傳輸數據前,調用connect()構造一個與目的地的TCP連接,並在不能構造連接時返回一個差錯代碼。如果是數據報方式,則不是必須在傳輸數據前調用connect。如果調用了connect(),也並不像數據流方式那樣發送請求建連的報文,而是只在本地存儲目的地址,以后該socket上發送的所有數據都送往這個地址,程序員就可以免去為每一次發送數據都指定目的地址的麻煩。

listen():設置等待連接狀態。對於一個服務器的程序,當申請到套接字,並調用bind()與本地地址綁定后,就應該等待某個客戶機的程序來要求連接。listen()就是把一個套接字設置為這種狀態的函數。

accept():接受連接請求。服務器進程使用系統調用socket,bind和listen創建一個套接字,將它綁定到知名的端口,並指定連接請求的隊列長度。然后,服務器調用accept進入等待狀態,直到到達一個連接請求。

send()/recv()和sendto()/recvfrom():發送和接收數據 。在數據流方式中,一個連接建立以后,或者在數據報方式下,調用了connect()進行了套接字與目的地址的綁定后,就可以調用send()和reev()函數進行數據傳輸。

closesocket():關閉套接字。

 

 

 TCP 三次握手四次斷開的工作原理圖:

 

 

    • 第一次握手:A客戶進程向B發出連接請求報文段,(首部的同步位SYN=1,初始序號seq=x),(SYN=1的報文段不能攜帶數據)但要消耗掉一個序號,此時TCP客戶進程進入SYN-SENT(同步已發送)狀態。
    • 第二次握手:B收到連接請求報文段后,如同意建立連接,則向A發送確認,在確認報文段中(SYN=1,ACK=1,確認號ack=x+1,初始序號seq=y),TCP服務器進程進入SYN-RCVD(同步收到)狀態;
    • 第三次握手:TCP客戶進程收到B的確認后,要向B給出確認報文段(ACK=1,確認號ack=y+1,序號seq=x+1)(初始為seq=x,第二個報文段所以要+1),ACK報文段可以攜帶數據,不攜帶數據則不消耗序號。TCP連接已經建立,A進入ESTABLISHED(已建立連接)。
      當B收到A的確認后,也進入ESTABLISHED狀態。

 

套接字之間的連接過程可以分為三個步驟:服務器監聽,客戶端請求,連接確認。 

服務器監聽:建立服務器端套接字,並處於等待連接的狀態,不定位具體的客戶端套接字,而是實時監控網絡狀態。 

客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。 為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然后就向服務器端套接字提出連接請求。 

連接確認:是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客戶端, 一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求。  上圖為基於TCP協議Socket的通信模型。

 

TCP數據包格式:

 

 

 

內核中斷簡介

 

  

 

gdb常用指令:

break——設置斷點,縮寫為b;

delete——刪除斷點,縮寫c;

step——單步跟蹤,進入調用函數,s;

next——單步跟蹤,不進入調用函數,n;

continue——恢復執行,c;

run——啟動調試,r;

 

 

 

第二部分:《計算機網絡》相關基礎知識回顧

 

我去復習408《計算機網絡》 做了一些筆記:

 

 

 

 

 

 

 

 

 

第三部分:測評試題【包括:計算機網絡+網絡編程】

 

1.選擇題

 

1.【原創】gdb常用指令中,以下哪個指令用於設置斷點的?( )

A.run

B.break

C.continue

D.delete 

答案:B 

分析:gdb指令中,run是運行,break是設置斷點,continue是繼續運行,delete是刪除斷點。

 

2.【原創】在Socket API中,以下哪個函數是用於設置等待連接狀態的?( )

A.socket

B.send

C.listen

D.accept

答案:C 

分析:在Socket API中,socket創建套接字,send發送數據,listen設置等待連接狀態,accept接收連接請求。

 

3.【408】若將網絡21.3.0.0/16划分為128個規模相同的子網,則每個子網可分配的最大IP地址個數為( )

A.254

B.256

C.510

D.512

答案:C 

分析:首先2^16/128=512, 由於全0本機,全1廣播,所以除去兩個,512-2=520,得到最大IP地址個數為520個。

 

4.【原創】7層OSI參考模型的第6層完成的主要功能是( )

A.差錯控制

B.擁塞控制

C.流量控制

D.數據表示轉換

答案:D 

分析:自下而上第6層是表示層,完成的任務是數據表示轉換,具體有:標准編碼、加密、壓縮等。

 

5.【408】下列關於CSMA/CD協議的敘述中,錯誤的是( )

A.邊發送數據,邊檢測是否發生沖突

B.適用於無線網絡,以實現無線鏈路共享

C.需要根據網絡跨距和數據傳輸速率限定最小幀長

D.當信號傳播延遲趨近0時,信道利用率趨近100%

答案:B

分析:CSMA/CA適用於無線網絡,以實現無線鏈路共享;CSMA/CD協議適用於有線局域網。

  

6.【408】在TCP/IP體系結構中,直接為ICMP提供服務的協議是( ) 

A.PPP               B.IP             C.UDP             D.TCP

答案:B

分析:ICMP報文包含在IP數據報內。

 

7.【408】某網絡拓撲如下圖所示,路由器R1只有到達子網192.168.1.0/24的路由。為使R1可以將IP分組正確地路由到圖中所有子網,則在R1中需要增加一條路由(目的網絡,子網掩碼,下一跳)是()

image-20200109222045076

A.192.168.2.0 255.255.255.128 192.168.1.1
B.192.168.2.0 255.255.255.0 192.168.1.1
C.192.168.2.0 255.255.255.128 192.168.1.2
D.192.168.2.0 255.255.255.0 192.168.1.2

答案:D

分析:由圖可知,為使R1可以將IP分組正確地路由到圖中所有子網,需要聚合三個網絡的路由。則在R1中需要增加一條路由目的網絡:192.168.2.0 ;子網掩碼:255.255.255.0;下一跳:192.168.1.2。

 

 

2.綜合分析題

1.【百度文庫】簡述TCP/IP協議中三次握手的過程及涵義,並畫出示意圖:

答:第一次握手:A客戶進程向B發出連接請求報文段,(首部的同步位SYN=1,初始序號seq=x),(SYN=1的報文段不能攜帶數據)但要消耗掉一個序號,此時TCP客戶進程進入SYN-SENT(同步已發送)狀態。

       第二次握手:B收到連接請求報文段后,如同意建立連接,則向A發送確認,在確認報文段中(SYN=1,ACK=1,確認號ack=x+1,初始序號seq=y),TCP服務器進程進入SYN-RCVD(同步收到)狀態;

       第三次握手:TCP客戶進程收到B的確認后,要向B給出確認報文段(ACK=1,確認號ack=y+1,序號seq=x+1)(初始為seq=x,第二個報文段所以要+1),ACK報文段可以攜帶數據,不攜帶數據則不消耗序號。TCP連接已經建立,A進入ESTABLISHED(已建立連接)。 當B收到A的確認后,也進入ESTABLISHED狀態。

 

2.【408】假設Internet的兩個自治系統構成的網絡如圖所示,自治系統AS1由路由器R1連接兩個子網構成;自治系統AS2由路由器R2、R3互聯並連接3個子網構成。各子網地址、R2的接口名、R1與R3的部分接口地址如圖所示。

請回答下列問題。
(1)假設路由表結構如下表所示。請利用路由聚合技術,給出R2的路由表,要求包括到達圖中所有子網的路由,且路由表中的路由項盡可能少。

(2)若R2收到一個目的地址為194.17.20.200的IP分組,R2會通過哪個接口轉發該分組?

(3)R1與R2之間利用哪個路由協議交換路由信息?該路由協議的報文被封裝到哪個協議的分組中進行傳輸?

解析:(1)在AS1中,子網153.14.5.0/25和子網153.14.5.128/25可以聚合為子網153.14.5.0/24;
在AS2中,子網194.17.20.0/25和子網194.17.21.0/24可以聚合為子網194.17.20.0/23,但缺少194.17.20.128/25;子網194.17.20.128/25單獨連接到R2的接口E0。
  於是可以得到R2的路由表如下:

(2)該IP地址與路由表中194.17.20.0/23和194.17.20.128/25兩個路由表項均匹配,根據最長匹配原則,R2將通過E0接口轉發該IP分組。考查CIDR的最長前綴匹配。

(3)R1與R2之間利用BGP4(或BGP)交換路由信息;
BGP4的報文被封裝到TCP協議段中進行傳輸。考查外部網關協議——邊界網關協議BGP4。

 

 

3.【408】某網絡拓撲如下圖所示,路由器 R1 通過接口 E1、E2分別連接局域網 1、局域網 2,通過接口 L0連接路由器 R2,並通過路由器 R2 連接域名服務器與互聯網。R1 的 L0 接口的 IP 地址是 202.118.2.1;R2的 L0接口的 IP 地址是 202.118.2.2,L1 接口的 IP 地址是 130.11.120.1,E0接口的 IP 地址是 202.118.3.1;域名服務器的 IP 地址是 202.118.3.2。

 

 ⑴ 將 IP 地址空間 202.118.1.0/24 划分為 2 個子網,分別分配給局域網 1、局域網 2,每個局域網需分配的IP 地址數不少於 120個。請給出子網划分結果,說明理由或給出必要的計算過程。

⑵ 請給出 R1 的路由表,使其明確包括到局域網 1 的路由、局域網 2的路由、域名服務器的主機路由和互聯網的路由。
⑶ 請采用路由聚合技術,給出 R2 到局域網 1和局域網 2的路由。

 解析:

⑴ CIDR 中的子網號可以全 0 或全 1,但主機號不能全 0 或全 1。因此若將 IP 地址空間 202.118.1.0/24 划分為 2 個子網,且每個局域網需分配的 IP 地址個數不少於 120 個,子網號至少要占用一位。由 2 6 -2<120<2 7 -2 可知,主機號至少要占用 7 位。由於源 IP 地址空間的網絡前綴為 24 位,因此 主機號位數+子網號位數=8 。
綜上可得主機號位數為 7,子網號位數為 1。
因此子網的划分結果為:子網 1:202.118.1.0/25,子網 2:202.118.1.128/25。
地址分配方案:子網 1 分配給局域網 1,子網 2 分配給局域網 2,或子網 1 分配給局域網 2,子網 2 分配給局域網 1。
⑵ 由於局域網 1 和局域網 2 分別與路由器 R1 的 E1、E2 接口直接相連,因此在 R1 的路由表中,目的網絡為局域網 1 的轉發路徑是直接通過接口 E1 轉發,目的網絡為局域網 2 的轉發路徑是直接通過接口 E1 轉發。由於局域網 1、2 的網絡前綴均為 25 位,因此它們的子網掩碼均為 255.255.255.128。根據題意,R1 專門為域名服務器設定了一個特定的路由表項,因此該路由表項中的子網掩碼應為255.255.255.255。對應的下一跳轉發地址是 202.118.2.2,轉發接口是 L0。根據題意,到互聯網的路由實質上相當於一個默認路由,默認路由一般寫作 0/0,即目的地址為 0.0.0.0,子網掩碼為 0.0.0.0。對應的下一跳轉發地址是 202.118.2.2,轉發接口是 L0。
綜上可得到路由器 R1 的路由表為:

  ⑶ 局域網 1 和局域網 2 的地址可以聚合為 202.118.1.0/24,而對於路由器 R2 來說,通往局域網 1 和 2 的轉發路徑都是從 L0 接口轉發,因此采用路由聚合技術后,路由器 R2 到局域網 1 和局域網 2 的路由為:

 


免責聲明!

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



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