計算機網絡自頂向下方法 第二章 應用層答案

複習題

R1.

web:http;文件傳輸:FTP;郵件:SMTP;P2P:Bittorrent;遠程登錄:telnet

R2.

網絡體系結構指的是五層模型(應用層,傳輸層,網絡層,鏈路層,物理層)

應用程序體系結構指的是 P2P 或者 客戶-服務器

R3.

先發起對話的是客戶,接收請求的是服務器

R4.

不同意,發送文件的對等方通常被稱爲服務器,接收文件的被稱爲客戶

R5.

端口和 IP

R6.

UDP

使用UDP,事務可以在一個往返時間(RTT)內完成 - 客戶端將事務請求發送到UDP套接字,服務器將回復發送回客戶端的UDP套接字。 使用TCP,至少需要兩個RTT  ---- 一個用於設置TCP連接,另一個用於客戶端發送請求,服務器用於發送回覆。

R7.

QQ

R8.

可靠數據傳輸:TCP 提供

吞吐量:都不提供

定時:都不提供

安全性:都不提供

R9.

SSL 運行在應用層;

SSL套接字從應用程序層獲取未加密的數據,對其進行加密,然後將其傳遞給TCP套接字。 如果應用程序開發人員希望使用SSL增強TCP,則必須在應用程序中包含SSL代碼;

中文版的課本上寫的是 UDP,UDP 不能用 SSL;

R10.

握手協議是指主要用來讓客戶端及服務器確認彼此的身份的一類網絡協議

R11.

因爲這些應用都需要可靠傳輸服務,而 UDP 不能提供

R12.

當用戶首次訪問站點時,服務器會創建唯一的標識號,在其後端數據庫中創建一個條目,並將此標識號作爲cookie號返回。此cookie號存儲在用戶的主機上,由瀏覽器管理。在每次後續訪問(和購買)期間,瀏覽器將cookie號發送回站點。因此,該站點知道此用戶(更確切地說,此瀏覽器)何時訪問該站點。

R13.

Web 緩存器中保存最近請求過的對象的副本。會減少所有對象的時延。

R14.

USER@NAME:~# telnet httpd.apache.org 80

Trying 40.79.78.1...

Connected to httpd.apache.org.

Escape character is '^]'.

GET /index.html HTTP/1.1

Host: httpd.apache.org

If-Modified-Since: Sat, 22 Sep 2018 11:41:57 GMT

HTTP/1.1 304 Not Modified

Date: Tue, 02 Oct 2018 07:19:28 GMT

Server: Apache/2.4.18 (Ubuntu)

ETag: "24ea-576743e4db26f"

R15.

FTP 有一條控制連接,一條數據連接

FTP使用兩個並行TCP連接,一個用於發送控制信息的連接(例如傳輸文件的請求)和另一個用於實際傳輸文件的連接。 由於控制信息不是通過發送文件的同一連接發送的,因此FTP會在帶外發送控制信息。

R16.

首先報文通過 HTTP 傳送到 Alice 的郵件服務器,然後服務器通過 SMTP 將報文發送到 Bob 的服務器,然後 Bob 用 POP3 接收這個報文

R17.

USER@NAME:~# telnet pop.163.com 110

Trying 123.125.50.29...

Connected to pop3.163.idns.yeah.net.

Escape character is '^]'.

+OK Welcome to coremail Mail Pop3 Server (163coms[b62aaa251425b4be4eaec4ab4744cf47s])

user ****@163.com

+OK core mail

pass ****

+OK 3 message(s) [9082 byte(s)]

list

+OK 3 9082

1 3406

2 2376

3 3300

.

TOP 1 0

+OK 3406 octets

Received: ****

Date: ****

From: ****

To:****@163.com

...

 

各頭部信息可以參考 RFC 5321

R18.

下載並刪除模式對用戶來說是不友好的,用戶無法第二次查看郵件

下載並保留模式是不方便的,因爲很久遠的郵件也會保留下來

R19.

Web服務器可以和郵件服務器有相同的別名

包含郵件服務器的 RR 是 MX

R20.

能確定,而 gmail 卻不行

R21.

不需要,Alice 必須是 Bob 的上傳速率最高的 4 個鄰居

