熟悉基本通信協議(5)應用層(高層)

第五、應用層知識框架.
在本階段應該掌握下邊內容:(只是總結了精華部分)
一、應用層協議的特點。
  (1)每個應用層協議都是爲了解決某一類應用問題,而問題的解決又往往是通過位於不同主機中的多個應用進程之間的通信和協同工作來完成的。應用層的具體內容就是規定應用進程在通信時所遵循的協議。
  (2)應用層的許多協議都是基於客戶服務器方式。客戶(client)和服務器(server)都是指通信中所涉及的兩個應用進程。客戶服務器方式所描述的是進程之間服務和被服務的關係。客戶是服務請求方,服務器是服務提供方。
二、域名系統DNS
(一)域名系統概述
  (1)許多應用層軟件經常直接使用域名系統 DNS (Domain Name System),但計算機的用戶只是間接而不是直接使用域名系統。 
  (2)因特網採用層次結構的命名樹作爲主機的名字,並使用分佈式的域名系統 DNS。
  (3)名字到域名的解析是由若干個域名服務器程序完成的。域名服務器程序在專設的結點上運行,運行該程序的機器稱爲域名服務器。 
(二)因特網的域名結構
  (1)因特網採用了層次樹狀結構的命名方法。
  (2)任何一個連接在因特網上的主機或路由器,都有一個惟一的層次結構的名字,即域名。
  (3)域名的結構由若干個分量組成,各分量之間用點隔開:
… .三級域名.二級域名.頂級域名
  (4)各分量分別代表不同級別的域名.
(三)頂極域名TLD(Top Level Domain)
  (1) 國家頂級域名 nTLD:如: .cn 表示中國,.us 表示美國,.uk 表示英國,等等。
  (2) 國際頂級域名 iTLD:採用.int。國際性的組織可在 .int 下注冊。
  (3) 通用頂級域名 gTLD:最早的頂級域名是:
  .com表示公司企業
  .net表示網絡服務機構
  .org表示非贏利性組織
  .edu表示教育機構(美國專用)
  .gov表示政府部門(美國專用)
  .mil表示軍事部門(美國專用) 
(四)新增加了七個通用頂級域名 
  (1).aero 用於航空運輸企業
  (2).biz 用於公司和企業
  (3).coop 用於合作團體
  (4).info適用於各種情況
  (5).museum用於博物館
  (6).name用於個人
  (7).pro用於會計、律師和醫師等自由職業者 
三、FTP的基本工作原理非常重要,在很多公司都要求你具備這一基本的操作能力
(一)
  (1)網絡環境中的一項基本應用就是將文件從一臺計算機中複製到另一臺可能相距很遠的計算機中。
  (2)初看起來,在兩個主機之間傳送文件是很簡單的事情。
  (3)其實這往往非常困難。原因是衆多的計算機廠商研製出的文件系統多達數百種,且差別很大。
(二)網絡環境下複製文件的複雜性
  (1) 計算機存儲數據的格式不同。
  (2)文件的目錄結構和文件命名的規定不同。
  (3) 對於相同的文件存取功能,操作系統使用的命令不同。
  (4) 訪問控制方法不同。 
(三)FTP特點
  (1)文件傳送協議 FTP 只提供文件傳送的一些基本的服務,它使用 TCP 可靠的運輸服務。
  (2)FTP的主要功能是減少或消除在不同操作系統下處理文件的不兼容性。
  (3)FTP使用客戶服務器方式。一個 FTP 服務器進程可同時爲多個客戶進程提供服務。FTP 的服務器進程由兩大部分組成:一個主進程,負責接受新的請求;另外有若干個從屬進程,負責處理單個請求。
(四)主進程的工作步驟如下
  (1)打開熟知端口(端口號爲21),使客戶進程能夠連接上。
  (2)等待客戶進程發出連接請求。
  (3)啓動從屬進程來處理客戶進程發來的請求。從屬進程對客戶進程的請求處理完畢後即終止,但從屬進程在運行期間根據需要還可能創建其他一些子進程。
  (4)回到等待狀態,繼續接受其他客戶進程發來的請求。主進程與從屬進程的處理是併發地進行
(五)FTP使用的兩個TCP連接
  (1)控制連接在整個會話期間一直保持打開,FTP 客戶發出的傳送請求通過控制連接發送給服務器端的控制進程,但控制連接不用來傳送文件。
  (2)實際用於傳輸文件的是“數據連接”。服務器端的控制進程在接收到 FTP 客戶發送來的文件傳輸請求後就創建“數據傳送進程”和“數據連接”,用來連接客戶端和服務器端的數據傳送進程。
  (3)數據傳送進程實際完成文件的傳送,在傳送完畢後關閉“數據傳送連接”並結束運行。 
