?? rfc60.txt
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:梁征強(Zinux lpoo@163.com)
譯文發布時間:2002-3-2
版權:本中文翻譯文檔版權歸中國互動出版網所有。可以用于非商業用途自由轉載,但必須保留本文檔的翻譯及版權信息。
Network Working Group R. Kalin
Request for Comments: 60 MIT
Category: Experimental 13 July 1970
A Simplified NCP Protocol
Status of this Memo
This memo defines an Experimental Protocol for the Internet
community. This memo does not specify an Internet standard of any
kind. Discussion and suggestions for improvement are requested.
Distribution of this memo is unlimited.
摘要
本RFC定義了一則新的NCP協議,該協議十分簡單,因此能夠在小型計算機上實現。但是該協議又可以被擴展而高效的運行在大型的分時機器上。因為在最壞的情況下,存儲需求是可以被預見到,因此該協議的一種保守的實現方法是不考慮復雜的資源分配和存儲控制過程。協議定義了通用的的錯誤恢復過程。
概要和綜述
該協議有一個很重要的假設,那就是堅持所有的用戶到用戶的連接是雙向的。對于熟悉通信理論的人來說,這顯得最合理不過了。所有的通信需要不斷循環的信息流。將消息和其相應的應答信息分離開來,那會使協議不必要的復雜起來,并且簡單的流控制機制也會由此而變得異常復雜。
人們建議用一個套接口數對來區分一個雙向連接或叫一個雙工鏈路,其中每個數代表一個端。這是目前需要的數目的一半。與連接有關的是一些“箱子”或叫消息容器。這些箱子攜帶著網絡消息在鏈路中從一端傳送到另一端,并且不斷反復往來。鏈路的每一端都分配有緩沖區,用來保存箱子及其攜帶的消息。在最壞的情況下,需要的緩沖區數與網絡中所流通著的箱子數相等,也就是和鏈路的“容量”一致。
細節
一個消息緩沖有四種相互循環轉換的狀態,他們是:
1) 空狀態,
2) 充滿等待卸載的滿載著消息的箱子
3) 充滿著空箱子,以及
4) 充滿等待發送的滿載著消息的箱子
狀態的相互轉換對應著消息的到達,消息的刪除,消息的插入以及消息的傳送。
一個NCP必須滿足以下條件:
1)能通過控制鏈路與外部主機做初始的聯系,而且在必要的時候刪除以前系統建立起的鏈路。
2)能夠創建用戶到用戶的鏈路。
3)能夠通過這些鏈路與用戶交互。
4)能夠刪除用戶到用戶的鏈路。
上述四個功能中的第一個不應該在這里進行討論,但是必須指出,如果不作最大的消息傳送延遲的假設,那么就不能解決該功能的關鍵問題。因為在ARPA網絡中不存在著消息中轉時間,因此選擇的方法就不具有很高的可靠性。從實現一個最小化的NCP角度出發,下面先討論其它的三個功能。如果用于更大型的機器,則需要進一步的擴充和改進。
任何的NCP必須能在當地用戶進程和遠程進程間建立起一條雙工鏈路。目前的協議通過將一個任意的RFC數插入隊列,等待用戶檢查隊列來決定他希望和誰通信來實現的。這樣保證不了用戶何時會察看隊列,也沒有辦法限制隊列的大小。溢出錯誤消息在這種情況下就會失效,因為它承認RFC將只能被在發送一次。然而情況也不是那么的糟糕。下面的網絡會話會告訴我們如何不使用隊列和不依賴用戶進程來實現連接。
假設一個當地進程和一個遠程進程希望建立一個新的連接。遠程進程查詢它的NCP來偵聽連接請求并且將它的套接口號告訴其主機。它能隨意的給出兩個套接口號。當地進程則會要求其NCP發送一個雙工鏈路請求(RFDL)。其中確定了該鏈路的兩個套接口號。
當地 NCP通過控制鏈路按照以下格式發送一個RFDL:
RFDL<my socket> <your socket> <max number buffers> <spare>
第三個參數通常由當地NCP給定,它表明了NCP將為這個雙工鏈路所可能分配的最大緩沖區數。如果緩沖區位于用戶存儲器中,則該數可以通過用戶的NCP調用給出。
RFDL在遠程主機被接收,遠程NCP將<my socket>和<your socket>與由沒被匹配的偵聽提交給它的套接口號相比較。對于那些只給出一個套接口號的偵聽來說,只需要匹配<your socket>就可以了。如果給出了兩個套接口號,那么這兩個套接口號都必須被匹配。如果產生了一個匹配,那么一個如下格式的確認消息就會被NCP發送回去:
ACDL <your socket> <my socket> <number buffers> <spare>
參數<number buffers> 的取值為前面提到的RFDL中的<max number buffers>和遠程NCP的消息緩沖區數這兩個中的較小值。如果套接口號不能被匹配,那么就返回一個ACDL的錯誤消息,其中<number buffers>值為零。需要注意的是,RFDL機制與RFC機制類似,只是在前者中,隊列大小為1并且是否同意建立連接完全由NCP來決定。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -