freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

一個基于linux的ftp系統(tǒng)畢業(yè)論文(編輯修改稿)

2024-12-18 16:04 本頁面
 

【文章內(nèi)容簡介】 FTP 服務(wù)器的時候,我們就需要根據(jù)用戶的類型,對用戶進行歸類。默認(rèn)情況下, Vsftpd 服務(wù)器會把建立的所有帳戶都?xì)w屬為 Real 用戶。但是,這往往不符合企業(yè)安全的需要。因為這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間 帶來一定的安全隱患。所以,企業(yè)要根據(jù)實際情況,修 改用戶所在的類別。 TCP/IP 協(xié)議中, FTP 標(biāo)準(zhǔn)命令 TCP 端口號為 21, Port 方式數(shù)據(jù)端口為 20。 FTP協(xié)議的任務(wù)是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺計算機通過 ftp協(xié)議對話,并且能訪問 Inter, 你可以用 ftp 命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細(xì)微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。 ASCII 傳輸模式和二進制數(shù)據(jù)傳輸模式。 1). ASCII 傳輸方式:假 定用戶正在拷貝的文件包含的簡單 ASCII 碼文本,如果在遠(yuǎn)程機器上運行的不是 UNIX,當(dāng)文件傳輸時 ftp 通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。 2).二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應(yīng)的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh 以二進制方式傳送可執(zhí)行文件到 Windows 系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。 如果你在 ASCII 方式下傳輸二進制文件,即使不需要也仍會轉(zhuǎn)譯。這會使傳輸稍微變慢 ,也會損壞數(shù)據(jù),使文件變得不能用。(在大多數(shù)計算機上, ASCII 方式一般假設(shè)每一字符的第一有效位無意義,因為 ASCII 字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和數(shù)據(jù)文件都是有效的。 FTP 支持兩種模式,一種方式叫做 Standard (也就是 PORT 方式,主動方式 ),一種是 Passive (也就是 PASV,被動方式 )。 Standard模式 FTP的客戶端發(fā)送 PORT 命令到 FTP服務(wù)器。 Passive模式 FTP的客戶端發(fā)送 PASV命令到 FTP Server。 Port模式 FTP 客戶端首先和 FTP 服務(wù)器的 TCP 21 端口建立連接,通過這個通道發(fā)送命令,客戶端需要接收數(shù)據(jù)的時候在這個通道上發(fā)送 PORT 命令。 PORT 命令包含了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時候,服務(wù)器端通過自己的 TCP 20 端口連接至客戶端的指定端口發(fā)送數(shù)據(jù)。 FTP server 必須和客戶端建立一個新的連接用來傳送數(shù)據(jù)。 Passive 模式在建立控制通道的時候和 Standard 模式類似,但建立連接后發(fā)送的不是 Port 命 令,而是 Pasv 命令。 FTP 服務(wù)器收到 Pasv 命令后,隨機打開一個高端端口(端口號大于 1024)并且通知客戶端在這個端口上傳送數(shù)據(jù)的請求,客戶端連接 FTP 服務(wù)器此端口,然后 FTP 服務(wù)器將通過這個端口進行數(shù)據(jù)的傳送,這個時候 FTP server 不再需要建立一個新的和客戶端之間的連接。 很多防火墻在設(shè)置的時候都是不允許接受外部發(fā)起的連接的,所以許多位于防火墻后或內(nèi)網(wǎng)的 FTP 服務(wù)器不支持 PASV 模式,因為客戶端無法穿過防火墻打開 FTP服務(wù)器的高端端口;而許多內(nèi)網(wǎng)的客戶端不能用 PORT 模式登陸 FTP 服務(wù)器,因為從 服務(wù)器的 TCP 20 無法和內(nèi)部網(wǎng)絡(luò)的客戶端建立一個新的連接,造成無法工作。 1) .USER: 指用戶名 , 它帶一個參數(shù) 。 格式為 : USER username 在登錄 ftp 服務(wù)器的時候先用此命令告訴服務(wù)器那個用戶要登錄此服務(wù)器。如: USER root 此命令是以 root 用戶登錄服務(wù)器。 2) .PASS: 指明與用戶名對應(yīng)的密碼 , 帶一個參數(shù) 。 格式為 : PASS password 當(dāng)服務(wù)器收到來自客戶端的 USER 命令后,檢查其合法后就像客戶端發(fā)提示信息要求輸入密碼,客戶端這是就可以 向服務(wù)器發(fā)送 PASS命令加上 root 用戶的密碼。服務(wù)器檢查密碼的正確后,客戶端就與服務(wù)器連接起來了。 3) .LIST: [pathname] 參數(shù)表示要列文件的目錄 路 徑名 , 若不帶參數(shù) , 剛使用當(dāng)前目錄 。此命令會把 pathname 路徑下的文件或目錄按照一定的格式發(fā)送給客戶端讓客戶端顯示出來。 4) .QUIT: 由于要求傳輸文件時有登陸的過程 , 斷開連接到應(yīng)有相應(yīng)的注銷過程 。 這個命令就是從服務(wù)器上注銷的過程 , 如果服務(wù)器收到該命令時 , 沒有文件正在傳達(dá)室輸 , 剛斷開控制 , 連接如果有文件正在傳輸 , 剛控制連接仍然保持 , 直到收 到有關(guān)傳輸結(jié)果的應(yīng)答時 , 服務(wù)器才斷開連接 。 5) .LOAD: 取得文件這條命令是 FTP 事務(wù)是用得最多的命令 , 在請求下載文件時都有會用到 。 6) .UPDATE: 存放文件 。 7) .WYWT: 請求服務(wù)器返回系統(tǒng)類型 。 8) .TYPE: 表示文件類型,共有四種,所帶參數(shù)也有四種, A, E , I , L 分別對應(yīng) ASCII, EBCDIC, IMAGB 和 LOCAL 類型 。 格式為 : TYPE type 9).CMD: 請求更改服務(wù)器的當(dāng)前目錄這各命令帶一個參數(shù),參數(shù)表示要更改的目錄名 。 10).DELE:請求刪除服務(wù)器上的文件 。 11).MKO:請求在服務(wù)器上新建一個目錄,這條命令帶一個參數(shù)指明要建立的目錄名 。 12) . PORT: 指明數(shù)據(jù)連接的端口號 , 帶六個參數(shù) 。 格式為 : PORT h1, h2, h3, h4, p1, p2 13) .CAT:命令顯示某一個文件的內(nèi)容。 使用格式: CAT filename 打印 filename 文件向終端。 14).TOUCH:請求在服務(wù)器上新建一個 文件 ,這條命令帶一個參數(shù)指明要建立的 文件名 。 使用格式: TOUCH filename 15).PWD: 在服務(wù)器上顯示當(dāng)前工作目錄。 16).MV: 請求在服務(wù)器上為 某一個指定的文件或文件夾重命名。 17).CP:請求在服務(wù)器上 拷貝 一個目錄 或文件。 使用格式: CP spathname dpathname 第二章 開發(fā)環(huán)境及工具介紹 C 語言和 socket 機制 C 語言是在 70年代初創(chuàng)建的一種計算機語言,它既有匯編語言可以直接訪問機器硬件的功能,又具有高級語言面向用戶、可讀性好和易于記憶的優(yōu)點,因此受到廣大程序員的歡迎。 C 是一種結(jié)構(gòu)化的程序設(shè)計語言。它由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成,便于實現(xiàn)由上到下、逐步細(xì)化的結(jié)構(gòu)化程序設(shè)計。因此,用 C編寫的程序具有容易理 解和便于維護的優(yōu)點。 C 語言的函數(shù)結(jié)構(gòu)有利于程序分割為相對獨立的功能模塊,為大型軟件實現(xiàn)模塊化的程序設(shè)計創(chuàng)造了條件 。該程序是在 linux 系列下的 C語言開發(fā),主要利用 linux C 下的 API Socket 編程。 Socket 通訊機制是一種較原始的通訊機制,通過 Socket 的數(shù)據(jù)表現(xiàn)出來的形式是原始字節(jié)流信息,通訊雙方只要在此基礎(chǔ)上按照雙方約定方式進行數(shù)據(jù)的格式化和解析處理工作,這樣才能完成具體的應(yīng)用,即實現(xiàn)某種協(xié)議的過程。 Socket 可以看成是在兩個程序間進行通訊連接的兩個端點,一個程序?qū)⒁欢涡畔懭胍粋€Socket 中,該 Socket 將這段信息發(fā)送給另外一個 Socket,以便使這段信息能傳達(dá)到其他程序中 。 Socket 有兩種主要的工作方式:有連接的和無連接的。有連接方式如流通訊;無連接方式如數(shù)據(jù)包方式。有連接的 Socket 操作就 像 一部電話。它們必須建立一個連接和一個呼叫。所有的事情在到達(dá)時的順序與它們出發(fā)時的順序一樣 。 socket 的英文原義是 “ 孔 ” 或 “ 插座 ” 。作為 4BDS UNIX 的 進程通信 機制,取后一種意思。通常也稱作 套接字 ,用于描述 IP 地址和端口,是一個通信鏈的句柄。在 Inter 上的主機一般運行了多個服務(wù)軟件,同時提供幾種服務(wù)。每種服務(wù)都打開一個 Socket,并綁定到一個端口上,不同的端口對應(yīng)于不同的服務(wù)。 Socket正如其英文原意那樣,象一個多孔插座。一臺主機猶如布滿各種插座的房間,每個插座有一個編號,有的插座提供 220 伏交流電, 有的提供 110 伏交流電,有的則提供有線電視節(jié)目。 客戶軟件將插頭插到不同編號的插座,就可以得到不同的服務(wù)。 socket 非常類似于電 話插座。以一個國家級電話網(wǎng)為例。電話的通話雙方相當(dāng)于相互通信的 2個進程,區(qū)號是它的網(wǎng)絡(luò)地址;區(qū)內(nèi)一個單位的 交換機 相當(dāng)于一臺主機 ,主機分配給每個用戶的局內(nèi)號碼相當(dāng)于 socket 號。任何用戶在通話之前,首先要占有一部電話機,相當(dāng)于申請一個 socket;同 時要知道對方的號碼,相當(dāng)于對方有一個固定的 socket。然后向?qū)Ψ綋芴柡艚校喈?dāng)于發(fā)出連接請求(假如對方不在同一區(qū)內(nèi),還要撥對方區(qū)號,相當(dāng)于給出網(wǎng)絡(luò)地址)。對方假如在場并空閑(相當(dāng)于通信的另一主機開機且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當(dāng)于連接成功。雙方通話的過程,是一方向電話機發(fā)出信號和對方從電話機接收信號的過程,相當(dāng)于向 socket 發(fā)送數(shù)據(jù)和從 socket 接收數(shù)據(jù)。通話結(jié)束后,一方掛起電話機相當(dāng)于關(guān)閉 socket,撤消連接。 所謂 socket 通常也稱作 套接字 ,應(yīng)用程序通常通過 套接字 向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。以 , Socket和 ServerSocket類庫位于 java .包中。 ServerSocket 用于服務(wù)器端, Socket 是建立網(wǎng)絡(luò)連接時使用的。在連接成功時,應(yīng)用程序兩端都會產(chǎn)生一個 Socket 實例,操作這個實例,完成所需的會話。對于一個網(wǎng)絡(luò)連接來說,套接字是平等的,并沒有差別,不因為在服務(wù)器端或在 客戶端 而產(chǎn)生不同級 別。不管是 Socket 還是 ServerSocket 它們的工作都是通過SocketImpl 類及其子類完成的。 重要的 Socket API: java . 繼承于 ,有八個構(gòu)造器,其方法并不多,下面介紹使用最頻繁的三個方法,其它方法大家可以見 文檔。 Accept 方法用于產(chǎn)生 阻塞 ,直到接受到一個連接,并且返回一個客戶端的Socket 對象 實例。 阻塞 是一個術(shù)語,它使程序運行暫時 停留 在這個地方,直到一個會話產(chǎn)生,然后程序繼續(xù);通常 阻塞 是由循環(huán)產(chǎn)生的。 getInputStream 方法獲得網(wǎng)絡(luò)連接輸入,同時返回一個 InputStream 對象實例。 getOutputStream 方法連接的另一端將得到輸入,同時返回一個 OutputStream 對象實例。注意:其中g(shù)etInputStream 和 getOutputStream 方法均可能會產(chǎn)生一個 IOException,它必須被捕獲,因為它們返回的流對象,通常都會被另一個流對象 使用。 根據(jù)連接啟動的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個步驟:服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。 服務(wù)器監(jiān)聽:是服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡(luò)狀態(tài)。 客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號,然后就向服務(wù)器端套接字提出連接請求。 連接確認(rèn):是指當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的 連接請求,它就響應(yīng)客戶端套接字的請求,建立一個新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求。 ServerClient 模型的程序 開發(fā)原理: 服務(wù)器,使用 ServerSocket 監(jiān)聽指定的端口,端口可以隨意指定(由于 1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于 1024 的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉 連接。 客戶端,使用 Socket 對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉 Socket。客戶端不需要指定打開的端口,通常臨時的、動態(tài)的分配一個 1024 以上的端口。 Socket 接口是 TCP/IP 網(wǎng)絡(luò)的 API, Socket 接口定義了許多函數(shù)或例程, 程序員 可以用它們來開發(fā) TCP/IP 網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué) Inter 上的 TCP/IP 網(wǎng)絡(luò)編程 ,必須理解 Socket 接口。 Socket 接口設(shè)計者最先是將接口放在 Unix 操作系統(tǒng)里面的。如果了解 Unix 系統(tǒng)的輸入和輸出的話,就很容易了解 Socket 了。網(wǎng)絡(luò)的Socket 數(shù)據(jù)傳輸是一種特殊的 I/O, Socket 也是一種 文件描 述符 。 Socket 也具有一個類似于打開文件的函數(shù)調(diào)用 Socket(),該函數(shù)返回一個整型的 Socket 描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該 Socket 實現(xiàn)的。 ServerClient 模型 : 常用的 Socket 類型 有兩種:流式 Socket( SOCK_STREAM)和數(shù)據(jù)報式 Socket( SOCK_DGRAM)。流式是一種面向連接的 Socket,針對于面向連接的 TCP 服務(wù)應(yīng)用;數(shù)據(jù)報式 Socket 是一種無連接的 Socket,對應(yīng)于無連接的 UDP 服務(wù)應(yīng)用。 Socket 為了建立 Socket,程序可以調(diào)用 Socket 函數(shù),該函數(shù)返回一個類似于文件描述符的句柄。 socket 函數(shù)原型為: int socket(int domain,int type,int protocol)。domain 指明所使用的協(xié)議族,通常為 PF_INET, (其與 addrinfo 里的 AF_INET 在現(xiàn)在看來是相同的。只是歷史上人們曾構(gòu)想將 AF(地址家族 address family)與 PF(protocol family 協(xié)議家族 )分開,但實際上這種區(qū)分并未真正推廣,所以現(xiàn)在 AF_INET 和 PF_INET 具有相同的意義 。其中 AF_INET 是基于 IPv4 而 PF_INET 基于 IPv6)表示互聯(lián)網(wǎng)協(xié)議族( TCP/IP 協(xié)議族 ); type 參數(shù) 指定 socket 的類型: SOCK_STREAM 或 SOCK_DGRAM,Socket 接口還定義了原始 Socket( SOCK_RAW),允許程序使用低層協(xié)議; protocol通常賦值 0。 Socket()調(diào)用返回一個整型 socket 描述符,你可以在后面的調(diào)用使用它。 Socket 描述符是一個指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的 指針 ,它指向描述符表入口。調(diào)用Socket 函數(shù)時, socket 執(zhí)行體將建立一個 Socket,實際上 建立一個 Socket意味著為一個 Socket 數(shù)據(jù)結(jié)構(gòu)分配存儲空間。 Socket 執(zhí)行體為你管理描述符 表。兩個網(wǎng)絡(luò)程序之間的一個網(wǎng)絡(luò)連接包括五種信息:通信協(xié)議、本地 協(xié)議地址 、本地主機端口、遠(yuǎn)端 主機地址 和遠(yuǎn)端協(xié)議端口。 Socket 數(shù)據(jù)結(jié)構(gòu)中包含這五種信息。 socket在測量軟件中的使用也很廣泛 。 Linux 支持多種類型的套接口,也叫做套接口尋 址族,這是因為每種類型的套接口都有自己的尋址方法。 Linux 支持以下的套接口類型: UNIX UNIX 域套接口 INET Inter 地址族 TCP/IP 協(xié)議支持通信。 AX25 Amateur radio X25 IPX Novell IPX APPLE TALK Appletalk DDP X25 X25 這些類型的套接口代表各種不同的連接服務(wù)。 Linux 的 BSD 套接口支持下面的幾種套接口類型: 流式( str
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1