遠端登入的軟體方式實現遠端登入

2021-12-19 11:07:26 字數 4751 閱讀 8815

1樓:休書桃

鑑於使用者對於遠端登入的需求和使用者偏於應用型的特徵,很多軟體公司研發了遠端共享和遠端控制軟體來實現遠端登入,比如像國外的mikogo,teamviewer,netviewer、pcanywhere,以及國內的網路人遠端控制軟體、花生殼等,而windows系統遠端桌面也能實現相似的操作。

通過軟體方式實現遠端登入,首先需要安裝遠端登入軟體,多數情況需要兩個甚至多個終端同時安裝。其次,正常情況下伺服器可以做到24小時工作,但常常禁止安裝此類遠端控制軟體,這就意味著可能在利用軟體進行遠端登入公司伺服器的時候需要同時開啟兩台機器和一台伺服器,所以常常在移動辦公中,需要同時開啟公司電腦以作為中轉,通過遠端操控公司電腦實現遠端登入。現在遠端控制軟體已經日漸專業化、品牌化,在操作性和安全性方面都有很大的進步,網路人等遠端控制還採用u盾加密來保護遠端控制的安全。

使用軟體進行登入的優點就是簡單易學,操作方便,體積小,綠色,響應速度快,畫質清晰等特點,比如像mikogo本身只有1.6mb, 國產的網路人遠端控制軟體也只是1m左右,適用於著重應用的使用者。

遠端登入逐漸被人們認識和廣泛地應用於學習,工作和生活中,更多、更方便的遠端登入方式也會慢慢豐富市場,滿足各種不同階層、不同目的的使用者需求。

應用程序的啟動

rlogin的客戶程序和伺服器程序使用乙個tcp連線。當普通的tcp連線建立完畢之後,客戶程序和伺服器程序之間將發生下面所述的動作。

1)客戶程序給伺服器程序傳送4個字串:(a)乙個位元組的0;(b)使用者登入進客戶程序主機的登入名,以乙個位元組的0結束;(c)登入伺服器程序端主機的登入名,以乙個位元組的0結束;(d)使用者終端型別名,緊跟乙個正斜槓「/」,然後是終端速率,以乙個位元組的0結束。在這裡需要兩個登入名字,這是因為使用者登入客戶和伺服器的名稱有可能不一樣。

由於大多滿屏應用程式需要知道終端型別,所以終端型別也必須傳送到伺服器程序。傳送終端速率的原因是因為有些應用隨著速率的改變,它的操作也有所變化。例如vi編輯器,當速率比較小的時候,它的工作視窗也變小。

所以它不能永遠保持同樣大小的視窗。

2)伺服器程序返回乙個位元組的0。

3)伺服器程序可以選擇是否要求使用者輸入口令。這個步驟的資料互動沒有什麼非凡的協議,而被當作是普通的資料進行傳輸。伺服器程序給客戶程序傳送乙個字串(顯示在客戶程序的螢幕上),通常是password:。

假如在一定的限定時間內(通常是60秒)客戶程序沒有輸入口令,伺服器程序將關閉該連線。通常可以在伺服器程序的主目錄(homedirectory)下生成乙個檔案(通常叫.rhosts),該檔案的某些行記錄了乙個主機名和使用者名稱。

假如從該檔案中已經記錄的主機上用已經記錄的使用者名稱進行登入,伺服器程序將不提示我們輸入口令。但是很多關於安全性的文獻,如[curry1992],強烈建議不要採用這種方法,因為這存在安全漏洞。假如提示輸入口令,那麼我們輸入的口令將以明文的形式傳送到伺服器程序。

我們所鍵入的每個字元都是以明文的格式傳輸的。所以某人只要能夠擷取網路上的原始傳輸的分組,他就可以截獲使用者口令。針對這個問題,新版本的rlogin客戶程式,例如

4.4bsd版本的客戶程式,第一次採用了kerberos安全模型。kerberos安全模型可以避免使用者口令以明文的形式在網路上傳輸。當然,這要求伺服器程序也支援kerberos

([curry1992]具體描述了kerberos安全模型)。4)伺服器程序通常要給客戶程序傳送請求,詢問終端的視窗大小(將在後面解釋)。客戶程序每次給伺服器程序傳送乙個位元組的內容,並且接收伺服器程序的所有返回資訊。

同樣我們也採用了nagle演算法(在19.4節中曾經介紹),該演算法可以保證在速率較低的網路上,若干輸入位元組以單個tcp報文段傳輸。操作其實很簡單:

使用者鍵入的所有東西被傳送到伺服器,伺服器傳送給客戶的任何資訊返回到使用者的螢幕上。

另外,伺服器和客戶之間還可以互相傳送命令。在介紹這些命令之前,先介紹需要用到這些命令。

流量控制

預設情況下,流量控制是由rlogin的客戶程序完成的。客戶程序能夠識別使用者鍵入的stop和start的ascii字元(controls和controlq),並且終止或啟動終端的輸出。

假如不是這樣,每次我們為終止終端輸出而鍵入的control_s字元將沿網路傳輸到伺服器程序,這時伺服器程序將停止往網路上寫資料。但是在寫操作終止之前,伺服器程序可能已經往網路上寫了一視窗的輸出資料。也就是說,在輸出停止之前,成千上萬的資料位元組還將在螢幕上顯示。

圖26-3顯示了這個情況。

伺服器程序執行stop/start的情況

客戶的中斷鍵

當我們為中斷伺服器正在執行的程序而鍵入乙個中斷字元時(通常是delete或control_c),會發生和流量控制相同的問題。這個情況和圖26-3所示的類似,在一條tcp連線的管道上,從伺服器程序向客戶程序正在傳送大量的資料,而客戶程序同時在向伺服器程序傳輸中斷字元。而我們的本意是要中斷字元盡快終止某個程序,使螢幕上不再有任何響應輸出。

在流量控制和中斷鍵這兩種情況中,流量控制機制很少終止客戶程序到伺服器程序的資料流。這個方向僅僅包含我們鍵入的字元。所以對於從客戶輸出到伺服器的非凡輸入字元(control_s和中斷字元)不需要採用tcp的緊急方式(urgentmode)。

視窗大小的改變

假如是視窗風格的顯示方式,當應用程式在執行的時候,我們還可以動態地改變視窗的大小。一些應用程式(典型的如那些操作整個視窗的應用程式,如全屏編輯器)需要知道視窗大小的變化。目前大多數unix系統提供這種功能,可以告訴應用程式關於視窗大小的變化。

對於遠端登入這種情況,視窗大小的變化發生在客戶端,而執行在伺服器端的應用程式需要知道視窗大小變化。所以rlogin的客戶需要採用某些方法來通知伺服器視窗大小變化的情況以及新視窗的大小。

伺服器到客戶的命令

現在我們介紹通過tcp連線,rlogin伺服器程序可以傳送給客戶程序的4條命令。問題是只有一條tcp連線可供使用,所以伺服器程序必須給這些命令位元組做標記,使得客戶程序可以從資料流中識別出這些是命令,而不是顯示在終端上。所以我們將使用tcp的緊急方式(在20.

8節中曾經介紹)。

當伺服器要給客戶傳送命令時,伺服器就進入緊急方式,並且把命令放在緊急資料的最後乙個位元組中。當客戶程序收到這個緊急方式通知時,它從連線上讀取資料並且儲存起來,直到讀到命令位元組(即緊急資料的最後乙個位元組)。這時候客戶程序根據讀到的命令,再決定對於所讀到並儲存起來的資料是顯示在終端上還是丟棄它。

採用tcp緊急方式傳送這些命令的乙個原因是第乙個命令(「清倉輸出(flushoutput)」)需要立即傳送給客戶,即使伺服器到客戶的資料流被視窗流量控制所終止。這種情況下,即伺服器到客戶的輸出被流量控制所終止的情況是經常發生的,這是因為執行在伺服器的程序的輸出速率通常大於客戶終端的顯示速率。另一方面,客戶到伺服器的資料流很少被流量控制所終止,因為這個方向的資料流僅僅包含使用者所鍵入的字元。

客戶到伺服器的命令

對於客戶到伺服器的命令,只定義了一條命令,那就是:將當前視窗大小傳送給伺服器。當客戶的視窗大小發生變化時,客戶並不立即向伺服器報告,除非收到了伺服器發來的0x80命令(圖26-4中有介紹)。

同樣,由於只存在一條tcp連線,客戶必須對在連線上傳輸的該命令位元組進行標註,使得伺服器可以從資料流中識別出命令,而不是把它傳送到上層的應用程式中去。處理的方法就是在兩個位元組的0xff後面緊跟著傳送兩個非凡的標誌位元組。