(六)兩個不同的端口號
  (1)當客戶進程向服務器進程發出建立連接請求時,要尋找連接服務器進程的熟知端口(21),同時還要告訴服務器進程自己的另一個端口號碼,用於建立數據傳送連接。
  (2)接着,服務器進程用自己傳送數據的熟知端口(20)與客戶進程所提供的端口號碼建立數據傳送連接。
  (3)由於FTP使用了兩個不同的端口號,所以數據連接與控制連接不會發生混亂。(備註:使用兩個獨立的連接的主要好處是使協議更加簡單和更容易實現。在傳輸文件時還可以利用控制連接(例如,客戶發送請求終止傳輸)。)
(七)FTP的屏幕信息舉例詳細資料讀者可以下載相關的教程或應用軟件)推薦網站:――――
[01] ftp nic.ddn.mil
[02] connected to nic.ddn.mil
[03] 220 nic FTP server (Sunos 4.1)ready.
[04] Name: anonymous
[05] 331 Guest login ok, send ident as password.
[06] Password: [email protected]
[07] 230 Guest login ok, access restrictions apply.
[08] ftp> cd rfc
[09] 250 CWD command successful.
[10] ftp> get rfc1261.txt nicinfo
[11] 200 PORT command successful.
[12] 150 ASCII data connection for rfc1261.txt
(128.36.12.27,1401) (4318 bytes).
[13] 226 ASCII Transfer complete.
local: nicinfo remote: rfc1261.txt
4488 bytes received in 15 seconds (0.3 Kbytes/s).
[14] ftp> quit
[15] 221 Goodbye.

詳細解釋:
[01] ftp nic.ddn.mil
[01] 用戶要用 FTP 和遠地主機(網絡信息中心
NIC 上的主機)建立連接。 
[02] connected to nic.ddn.mil
[02]本地 FTP 發出的連接成功信息。 
[03] 220 nic FTP server (Sunos 4.1)ready.
[03] 從遠地服務器返回的信息,220 表示“服務就緒”
[04] Name: anonymous
[04] 本地 FTP 提示用戶鍵入名字。用戶鍵入的名字
  表示“匿名”。用戶只需鍵入 anonymous 即可。 
[05] 331 Guest login ok, send ident as password.
[05] 數字 331 表示“用戶名正確”,需要口令。 
[06] Password: [email protected]
[06] 本地 FTP 提示用戶鍵入口令。用戶這時可鍵入
  guest 作爲匿名的口令,也可以鍵入自己的電子郵件
  地址,即耶魯大學數學系名爲 xyz 的主機上的 abc。 

[07] 230 Guest login ok, access restrictions apply.
[07] 數字 230 表示用戶已經註冊完畢。 
[08] ftp> cd rfc
[08] “ftp>”是 FTP 的提示信息。用戶鍵入的是將
  目錄改變爲包含 RFC 文件的目錄。 
[09] 250 CWD command successful.
[09] 字符 CWD 是 FTP 的標準命令,
  代表 ChangeWorking Directory。
[10] ftp> get rfc1261.txt nicinfo
[10] 用戶要求將名爲 rfc1261.txt 的文件複製到
  本地主機上,並改名爲 nicinfo。
[11] 200 PORT command successful.
[11] 字符 PORT 是 FTP 的標準命令,表示要
  建立數據連接。200 表示“命令正確”。 
[12] 150 ASCII data connection for rfc1261.txt
(128.36.12.27,1401) (4318 bytes).
[12] 數字 150 表示“文件狀態正確,
即將建立數據連接”。 
[13] 226 ASCII Transfer complete.
local: nicinfo remote: rfc1261.txt
4488 bytes received in 15 seconds (0.3 Kbytes/s).
[13] 數字 226 是“釋放數據連接”。
  現在一個新的本地文件已產生。 
[14] ftp> quit
[14] 用戶鍵入退出命令
[15] 221 Goodbye.
[15] 表明 FTP 工作結束。 
(八)NFS採用另一種思路
  NFS(網絡文件系統,Network File System)是由美國SUN微系統公司開發的一個協議,它能使計算機系統通過網絡訪問其它計算機系統的目錄和文件,就好象這些文件被存儲在本地硬盤上一樣。


  (1)NFS允許應用進程打開一個遠地文件,並能在該文件的某一個特定的位置上開始讀寫數據。
  (2)NFS可使用戶只複製一個大文件中的一個很小的片段,而不需要複製整個大文件。
  (3)對於上述例子,計算機 A 的 NFS 客戶軟件,把要添加的數據和在文件後面寫數據的請求一起發送到遠地的計算機 B 的 NFS 服務器。NFS 服務器更新文件後返回應答信息。
  (4)在網絡上傳送的只是少量的修改數據。 