R22.

在 Bittorrent 中,對等方們每過 30 秒隨機選擇另外的一個鄰居發送塊,當 Alice 被隨機選中時,她將得到第一個塊

R23.

覆蓋網絡不包含路由器,是對等方組成的邏輯網絡,不是物理鏈路,邊是兩個對等方之間有 TCP 連接。

R24.

網狀 DHT:

優點很明顯,大大減少用於查詢的時間和報文數量

缺點是每個對等方必須追蹤其他所有對等方

環形 DHT:

優點是追蹤的對等方少

缺點是查詢時間長,報文數量多

R25.

文件下載,即時訊息,網絡直播,分佈式計算

R26.

TCP 有一個歡迎套接字,一個連接套接字

對於UDP服務器,沒有歡迎套接字,來自不同客戶端的所有數據都通過這個套接字進入服務器。使用TCP服務器,有一個歡迎套接字,每次客戶端啓動與服務器的連接時,都會創建一個新套接字。因此,爲了支持n個同時連接,服務器需要n + 1個套接字。

R27.

對於TCP應用程序,只要客戶端執行,它就會嘗試啓動與服務器的TCP連接。如果TCP服務器未運行,則client將無法建立連接。對於UDP應用程序,客戶端在執行時不會立即啓動連接(或嘗試與UDP服務器通信)

習題

P1.

a. 錯

b. 對

c. 錯

d. 錯

e. 錯

P2.

FTP SERVICE COMMANDS:

         RETRIEVE (RETR)

         STORE (STOR)

         STORE UNIQUE (STOU)

         APPEND (with create) (APPE)

         ALLOCATE (ALLO)

         RESTART (REST)

         RENAME FROM (RNFR)

         RENAME TO (RNTO)

         ABORT (ABOR)

         DELETE (DELE)

         REMOVE DIRECTORY (RMD)

         MAKE DIRECTORY (MKD)

         PRINT WORKING DIRECTORY (PWD)

         LIST (LIST)

         NAME LIST (NLST)

         SITE PARAMETERS (SITE)

         SYSTEM (SYST)

         STATUS (STAT)

         HELP (HELP)

         NOOP (NOOP)

P3.

應用層:DNS HTTP

運輸層:TCP(HTTP需要) UDP(DNS需要)

P4.

a.

gaia.cs.umass.edu/cs453/index.html

b.

1.1

c.

持續

d.

HTTP 報文中沒有 IP 地址

e.

Mozilla/5.0 可以針對不同的瀏覽器發送不同版本的網頁

P5.

a.

Tue, 07 Mar 2008 12:39:45 GMT

b.

Last-Modified: Sat, 10 Dec 2005 18:27:46 GMT

c.

Content-Length: 3874

d.

前五個字節:"<!doc"

根據 keep-alive 看出同意持續連接

P6.

a.

意思就是雙方都可以關閉連接

b.

HTTP 並沒有提供什麼加密服務

c.

意思是客戶最多可以和給定服務器有兩條並行連接

d.

意思是一側關閉連接而另一側正在傳輸數據是可能的。

P7.

得到IP地址的時間 = RTT1 + RTT2 + … + RTTn

三次握手加上最後的響應 = 2 RTT0

因此總共是 2 RTT0 + RTT1 + RTT2 + … + RTTn

P8.

a)

RTT1 + + RTTn + 2RTTo + 8 × 2RTTo = 18RTTo + RTT1 + + RTTn .

b)

RTT1 + + RTTn + 2RTTo + 2 × 2RTTo = 6RTTo + RTT1 + + RTTn

c)

RTT1 + + RTTn + 2RTTo + RTTo = 3RTTo + RTT1 + + RTTn .

P9.

a.

Δ = 850000b / 15Mbps = 0.0567s

β = 16請求/s

t接 = Δ/1-Δβ = 0.61s

t總 = t接 + t因 = 3.61s

b.

英文版是不命中率爲0.4,這裏按中文版做:

β’ = 16請求/s * 60%

t接’ = Δ/1-Δβ = 0.12s

當命中緩存器時: t命 = 850000b / 100Mbps = 0.0085s

