一、課程知識
1.互聯網相關概念,網絡協議基礎,網絡相關命令,環境配置
2.Socket網絡編程
3.tcp協議及其原理
4.ip協議以及源碼分析
5.dns域名解析以及dhcp服務
TCP/IP協議族
要想理解socket首先得熟悉一下TCP/IP協議族, TCP/IP(Transmission Control Protocol/Internet Protocol)即傳輸控制協議/網間協議,定義了主機如何連入因特網及數據如何在它們之間傳輸的標准,從字面意思來看TCP/IP是TCP和IP協議的合稱,但實際上TCP/IP協議是指因特網整個TCP/IP協議族。不同於ISO模型的七個分層,TCP/IP協議參考模型把所有的TCP/IP系列協議歸類到四個抽象層中。
在Internet層,解析IP地址,尋找通往目標IP的目的地的下一個路由地址。在網絡接口層,則是尋找響應的硬件(MAC)地址。數據流以及網絡拓撲結構如下圖所示。
Socket相關知識
socket起源於UNIX,在Unix一切皆文件哲學的思想下,socket是一種"打開—讀/寫—關閉"模式的實現,服務器和客戶端各自維護一個"文件",在建立連接打開后,可以向自己文件寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉文件。
TCP的三次握手
第一次握手:客戶端嘗試連接服務器,向服務器發送syn包(同步序列編號Synchronize Sequence Numbers),syn=j,客戶端進入SYN_SEND狀態等待服務器確認
第二次握手:服務器接收客戶端syn包並確認(ack=j+1),同時向客戶端發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態
第三次握手:第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手
定睛一看,服務器socket與客戶端socket建立連接的部分其實就是大名鼎鼎的三次握手
其在socket中的三次握手
二、計算機網絡知識水平與編程能力測試
選擇題
1.數據鏈路層采用后退 N 幀(GBN)協議,發送方已經發送了編號為 0~7 的幀。當計時器超時時,若發送方
3.在學校局域網上ping 其中一個服務器 沒有涉及到的網絡協議是?()
A、TCP B、DNS C、ICMP D、ARP
答案:A
解析:首先我們需要dns協議,將網址轉為IP地址,其次ping的原理是使用ICMP的回響機制,所以必然用到了網絡層的ICMP協議,最后在到達對方局域網的時候需要使用RARP查找mac地址,在發送主機不知道自己IP的時候也會用到ARP協議,所以綜上ping的過程中用到了 dns協議、ICMP協議、ARP協議、RARP協議。
4. 若主機甲與主機乙建立 TCP 連接時發送的 SYN 段中的序號為 1000,在斷開連接時, 甲發送給乙的 FIN 段中的序號為 5001,則在無任何重傳的情況下,甲向乙已經發送的 應用層數據的字節數為:
A、4002 B、4001 C、4000 D、3999
答案 C
【解析】 SYN=1000,則數據傳輸時的起始序號為 1001,字節數 = FIN – 1001 = 4000
5. 假設下圖所示網絡中的本地域名服務器只提供遞歸查詢服務,其他域名的服務器均只提 供迭代查詢服務;局域網內主機訪問 Internet 上各服務器的往返時間(RTT)均為 10ms, 忽略其他各種時延,若主機 H 通過超鏈接 http://www.abc.com/index.html,請求瀏覽純 文本 Web 頁 index.html,則從點擊超鏈接開始到瀏覽器接收到 index.html 頁面為止, 所需最短、最長時間分別是:
A、10ms,40ms B、10ms,50ms C、20ms,40ms D、20ms,50ms
答案 D
【解析】 最短時間:本地域名服務器存在域名與 IP 地址的映射 主機向本地域名服務器遞歸查詢 10s + 數據傳輸 10ms = 20ms 最長時間:本地域名服務器不存在映射,需要迭代查詢各級域名服務器 3 次 10ms + 迭代查詢 3 次 30ms + 數據傳輸 10ms = 50ms
6、DNS工作於( )
(A)網絡層
(B)傳輸層
(C)應用層
(D)表示層
答案:C
7,【百度文庫】在實現基於TCP的網絡應用程序時,服務器端正確的處理流程是( )
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基礎概念。
8,【原創】下面哪個函數負責構造一個攜帶SYN標志位的TCP頭並發送出去,同時還設置了計時器超時重發( )
A、tcp_transmit_skb
B、inet_csk_accept
C、tcp_v4_rcv
D、tcp_connect
答:D,考察對Linux網絡協議棧的了解。
簡答題
1.什么是TCP的三次握手機制?TCP的三次握手機制過程簡述。
答:三次握手:
(1)Client先產生一個初始序列號seq,SYN標志位置1,將該數據包發送給Server端,之后Client端進入SYN_SENT狀態,等待Client確認。
(2)Server收到數據包后也發送自己的SYN報文作為響應,並初始化序列號seq,為了確認Client的seq,Server將Client發送的seq加1作為ACK發送給Client,Server進入SYN_RCVD狀態。
(3)為了確認Server的SYN,Client將Server發送的seq加1作為ACK發送給Server。Client和Server進入ESTABLISHED狀態,完成三次握手。
2.簡述交換機、集線器和路由器的區別,交換機和集線器的聯系。
答:
1.集線器
集線器工作在物理層
共享帶寬
半雙工
廣播發送
2.交換機
以太網交換機工作在數據鏈路層
連接局域網中的主機
相互通信的主機獨占帶寬
依據MAC地址轉發,有目的發送
3.路由器
路由器工作在網絡層
是一個多輸入輸出端口的專用計算機
連接不同的網絡
共享帶寬
依據IP地址轉發,有目的發送
3.簡述UDP和TCP的協議的主要特點和它們的主要差別
答:UDP
(1)無連接
(2)盡最大努力交付,不可靠
(3)無擁塞控制,效率高,適合於IP電話,實時視頻等
(4)首部開銷小,只有四個字段(源端口,目的端口,長度,檢驗和)
(5)可一對一,一對多,多對一,多對多交互
(6)面向報文
TCP
(1)面向連接的傳輸層協議
(2)每個TCP連接只能有兩個端點,一對一
(3)可靠交付
(4)全雙工通信
(5)面向字節流,“流”指流入到進程或從進程流出的字節序列,將收到的分組組織成字節流提交給上層
綜合題
解析:
2.
某網絡拓撲如下圖所示,其中R為路由器,主機H1~H4的IP地址配置以及R的各接口IP地址
配置如圖中所示。現有若干台以太網交換機(無VLAN功能)和路由器兩類網絡互連設備可供選擇。
請回答下列問題:
(1) 設備1、設備2和設備3分別應選擇什么類型網絡設備?
(2) 設備1、設備2和設備3中,哪幾個設備的接口需要配置IP地址?並為對應的接口配置正確的IP地
址。
(3) 為確保主機H1~H4能夠訪問Internet,R需要提供什么服務?
(4) 若主機H3發送一個目的地址為192.168.1.127的IP數據報,網絡中哪幾個主機會接收該數據報?
參考答案:(1)設備1:路由器 設備2:以太網交換機 設備3:以太網交換機
(2)設備1的接口需要配置ip地址;設備1的IF1,IF2,IF3接口的ip地址分別是
192.168.1.254 192.168.1.1 192.168.1.65
(3)R需要提供NAT服務
(4)主機H4會接收該數據報