四、簡單文件傳送協議TFTP(Trivial File Transfer Protocol)
(一)

  (1)是一個很小且易於實現的文件傳送協議。
  (2)TFTP使用客戶服務器方式和使用 UDP 數據報,因此 TFTP 需要有自己的差錯改正措施。(在這裏我要羅嗦幾句:您可能會疑問停止等待協議裏邊有確認和重傳,而TFTP所使用的是UDP數據報方式,都很清楚UDP數據報呢是非面向連接的即沒有重傳和確認,那麼怎麼它的工作方式還和停止等待協議相類似呢?問題關鍵在於這裏的確認重傳也好、差錯糾錯也好,都是由上層應用軟件來實現的,而不是我們想象的在數據鏈路層實現。)  
  (3)TFTP只支持文件傳輸而不支持交互。
  (4)TFTP沒有一個龐大的命令集,沒有列目錄的功能,也不能對用戶進行身份鑑別。 
(二)TFTP的主要特點是什麼?
  (1) 每次傳送的數據 PDU 中有 512 字節的數據,但最後一次可不足 512 字節。
  (2) 數據 PDU 也稱爲文件塊(block),每個塊按序編號,從 1 開始。
  (3) 支持 ASCII 碼或二進制傳送。
  (4) 可對文件進行讀或寫。
  (5) 使用很簡單的首部。 
(三)TFTP 的工作很像停止等待協議
  (1)發送完一個文件塊後就等待對方的確認,確認時應指明所確認的塊編號。
  (2)發完數據後在規定時間內收不到確認就要重發數據 PDU。
  (3)發送確認 PDU 的一方若在規定時間內收不到下一個文件塊,也要重發確認 PDU。這樣就可保證文件的傳送不致因某一個數據報的丟失而告失敗。
  (4)在一開始工作時。TFTP 客戶進程發送一個讀請求 PDU 或寫請求 PDU 給 TFTP 服務器進程,其熟知端口號碼爲 69。
  (5)TFTP 服務器進程要選擇一個新的端口和 TFTP 客戶進程進行通信。
  (6)若文件長度恰好爲 512 字節的整數倍,則在文件傳送完畢後,還必須在最後發送一個只含首部而無數據的數據 PDU。
  (7)若文件長度不是 512 字節的整數倍,則最後傳送數據 PDU 的數據字段一定不滿512字節,這正好可作爲文件結束的標誌。
五、按遠程終端協議 TELNET
(一)TELNET用TCP進行連接時使用網絡虛擬終端 NVT 格式 
  (1)TELNET是一個簡單的遠程終端協議,也是因特網的正式標準。
  (2)用戶用 TELNET 就可在其所在地通過 TCP 連接註冊(即登錄)到遠地的另一個主機上(使用主機名或IP地址)。
  (3)TELNET能將用戶的擊鍵傳到遠地主機,同時也能將遠地主機的輸出通過 TCP 連接返回到用戶屏幕。這種服務是透明的,因爲用戶感覺到好像鍵盤和顯示器是直接連在遠地主機上。
(二)客戶服務器方式
  (1)現在由於 PC 機的功能越來越強,用戶已較少使用 TELNET 了。
  (2)TELNET也使用客戶服務器方式。在本地系統運行 TELNET 客戶進程,而在遠地主機則運行 TELNET 服務器進程。
  (3)和 FTP的情況相似,服務器中的主進程等待新的請求,併產生從屬進程來處理每一個連接。 
六、電子郵件
(一)概述
  (1)電子郵件(e-mail)是因特網上使用得最多的和最受用戶歡迎的一種應用。
  (2)電子郵件把郵件發送到 ISP 的郵件服務器,並放在其中的收信人郵箱中,收信人可隨時上網到 ISP 的郵件服務器進行讀取。
  (3)電子郵件不僅使用方便,而且還具有傳遞迅速和費用低廉的優點。
  (4)現在電子郵件不僅可傳送文字信息,而且還可附上聲音和圖像。