因此 t總’ = 0.4 * 0.0085 + 0.6(t接’ + t因) = 1.8754s

P10.

10米短鏈路,忽略其傳播時延。

帶有並行連接的非持續連接且並行下載:

(200b / 150bps) * 3 + ((10^5)b/ 150bps) + (200b / (150bps / 10)) * 3 + ((10^5)b / (150bps / 10)) = 7377.3s

持續連接:

(200b / 150bps) * 3 + ((10^5)b / 150bps) + 10 * (200b/150bps + (10^5)b/150bps) = 7351s

P11.

a.

毫無疑問,是可以的,這裏不做證明

b.

仍然是可以的

P12.

服務器代碼:

from socket import *

import threading

def Accept(ConnectionSocket, Addr):

    Message = ConnectionSocket.recv(1024).decode('utf-8', 'ignore')

    print(Message)

    ConnectionSocket.send('haha'.encode('utf-8', 'ignore')) 

    ConnectionSocket.close()

ServerPort = 10000

ServerSocket = socket(AF_INET, SOCK_STREAM) 

ServerSocket.bind(('',ServerPort))

ServerSocket.listen()

print('listening...')

while 1:

    ConnectionSocket, Addr = ServerSocket.accept() 

    t = threading.Thread(target=Accept, args=(ConnectionSocket, Addr))

    t.start()

比如我先訪問 http://httpd.apache.org,然後打開服務器程序,在瀏覽器裏設置服務器程序爲代理,然後再用瀏覽器刷新一次,出現了以下報文,說明瀏覽器使用了條件GET報文。如果不成功,可能要多試幾次。·

GET http://httpd.apache.org/ HTTP/1.1

Host: httpd.apache.org

...

If-Modified-Since: Sat, 22 Sep 2018 11:41:57 GMT

...

P13.

MAIL FROM 是 SMTP 握手協議的一部分,而 From 是郵件報文的一部分。

P14.

SMTP 使用僅包含一個句號的一行來標誌報文體結束,HTTP 使用 Content-Length 標誌。

不能,因爲報文內容可能含有句號。

P15.

In particular, SMTP servers and clients provide a mail transport service

   and therefore act as "Mail Transfer Agents" (MTAs).  "Mail User

   Agents" (MUAs or UAs) are normally thought of as the sources and

   targets of mail.  At the source, an MUA might collect mail to be

   transmitted from a user and hand it off to an MTA; the final

   ("delivery") MTA would be thought of as handing the mail off to an

   MUA (or at least transferring responsibility to it, e.g., by

   depositing the message in a "message store").  However, while these

   terms are used with at least the appearance of great precision in

   other environments, the implied boundaries between MUAs and MTAs

   often do not accurately match common, and conforming, practices with

   Internet mail.  Hence, the reader should be cautious about inferring

   the strong relationships and responsibilities that might be implied

   if these terms were used elsewhere.

意思是 MTA(Mail Transfer Agents) 其實就是提供郵件傳輸服務的 SMTP 服務器和客戶端。

When forwarding a message into or out of the Internet environment, a

   gateway MUST prepend a Received: line, but it MUST NOT alter in any

   way a Received: line that is already in the header section.

Received 是 在將消息轉發到 Internet 環境或從 Internet 環境轉發消息時,網關必須預先添加 Received 行,並且它不得以任何方式更改已在標題部分中的 Received 行。

因此排在最後面的 Received 行所指示的地址就是源地址,即 58.88.21.177

P16.

 which uniquely identifies a message within a

          maildrop and which persists across sessions. 

UIDL 即 unique-id listing,可以唯一定位一個消息

P17.

a.

list

+OK 3 14907

1 9125

2 3406

3 2376

.

retr 1

blah blah ...

..........blah

.

dele 1

+OK core mail

quit

+OK core mail

b.

list 

+OK 2 5782

2 3406

3 2376

.

retr 2

blah blah ...

..........blah

.

quit

+OK core mail

c.

list

+OK 2 5782

2 3406

3 2376

.

retr 3

blah blah ...

..........blah

.

retr 2

blah blah ...

..........blah

.

quit

+OK core mail

P18.

a.