對於視窗大小命令,兩個標誌位元組是ascii碼的字元『s』。之後是4個16bit長的資料(按網路位元組順序),分別是:行數(例如,25),每列的字元數(例如,80),x方向的畫素數量,y方向的畫素數量。

通常情況下,後兩個16bit是0,因為在rlogin伺服器程序呼叫的應用程式中,通常是以字元為單位來度量螢幕的,而不是畫素點。

上面我們介紹的從客戶程序到伺服器程序的命令採用帶內信令(in-bandsignaling),這是因為命令位元組和其他的普通資料一起傳輸。選擇0xff位元組來表示這個帶內信令的原因是:一般使用者的操作不會產生0xff這個位元組。

所以說rlogin是不完備的,假如我們採用某種方法,使得通過鍵盤就可以產生兩個連續的0xff位元組,而且正好在這之前是兩個ascii的『s』字元,那麼下面的8個位元組就會被誤認為是視窗大小了。

從伺服器到客戶的rlogin命令,由於大多數的api採用的技術叫做「帶外資料(out-of-banddata)」,所以我們就稱它為帶外信令(out-of-bandsignaling)。但是回憶一下在20.8節中對tcp緊急方式的討論,在那裡我們說緊急方式資料不是帶外資料,命令位元組是按照普通資料流進行傳輸的,非凡之處是採用了緊急指標。

既然帶內信令被用來傳輸從客戶到伺服器的命令,那麼伺服器程序必須檢查從客戶程序收到的每個位元組,看看是否有兩個連續的0xff位元組。但是對於採用帶外信令的、從伺服器傳輸到到客戶的命令,客戶程序不需要檢查收到的每個位元組,除非伺服器程序進入了緊急方式。即使在緊急方式下,客戶程序也僅僅需要留意緊急指標所指向的位元組。

而且由於從客戶程序到伺服器的資料流量和相反方向的資料流量之比是1:20,這就暗示帶內信令適合於資料量比較小的情況(從客戶到伺服器),而帶外信令適合於資料量比較大的情況(從伺服器到客戶)。

客戶的轉義符

通常情況下,我們向rlogin客戶程序鍵入的資訊將傳輸到伺服器程序。但是有些時候,我們並不需要把鍵入的資訊傳輸到伺服器,而是要和rlogin客戶程序直接通訊。方法是在一行的開頭鍵入代字元(tilde)「~」,緊跟著是下列4個字元之一:

1) 以乙個句號結束客戶程序。

2) 以檔案結束符(通常是control_d)結束客戶程序。

3) 以任務控制掛起符(通常是control_z)掛起客戶程序。

4) 以任務控制延遲掛起符(通常是control_y)來掛起僅僅是客戶程序的輸入。這時,不管客戶執行什麼程式,鍵入的任何資訊將由該程式進行解釋,但是從伺服器傳送到客戶的資訊還是輸出到終端上。這非常適合當我們需要在伺服器上執行乙個長時間程式的場合,我們既想知道該程式的輸出結果,同時還想在客戶上執行其他程式。

只有當客戶程序的unix系統支援任務控制時,後兩個命令才有效。

在家怎麼遠端登入公司電腦

如何在家遠端控制公司電腦?在家遠端登入公司電腦一般需要 了解公司組網環境。在公司主路由配置開放相關埠。知道公司電腦外網ip等資訊。其實如果無法了解這些資訊和許可權,最簡單的方式是把需要登入的公司電腦開機並執行類似teamviewer穿內網遠端工具服務端,家裡裝上客戶端就能家裡方便遠端了。你要登陸你們...

兩個不同區域網如何遠端登入遠端桌面

如你有固定的ip的,路由器 上 開端口 對映,對映到要遠端的機器的3389 埠就行了。沒有固定的ip的就稍麻煩一點,就用動態網域名稱轉換了。不同區域網是無法遠端的,遠端前提是要有網路連線,同處乙個區域網可以遠端控制 這是屬於黑客技術的範疇了。兩個不同的區域網的計算機如何遠端桌面連線 windows自...

win10為什麼遠端桌面登入不成功

遠端桌面連過去報如下錯誤,反正就是連線不上遠端桌面的埠,系統和裝置肯定是好的,我從虛擬機器管理器連上槓槓的。網管的兄弟賭咒說沒調整過安全策略,只好自身查原因了,小編仔細看了配置,突然發現該機器的網路位置變成了公用,在win10防火牆設定 專用網路是未連線,而公用網路是有1個活動連線。win10的網路...