(二)電子郵件的一些標準
  (1)在 1982年制定出簡單郵件傳送協議 SMTP (Simple Mail Transfer Protocol) 和因特網文本報文格式,它們都已成爲因特網的正式標準。
  (2)1993年提出了通用因特網郵件擴充 MIME (Multipurpose Internet Mail Extensions)。
  (3)MIME在其郵件首部中說明了郵件的數據類型(如文本、聲音、圖像、視像等)。在 MIME 郵件中可同時傳送多種類型的數據。 
(三)用戶代理UA (User Agent) (其實就是郵件服務器,第三方機器)
  (1)用戶代理 UA 就是用戶與電子郵件系統的接口。
  (2)用戶代理的功能是:撰寫、顯示和處理。
  (3)郵件服務器的功能是發送和接收郵件,同時還要向發信人報告郵件傳送的情況(已交付、被拒絕、丟失等)。
  (4)郵件服務器按照客戶服務器方式工作。郵件服務器需要使用兩個不同的協議。
  (備註:一個郵件服務器既可以作爲客戶,也可以作爲服務器。例如,當郵件服務器 A 向另一個郵件服務器 B 發送郵件時,郵件服務器 A 就作爲 SMTP 客戶,而 B 是 SMTP 服務器。當郵件服務器 A 從另一個郵件服務器 B 接收郵件時,郵件服務器 A 就作爲 SMTP 服務器,而 B是 SMTP 客戶。)
  a)SMTP協議用於發送郵件。
  b)郵局協議 POP (Post Office Protocol) 用於接收郵件。
(四)電子郵件的發送和接收過程 
  (1) 發信人調用用戶代理來編輯要發送的郵件。
用戶代理用 SMTP 把郵件傳送給發送端郵件服務器。 
  (2) 發送端郵件服務器將郵件放入郵件緩存隊列中,等待發送。
  (3) 運行在發送端郵件服務器的 SMTP 客戶進程,發現在郵件緩存中有待發送的郵件,就向運行在接收端郵件服務器的 SMTP 服務器進程發起 TCP 連接的建立。
  (4)TCP 連接建立後,SMTP 客戶進程開始向遠程的 SMTP 服務器進程發送郵件。當所有的待發送郵件發完了,SMTP 就關閉所建立的 TCP 連接。
  (5)運行在接收端郵件服務器中的 SMTP 服務器進程收到郵件後,將郵件放入收信人的用戶郵箱中,等待收信人在方便時進行讀取
  (6)收信人在打算收信時,調用用戶代理,使用 POP3(或 IMAP)協議將自己的郵件從接收端郵件服務器的用戶郵箱中的取回(如果郵箱中有來信的話)。 (備註:這裏具體說SMTP服務器我認爲是不夠準確的,應該爲SMTP服務進程。這個進程在兩端的軟件上都有,在代理服務器上也會運行這個進程。)
(五)電子郵件的組成
  (1)電子郵件由信封(envelope)和內容(content)兩部分組成。
  (2)電子郵件的傳輸程序根據郵件信封上的信息來傳送郵件。用戶在從自己的郵箱中讀取郵件時才能見到郵件的內容。
  (3)在郵件的信封上,最重要的就是收信人的地址。 
(六)電子郵件的地址格式這個就很簡單了,大家每天都在用
  (1)TCP/IP 體系的電子郵件系統規定電子郵件地址的格式如下:
  a)收信人郵箱名@郵箱所在主機的域名 
  (2)符號“@”讀作“at”,表示“在”的意思。 
  (3)例如,電子郵件地址 [email protected]
  前面的:這個用戶名在該域名的範圍內是惟一的。 
  後面的:郵箱所在的主機的域名在全世界必須是惟一的 

(七)簡單郵件傳送協議SMTP
  (1)SMTP 所規定的就是在兩個相互通信的 SMTP 進程之間應如何交換信息。
  (2)由於 SMTP使用客戶服務器方式,因此負責發送郵件的 SMTP 進程就是 SMTP 客戶,而負責接收郵件的 SMTP 進程就是 SMTP 服務器。
  (3)SMTP 規定了 14 條命令和 21 種應答信息。每條命令用 4 個字母組成,而每一種應答信息一般只有一行信息,由一個 3 位數字的代碼開始,後面附上(也可不附上)很簡單的文字說明。
(八)SMTP的通信的三個階段
  (1)連接建立:連接是在發送主機的 SMTP 客戶和接收主機的 SMTP 服務器之間建立的。SMTP不使用中間的郵件服務器。 
  (2)郵件傳送
  (3)連接釋放:郵件發送完畢後,SMTP 應釋放 TCP 連接。 