whois(讀作“Who is”,非縮寫)是用來查詢域名的IP以及所有者等信息的傳輸協議。簡單說,whois就是一個用來查詢域名是否已經被註冊,以及註冊域名的詳細信息的數據庫(如域名所有人、域名註冊商)。通過whois來實現對域名信息的查詢。早期的whois查詢多以命令列接口存在,但是現在出現了一些網頁接口簡化的線上查詢工具,可以一次向不同的數據庫查詢。網頁接口的查詢工具仍然依賴whois協議向服務器發送查詢請求,命令列接口的工具仍然被系統管理員廣泛使用。whois通常使用TCP協議43端口。每個域名/IP的whois信息由對應的管理機構保存。

b.

Name Server: ns2.google.com

Name Server: ns1.google.com

Name Server: ns4.google.com

Name Server: ns3.google.com

我用的是 linux 上的 whois 命令

c.

在 windows 打開 cmd,使用 nslookup 命令

nslookup 用法:

   nslookup [-opt ...]             # 使用默認服務器的交互模式

   nslookup [-opt ...] - server    # 使用 "server" 的交互模式

   nslookup [-opt ...] host        # 僅查找使用默認服務器的 "host"

   nslookup [-opt ...] host server # 僅查找使用 "server" 的 "host"

比如

nslookup -qt=mx 163.com ns6.nease.net

-qt 可以指示類型

d.

C:\>nslookup www.baidu.com

服務器:  *

Address:  *.*.*.*

非權威應答:

名稱:    www.a.shifen.com

Addresses:  111.13.100.92

          111.13.100.91

Aliases:  www.baidu.com

到百度有兩個 web 地址

e.

自行查詢吧

f.

攻擊者可以通過 whois 和 nslookup 查詢到目標的 IP 地址,DNS 服務器等

g.

whois 是用來查詢域名的IP以及所有者等信息的傳輸協議,簡單說,whois就是一個用來查詢域名是否已經被註冊,以及註冊域名的詳細信息的數據庫(如域名所有人、域名註冊商)。通過whois來實現對域名信息的查詢。

P19.

a.

以下是 gaia.cs.umass.edu 的查詢委託鏈路:

首先查詢根服務器,然後總是選擇第一個服務器,最後就可以查到 gaia.cs.umass.edu 的 IP 地址

# dig +norecurse @a.root-servers.net any gaia.cs.umass.edu

...

;; AUTHORITY SECTION:

edu.            172800    IN    NS    f.edu-servers.net.

edu.            172800    IN    NS    a.edu-servers.net.

edu.            172800    IN    NS    g.edu-servers.net.

edu.            172800    IN    NS    l.edu-servers.net.

edu.            172800    IN    NS    c.edu-servers.net.

edu.            172800    IN    NS    d.edu-servers.net.

...

# dig +norecurse @f.edu-servers.net any gaia.cs.umass.edu

...

;; AUTHORITY SECTION:

umass.edu.        172800    IN    NS    ns1.umass.edu.

umass.edu.        172800    IN    NS    ns3.umass.edu.

umass.edu.        172800    IN    NS    ns2.umass.edu.

...

# dig +norecurse @ns1.umass.edu any gaia.cs.umass.edu

...

;; ANSWER SECTION:

gaia.cs.umass.edu.    21600    IN    MX    0 barramail.cs.umass.edu.

gaia.cs.umass.edu.    21600    IN    A    128.119.245.12

...

b.

查詢 google.com 時的鏈路,類似的:

a.edu-servers.net

a.gtld-servers.net

ns2.google.com

P20.

在一段時間內, DNS 服務器緩存中出現最頻繁的 web 服務器就是最流行的

P21.

很簡單,只需要輸入這樣的命令dig server,把 server 改成你想測試的網站名,如果 Query time 極短,說明最近可能有人訪問過該網站。

P22.

客戶-服務器:

與 u 無關, t = max{NF/us, F/di}

N    t

10    7500s

100    50000s

1000    500000s

P2P:

t = max{F/us, F/di, NF/(us+Nu)}

t    N    10    100    1000

    u                

300kps        7500s    25000s    45454.5s

700kps        7500s    15000s    20547.9s

2Mbps        7500s    7500s    7500s

