20155332 補交課後測試——ch11網絡編程

20155332 補交課後測試——ch11網絡編程

這章的課後測試忘了提交,我課後補作了這章的測試題目,並將知識點和本身的錯題彙總以下:html

本章知識點總結

11.1 客戶端-- 服務器模型

  • 每一個網絡應用程序都是基於客戶端 - 服務器模型的,
    採用這種模型,一個應用是由一個服務器進程 和一個或多個客戶端進程組成。程序員

  • 服務器管理某種資源,而且經過操做這種資源爲它的客戶端提供某種服務。web

    • WEB服務器,表明客戶端檢索,執行磁盤內容。
    • FTP服務器,爲客戶端進行存儲和檢索。
    • 電子郵件服務器,爲客戶端進行讀和更新。
    • 客戶端-服務器模型中的基本操做是事務(transaction).
  • 一個客戶端-服務器事務由四步組成
    • 客戶端須要服務的時候,向服務器發送請求,發送一個事務。
    • 服務器收到請求後,解釋它,並以適當方式操做它的資源。
    • 服務器給客戶端發送一個響應,並等待下一個請求。
    • 客戶端收到響應並處理它。編程

      11.2 網絡

      客戶端和服務端一般運行在不一樣的主機上,而且經過計算機網絡的硬件和軟件資源來通訊。服務器

  • 對於一個主機而言,網絡只是又一種I/O設備,做爲數據源和數據接收方。
  • 對於物理上而言,網絡是一個按照地理遠近組成的層次系統。網絡

    • 最低層是LAN(Local Area Network,局域網):在一個建築或校園範圍內。
    • 今爲止,最流行的LAN技術是以太網(Ethernet),由Xerox PARC公司在20世紀70年代中期提出。以太網被證實是適應力極強的,從3 MB/s到10 GB/s
  • 每一個以太網適配器(網卡)都有一個全球惟一的48位地址,它存儲在這個適配器的ROM上(MAC)。app

    • 一臺主機能夠發送一段位,稱爲幀(frame),到這個網段內其餘任何主機。
      每一個幀包括一些固定數量的頭部(header)位
      用於表示此幀的源,和目的地址以及此幀的長度。
      此後就是數據位的有效載荷。
      每一個主機適配器都能看到這個幀,可是隻有目的主機實際讀取它。

在層次的更高級別,多個不兼容的局域網能夠經過叫作路由器(router)的特殊計算機鏈接起來,組成一個internet(互聯網絡)dom

  • WAN(Wide-Area Network,廣域網)socket

  • 互聯網相當重要的特性是:它能由採用徹底不一樣和不兼容技術的各類局域網和廣域網組成。ide

11.3 全球IP 因特網

  • 每臺因特網主機都運行實現TCP/IP協議 (Transmission Control Protocol/Intelnet Protocol,傳輸控制協議/互聯網絡協議)的軟件,幾乎全部計算機系統都支持這個協議

  • TCP/IP協議實際上一個協議族,每個協議提供不一樣的功能。

  • 從程序員的角度,咱們能夠把因特網看做世界範圍內主機的集合,知足一下特性。

    • 主機集合被映射爲一組32位的IP地址。
    • 這組IP地址能夠被映射爲一組稱爲因特網域名(Internet domain name)的標示符。
    • 因特網主機上的進程可以經過鏈接和任何其餘主機上的進程通訊。
  • 一個IP地址就是一個32位無符號整數。網絡程序將IP地址存放在一個IP地址結構中。
  • 主機字節序,和網絡字節序,之間可使用inet_atoninet_ntoa函數來實現二者之間互相轉換。
  • 因特網域名

葉子結點反向到根的路徑就是域名。
層次結構第一層 : 未命名的根結點
層次結構第二層 : 一級域名(first-level domain name)
由非盈利組織ICANN(Internet Corporation for Assigned Names and Numbers,因特爾分配名字數字協會)定義。
常見的一級域名:com,edu,gov,org和net。
層次結構第三層: 二級域名(second-level)
例如:cmu.edu。

  • 這些域名是由ICANN的各個受權代理按照先到先服務的基礎分配的。

11.4 套接字接口

套接字接口(socket interface)是一組函數,他們和Unix I/O函數結合起來,用以建立網絡應用。

給出一個典型的客戶端-服務器事務的上下文中套接字接口概述,以此導向。

  • 從Unix內核角度來看,一個套接字就是通訊的一個端點。
  • 從Unix程序來看,套接字就是一個有相應描述符的打開文件。

sin_family成員是AF_INET,ipv4仍是ipv6。
sin_port成員是一個16位的端口號。
sin_addr成員就是一個32位的IP地址。
IP地址和端口號老是以網絡字節順序(大端法)存放的。
sockaddr_in給程序員操做的,sockaddr交由套接字函數使用的,二者能夠直接強制轉換。

  • socket函數
  • connect函數
  • open_clientfd函數
  • bind函數
  • listen函數(主動套接字->監聽套接字)
  • open_listenfd函數
  • accept函數

    個人錯題

2.有關Web服務器的說法,正確的是()

  • A.Web服務器能夠提供靜態和動態內容
  • B.Web服務器返回的靜態內容由URL標識
  • C./.../app?150&21傳遞的內容由app可執行文件產生,150和21是調用參數
  • D.最小的URL後綴「/」,會被擴展成相似「/index.html」的默認主頁

錯誤緣由

我選了ACD,沒有選B.課本上P666頁寫,可執行文件的URL能夠在文件名後包括程序參數。「?」字符分隔文件名和參數,並且每一個參數都用「&」隔開。課本沒有說這兩個參數是可執行文件產生的,因此我沒有選。
查閱資料後,這兩個參數確實是由可執行文件產生的,因此答案爲ABCD。

9.如圖關於struct sockaddr_in和struct sockaddr,下面說法正確的是()

  • A .sa_family能夠是AF_INET,AF_INET6和AF_UNSPEC
  • B .sa_family若是指定AF_INET,那麼函數就不能返回任何IPV6相關的地址信息;若是僅指定了AF_INET6卻能夠返回IPV4地址信息。
  • C .套接字接口中的地址類型是sturct sockaddr
  • D .套接字接口中的地址類型是sturct sockaddr_in

    我選的是ABC,答案是AC。
    對於A選項,AF_INET(又稱 PF_INET)是 IPv4 網絡協議的套接字類型,AF_INET6 則是 IPv6 的;而 AF_UNIX 則是 Unix 系統本地通訊。因此A是對的。

對於B選項,sin_family參數指定調用者期待返回的套接口地址結構的類型。它的值包括三種:AF_INET,AF_INET6和AF_UNSPEC。若是指定AF_INET,那麼函數就不能返回任何IPV6相關的地址信息;若是僅指定了AF_INET6,則就不能返回任何IPV4地址信息。AF_UNSPEC則意味着函數返回的是適用於指定主機名和服務名且適合任何協議族的地址。
故B錯誤。

對於C ,課本P653頁有,因此C選項是正確的。

10.有關Socket端口和Linux命令,下面說法正確的是()

  • A .能夠用 echo /etc/services查看
  • B .使用 netstat -pan|grep 80能夠查看哪些進程佔用了80端口
  • C .可使用lsof -i:80查看哪裏些進程佔用了80端口
  • D .能夠用sudo /etc/init.d/service start|stop|restart 啓動|中止|重啓系統服務
  • E .能夠用netstat -pa 查看全部的服務端口(LISTEN,ESTABLISHED)
  • F .ps -aux | grep pid 能夠查看綁定某端口的進程號爲pid的進程的詳細狀況

    我選的是BCEF,正確答案:ABCDEF
    我在終端輸入這些命令,eco /etc/services沒有顯示端口狀況。
    lsof -i:80也沒有任何輸出。因此選錯了。




因此我很疑惑,但願老師可以解答。

11.知名端口號(well-known port numbers)就是那些由互聯網名稱與數字地址分配機構(ICANN)預留給傳輸控制協議(TCP)和用戶數據包協議(UDP)使用的端口號。下面有關知名端口號的說法正確的是()

  • A .echo 服務的端口號是7
  • B .ftp 文件傳輸協議(FTP)端口號是23
  • C .請求主機發送日期和時間的daytime服務的端口號是13
  • D .web服務器的端口號是80
  • E .telnet服務的端口號是21
  • F .SMTP服務的端口號是25
  • G .tftp服務的端口號是69
  • H .HTTPS服務的端口號是443
  • I .rsync服務的端口號是873
  • J .pop3服務的端口號是110
  • K .auth服務的端口號是113

    正確答案:ACDFGHIJK
    B選項,FTP的端口號是20和21
    E選項,telnet的端口號是23

18( 多選題 | 1 分)
有關域名和IP地址的說法,正確的是()
A .
1988年前,域名和IP地址的映射經過HOST.txt來完成
B .
1988年後,域名和IP地址的映射經過DNS來完成
C .
Linux中可使用hostname(1)來展現和某個IP對應的域名
D .
域名和IP地址的映射必須是1對1 的

我選的是ABC 對於C選項,hostname只能顯示或者設置主機名,不能展現某個IP對應的域名。 對於D選項,在最簡單的狀況下,域名和IP是一一對應的。可是,一個域名能夠對應多個IP,一個ip也能夠對應多個域名。 因此正確答案爲AB。

相關文章
相關標籤/搜索