(九)郵件讀取協議POP3 和 IMAP
  (1)郵局協議 POP 是一個非常簡單、但功能有限的郵件讀取協議,現在使用的是它的第三個版本 POP3。
  (2)POP也使用客戶服務器的工作方式。
  (3)在接收郵件的用戶 PC 機中必須運行 POP 客戶程序,而在用戶所連接的 ISP 的郵件服務器中則運行 POP 服務器程序。 
七、萬維網 WWW
(一)概述(萬維網提供分佈式服務)
  (1)萬維網 WWW (World Wide Web)並非某種特殊的計算機網絡。
  (2)萬維網是一個大規模的、聯機式的信息儲藏所。
  (3)萬維網用鏈接的方法能非常方便地從因特網上的一個站點訪問另一個站點,從而主動地按需獲取豐富的信息。
  (4)這種訪問方式稱爲“鏈接”。
(二)超媒體與超文本
  (1)萬維網是分佈式超媒體(hypermedia)系統,它是超文本(hypertext)系統的擴充。
  (2)一個超文本由多個信息源鏈接成。利用一個鏈接可使用戶找到另一個文檔。這些文檔可以位於世界上任何一個接在因特網上的超文本系統中。超文本是萬維網的基礎。
  (3)超媒體與超文本的區別是文檔內容不同。超文本文檔僅包含文本信息,而超媒體文檔還包含其他表示方式的信息,如圖形、圖像、聲音、動畫,甚至活動視頻圖像。
(三)萬維網的工作方式
  (1)萬維網以客戶服務器方式工作。
  (2)瀏覽器就是在用戶計算機上的萬維網客戶程序。萬維網文檔所駐留的計算機則運行服務器程序,因此這個計算機也稱爲萬維網服務器。
  (3)客戶程序向服務器程序發出請求,服務器程序向客戶程序送回客戶所要的萬維網文檔。
  (4)在一個客戶程序主窗口上顯示出的萬維網文檔稱爲頁面(page)。
(四)超文本傳輸協議HTTP
(1)HTTP的操作過程:

  a)爲了使超文本的鏈接能夠高效率地完成,需要用 HTTP 協議來傳送一切必須的信息。
  b)從層次的角度看,HTTP 是面向事務的(transaction-oriented)應用層協議,它是萬維網上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎。
(2)用戶點擊鼠標後所發生的事件 
a)瀏覽器分析超鏈指向頁面的 URL。
b)瀏覽器向 DNS 請求解析 [url]www.tsinghua.edu.cn[/url] 的 IP 地址。
c)域名系統 DNS 解析出清華大學服務器的 IP 地址。
d)瀏覽器與服務器建立 TCP 連接
e)瀏覽器發出取文件命令:
  1.GET /chn/yxsz/index.htm。
f)服務器 給出響應,把文件 index.htm 發給瀏覽器。
g)TCP 連接釋放。
h)瀏覽器顯示“清華大學院系設置”文件 index.htm 中的所有文本。
(3)HTTP 的主要特點 
  a)HTTP是面向事務的客戶服務器協議。
  b)HTTP1.0 協議是無狀態的(stateless)。
  c)HTTP協議本身也是無連接的,雖然它使用了面向連接的 TCP 向上提供的服務。
  d)萬維網瀏覽器就是一個 HTTP 客戶,而在萬維網服務器等待 HTTP 請求的進程常稱爲 HTTP daemon,有的文獻將它縮寫爲 HTTPD。
  e)HTTPdaemon 在收到 HTTP 客戶的請求後,把所需的文件返回給 HTTP 客戶。 
(4)HTTP 的報文結構 
  HTTP 有兩類報文:
  a)請求報文——從客戶向服務器發送請求報文。(請求行包括方法、URL版本、回車換行CRLF;詳細說明:版本是http的版本)
  b)響應報文——從服務器到客戶的回答。
  c)由於HTTP 是面向正文的(text-oriented),因此在報文中的每一個字段都是一些 ASCII 碼串,因而每個字段的長度都是不確定的。
  (備註A:報文由三個部分組成,即開始行其實就是狀態行類型的、首部行和實體主體。狀態行包括三項內容:即http版本、狀態碼、以及解釋狀態碼的簡單詞語。在請求報文中,開始行就是請求行。“方法”是面向對象技術中使用的專門名詞。所謂“方法”就是對所請求的對象進行的操作,因此這些方法實際上也就是一些命令。因此,請求報文的類型是由它所採用的方法決定的。)
  (備註B:狀態碼都是三位數字
  A.1xx表示通知信息的,如請求收到了或正在進行處理。
  B.2xx表示成功,如接受或知道了。
  C.3xx表示重定向,表示要完成請求還必須採取進一步的行動。
  D.4xx表示客戶的差錯,如請求中有錯誤的語法或不能完成。
  E.5xx表示服務器的差錯,如服務器失效無法完成請求。)