P23.

a.

服務器向每個客戶端並行發送文件,此速率爲 us/N,因爲 us/N <= dmin,所以客戶端也以該速率下載。則每個客戶端接收完文件的時間爲 F / (us / N) = NF / us

b.

仍然考慮服務器向每個客戶端並行發送文件,以 dmin 爲速率,因爲 us/N >= dmin,所以 us >= Ndmin,故服務器可以承受此速率,各服務器以 dmin 爲下載速率,故接收時間爲 F/dmin

c.

當 us/N <= dmin 時:

        N/us >= 1/dmin

        NF/us >= F/dmin

        此時 t = NF/us = max{NF/us, F/dmin}

當 us/N >= dmin 時:

        N/us <= 1/dmin

        NF/us <= F/dmin

        此時 t = F/dmin = max{NF/us, F/dmin}

因此:得出最小分發時間爲 max{NF/us,F/dmin}

P24.

太難了。。。。

P25.

N,N(N-1)/2

P26.

a.

這是可能的,BitTorrent 存在漏洞,不能防止不合作的搭便車行爲。

比如 BitThief,它聲稱自己可以從 BitTorrent swarm 上下載卻無需貢獻任何資源

b.

他可以在每臺主機上都運行客戶端,並使他們搭便車,然後將它們收集的塊聚合成一個文件,他還可以使不同主機下載不同的塊,這是實際上一種 Sybil 攻擊。

P27.

對等方 3 可以查它的第二後繼對等方 4,使對等方 4 返回它的第一後繼對等方 8。

對等方 3 的第一後繼是對等方 4,第二後繼是對等方 8

P28.

查詢會順時針一直到對等方 5,對等方 5 知道 6 要成爲其後繼, 6 的後繼爲 8, 然後 5 向 6 發送 6 的前後繼信息,6 接收之後就可以加入 DHT 了。

P29.

對任意 key,可以計算它與所有對等方的距離,將其存放在距離它最近的對等方。

P30.

可能。隨機分配標誌符而不考慮物理鏈路,確實會造成錯誤匹配,邏輯上的“鄰居”可能在物理上相距十萬八千里。

P31.

a.

會出錯

Traceback (most recent call last):

  File "./TCPclient.py", line 5, in <module>

    ClientSocket.connect((ServerName,ServerPort))

ConnectionRefusedError: [Errno 111] Connection refused

b.

沒有什麼影響

c.

TCP 肯定會報錯

P32.

沒有必要修改 UDPServer.py。

源端口號 5432,目的端口號 12000

源端口號是隨機的

P33.

可以,參考這篇博客 https://blog.csdn.net/williham/article/details/7251091

P34.

P35.

Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。

它是自由軟件。

它的一些功能:

    Loadable Dynamic Modules

    Multiple Request Processing modes (MPMs) including Event-based/Async, Threaded and Prefork.

    Highly scalable (easily handles more than 10,000 simultaneous connections)

    Handling of static files, index files, auto-indexing and content negotiation

    .htaccess support[17]

    Reverse proxy with caching[18]

        Load balancing[19] with in-band health checks

        Multiple load balancing mechanisms

        Fault tolerance and Failover with automatic recovery

        WebSocket, FastCGI, SCGI, AJP and uWSGI support with caching

        Dynamic configuration[20]

    TLS/SSL with SNI and OCSP stapling support, via OpenSSL.

    Name- and IP address-based virtual servers

    IPv6-compatible

    HTTP/2 protocol support

    Fine-grained authentication and authorization access control[21]

    gzip compression and decompression

    URL rewriting[22]

    Headers[23] and content[24][25] rewriting

    Custom logging with rotation

    Concurrent connection limiting

    Request processing rate limiting

    Bandwidth throttling

    Server Side Includes[26]

    IP address-based geolocation

    User and Session tracking[27]

    WebDAV

    Embedded Perl, PHP and Lua scripting

    CGI support[28]

    public_html per-user web-pages[29]

    Generic expression parser[30]

    Real-time status views[31]

    XML support[32]

    FTP support (by a separate module) [33]

P36.

鍵是 torrent 的 infohash,值是存有當前 infohash 指示的文件的 IP 地址

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章