(5)HTTP 請求報文的一些方法 說到這裏呢,學過java開發和JSP開發的人應該對這些方法有些眼熟或者很熟,尤其是get和post方法
方法(操作) 意義
a) OPTION 請求一些選項的信息
b) GET 請求讀取由URL所標誌的信息
c) HEAD 請求讀取由URL所標誌的信息的首部
d) POST 給服務器添加信息(例如,註釋)
e) PUT 在指明的URL下存儲一個文檔
f) DELETE 刪除指明的URL所標誌的資源
g) TRACE 用來進行環回測試的請求報文
h) CONNECT 用於代理服務器

 

2006-12-02 23:00:31
續上
八、引導程序協議 BOOTP 與動態主機配置協議 DHCP有印象的話我在前面章節裏提到過這兩個協議前者是靜態的分配IP地址,後者是動態的,並且能夠完成前者所有的功能和前者不能完成的一些功能。)

(一)引導程序協議BOOTP
  (1)爲了將軟件協議做成通用的和便於移植,協議軟件的編寫者把協議軟件參數化。這就使得在很多臺計算機上使用同一個經過編譯的二進制代碼成爲可能。
  (2)一臺計算機和另一臺計算機的區別,都可通過一些不同的參數來體現。
  (3)在軟件協議運行之前,必須給每一個參數賦值。 
(二)協議配置
  (1)在協議軟件中給這些參數賦值的動作叫做協議配置。
  (2)一個軟件協議在使用之前必須是已正確配置的。
  (3)具體的配置信息有哪些則取決於協議棧
  (備註:這裏提到一個用戶配置文件的概念:就是在用戶登錄時定義系統加載所需環境的設置和文件的集合。它包括所有用戶專用的配置設置,如程序項目、屏幕顏色、網絡連接、打印機連接、鼠標設置及窗口的大小和位置。
當你第一次登錄到一臺基於Microsoft Windows XP、Windows 2000或Windows NT? Workstation的計算機上時,系統就會爲你創建一個專用的配置文件。 )
(三)連接到因特網的計算機的協議軟件需要配置的項目 
  (1) IP地址
  (2) 子網掩碼
  (3) 默認路由器的IP地址
  (4) 域名服務器的IP地址
  a)這些信息通常存儲在一個配置文件中,計算機在引導過程中可以對這個文件進行存取。 
(三)引導程序協議 BOOTP (BOOTstrap Protocol) 
  (1)也稱爲自舉協議 。
  (2)BOOTP使用客戶服務器工作方式。
  (3)協議軟件廣播 BOOTP 請求報文,此報文作爲 UDP 用戶數據報的數據,UDP 用戶數據報再作爲 IP 數據報的數據。
  (4)收到請求報文的 BOOTP 服務器查找發出請求的計算機的各項配置信息,把配置信息放入 BOOTP 回答報文中,並把回答報文返回給提出請求的計算機。
(四)BOOTP 報文的傳送 
  (1)由於計算機發送 BOOTP 請求報文時自己還沒有 IP 地址,因此它使用全 1 廣播地址(只在本網絡上廣播)作爲目的地址,而用全 0 地址作爲源地址。
  (2)BOOTP服務器可使用廣播方式將回答報文返回給該計算機,或使用收到廣播幀上的硬件地址進行單播。
  (3)只需發送一個 BOOTP 廣播報文就可獲取所需的全部配置信息。 
(五)動態主機配置協議 DHCP(Dynamic Host Configuration Protocol) 
  (1)動態主機配置協議 DHCP 提供了即插即用連網(plug-and-play networking)的機制。
  (2)這種機制允許一臺計算機加入新的網絡和獲取IP地址而不用手工參與。
  (3)DHCP 是擴展了的BOOTP。
  (4)DHCP 與 BOOTP 是向後兼容的,並且它們所使用的報文格式都很相似。 
(六)DHCP使用客戶服務器方式
  (1)需要 IP地址的主機在啓動時就向 DHCP 服務器廣播發送發現報文(DHCPDISCOVER),這時該主機就成爲 DHCP 客戶。
  (2)本地網絡上所有主機都能收到此廣播報文,但只有 DHCP 服務器纔回答此廣播報文。
  (3)DHCP 服務器先在其數據庫中查找該計算機的配置信息。若找到,則返回找到的信息。若找不到,則從服務器的 IP 地址池(address pool)中取一個地址分配給該計算機。DHCP 服務器的回答報文叫做提供報文(DHCPOFFER)。
(七)DHCP 中繼代理(relay agent) 
  (1)並不是每個網絡上都有 DHCP 服務器,這樣會使 DHCP 服務器的數量太多。現在是每一個網絡至少有一個 DHCP 中繼代理,它配置了 DHCP 服務器的 IP 地址信息。
  (2)當 DHCP中繼代理收到主機發送的發現報文後,就以單播方式向 DHCP 服務器轉發此報文,並等待其回答。收到 DHCP 服務器回答的提供報文後,DHCP 中繼代理再將此提供報文發回給主機。(備註:注意:DHCP 報文只是 UDP 用戶數據報中的數據。
(八)租用期(lease period) 
  (1)DHCP服務器分配給 DHCP 客戶的 IP 地址的臨時的,因此 DHCP 客戶只能在一段有限的時間內使用這個分配到的 IP 地址。DHCP 協議稱這段時間爲租用期。
  (2)租用期的數值應由 DHCP 服務器自己決定。
  (3)DHCP客戶也可在自己發送的報文中(例如,發現報文)提出對租用期的要求。 
(九)DHCP協議的工作過程
  ①:DHCP 服務器被動打開 UDP 端口 67, 等待客戶端發來的報文。
  ②:DHCP 客戶從 UDP 端口 68 發送 DHCP 發現報文。
  ③:凡收到 DHCP 發現報文的 DHCP 服務器都發出 DHCP 提供報文,因此 DHCP 客戶 可能收到多個 DHCP 提供報文。
  ④:DHCP客戶從幾個 DHCP 服務器中選擇其中的一個,並向所選擇的 DHCP 服務器發送 DHCP 請求報文。
  ⑤:被選擇的 DHCP 服務器發送確認報文 DHCPACK,進入已綁定狀態,並可開始使用得到的臨時 IP 地址了。DHCP 客戶現在要根據服務器提供的租用期 T 設置兩個計時器 T1 和 T2,它們的超時時間分別是 0.5T 和 0.875T。當超時時間到就要請求更新租用期。
  ⑥:租用期過了一半(T1 時間到),DHCP 發送請求報文 DHCPREQUEST 要求更新租用期。
  ⑦:DHCP服務器若同意,則發回確認報文 DHCPACK。DHCP 客戶得到了新的租 用期,重新設置計時器。
  ⑧:DHCP服務器若不同意,則發回否認報文DHCPNACK。這時 DHCP 客戶必須立即停止使用原來的 IP 地址,而必須重新申請 IP 地址(回到步驟②)。若DHCP服務器不響應步驟⑥的請求報文DHCPREQUEST,則在租用期過了 87.5% 時,DHCP 客戶必須重新發送請求報文 DHCPREQUEST(重複步驟⑥),然後又繼續後面的步驟。
  ⑨:DHCP客戶可隨時提前終止服務器所提供的租用期,這時只需向 DHCP 服務器發送釋放報文 DHCPRELEASE 即可。
九、應用進程跨越網絡的通信系統調用和應用編程接口
(一)
  (1)大多數操作系統使用系統調用(system call)的機制在應用程序和操作系統之間傳遞控制權。
  (2)對程序員來說,每一個系統調用和一般程序設計中的函數調用非常相似,只是系統調用是將控制權傳遞給了操作系統。
(二)應用編程接口 API(Application Programming Interface) 
  (1)當某個應用進程啓動系統調用時,控制權就從應用進程傳遞給了系統調用接口。
  (2)此接口再將控制權傳遞給計算機的操作系統。操作系統將此調用轉給某個內部過程,並執行所請求的操作。
  (3)內部過程一旦執行完畢,控制權就又通過系統調用接口返回給應用進程。
  (4)系統調用接口實際上就是應用進程的控制權和操作系統的控制權進行轉換的一個接口,即應用編程接口 API。 
  (多個應用進程使用系統調用的機制 :用戶地址空間中的應用程序、系統調用接口就是由應用程序調用的系統函數、系統地址空間中的協議軟件就是包括TCP/IP協議軟件的操作系統內核)
(三)幾種應用編程接口 API 
  (1)BerkeleyUNIX 操作系統定義了一種 API,它又稱爲插口接口(socket interface)。
  (2)微軟公司在其操作系統中採用了插口接口 API,形成了一個稍有不同的 API,並稱之爲 Windows Socket。
  (3)AT&T爲其 UNIX 系統 V 定義了一種 API,簡寫爲 TLI (Transport Layer Interface)。 (備註:應用進程通過插口接入到網絡 )
(四)插口的作用 
  (1)當應用進程需要使用網絡進行通信時就發出系統調用,請求操作系統爲其創建“插口”,以便把網絡通信所需要的系統資源分配給該應用進程。
  (2)操作系統爲這些資源的總和用一個號碼來表示,並把此號碼返回給應用進程。應用進程所進行的網絡操作都必須使用這個號碼。
  (3)通信完畢後,應用進程通過一個關閉插口的系統調用通知操作系統回收與該“號碼”相關的所有資源。
(五)插口和 API 不同
  (1)插口是應用進程和網絡之間的接口,因爲插口既包含有運輸層與應用層之間的端口號,又包含有機器的 IP 地址。
  (2)插口和應用編程接口 API 是性質不同的接口。
  (3)API 是從程序設計的角度定義了許多標準的系統調用函數。應用進程只要使用標準的系統調用函數就可得到操作系統的服務。
  (4)在這個意義上講,API 是應用程序和操作系統之間的接口。 
(六)應該牢記在心的東東
  (1)在插口以上的進程是受應用程序控制的,而在插口以下的 TCP 協議軟件以及 TCP 使用的緩存和一些必要的變量等,則是受計算機操作系統的控制。
  (2)只要應用程序使用 TCP/IP 協議進行通信,它就必須通過插口與操作系統交互並請求其服務。
  (3)應用程序的開發者對插口以上的應用進程具有完全的控制,但對插口以下的運輸層卻只有少量的控制。
六、大家最關心的問題也是在實際中能真正派上用場的東西是子網號、廣播地址等等的算法。下面我就總結一下這些方法。(說明:鑑於對於算法這一塊網絡上的朋友們衆說紛紜,沒有一個統一的算法,當然確實有很多種方法來解決同一個問題,但是也沒有必要繞着彎子或者用顯得很高深的東西來套讀者,解決問題的方法不是越複雜越好,也不是越簡單越好,而是要合適,讓讀者自己能夠看明白你的算法,重要的不是你從什麼參考資料上拷貝到你的博客,不能往那裏一擺就算完了,就不負責任了,你還得保證它的正確性,廢話少說,我來說正事兒!)

(一)先來介紹幾個基本概念:
  (1)子網掩碼
是用來判斷任意兩臺計算機的IP地址是否屬於同一子網絡的根據。就是兩臺計算機各自的IP地址與子網掩碼進行與操作運算後,如果得出的結果是相同的,則說明這兩臺計算機是處於同一個子網絡上的,可以進行直接的通訊。
  (2)子網號:創建子網需要從IP地址中的主機號部分借出一定的位,用它定義子網地址就是子網號。我就簡單一說,因爲這些概念比較簡單。
  (3)廣播地址:所謂廣播地址指同時向網上所有的主機發送報文,也就是說,不管物理網絡特性如何,internet網支持廣播傳輸。如136.78.255.255就是B類地址中的一個廣播地址,你將信息送到此地址,就是將信息送給網絡號爲136.78的所有主機。主機號全1的就是廣播地址,如我在樓下大吼一聲,整棟樓都能聽到。而相對的單播地址就是,我上門去找你聊天,其他人聽不到。這個比喻夠了吧,相當於咱村的大喇叭,有什麼事兒,村長一說,都知道了。
(二)具體例子:
  題目:
地址172.16.10.33 子網掩碼255.255.255.224的子網號和廣播地址是什麼?
  注意:有的地方會把這兩個地址寫成172.16.10.33/27(說明:前面是IP地址,斜槓後邊的數字是表示子網掩碼中1的個數,這個你可以把十進制255.255.255.244化成二進制,1的個數一目瞭然。)
  開始動手:
(1)
先判斷IP地址是屬於哪類(是A、B、C哪個?)很顯然,從172得知是B類。就可知道默認的子網掩碼是255.255.0.0,就可以知道從主機號借了11位
(2)把172.16.10.33和255.255.255.224化成二進制形式如下:
  IP地址: 10101100,00010000,00001010,00100001
  子網掩碼:11111111,11111111,11111111,11100000
(3)二者相與得到:
        10101100,00010000,00001010,00100000
   將其轉化爲十進制爲:
  172.16.10.32(這就是傳說中的子網號)
(4)將IP地址的主機號全置爲1即:
        10101100,00010000,00001010,00111111
  將其轉化爲十進制爲:
  172.16.10.63(這就是傳說中的廣播地址)
發佈了27 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章