tcp/ip學習筆記(八)
一、ftp:檔案傳輸協議
1、 ftp協議:採用2個tcp連線來傳輸乙個檔案。
(1) 控制連線:
控制連線通常以客戶伺服器方式建立。控制連線始終等待客戶與伺服器的通訊,該連線將命令從客戶端傳給伺服器,並傳回伺服器的應答。
(2) 資料連線:
該連線用於資料傳輸。
2、 資料表示:
(1) 檔案型別:
◆ ascii檔案:預設以nvt ascii形式傳輸。這要求傳送方將本地文字檔案轉換為nvt ascii碼,而接收方將nvt ascii碼再還原為本地文字檔案。用nvt asvcii碼傳輸的每一行都以乙個回車和乙個換行結束。
◆ ebcdic檔案:要求兩端都是ebcdic系統。
◆ 二進位制檔案型別:資料傳送乙個連續的位元流,通常用於傳輸二進位制檔案。
◆ 本地檔案型別:再具有不同位元組大小的主機之間傳輸二進位制檔案。
(2) 格式控制,只對ascii和ebcdic檔案型別有效。
◆ 非列印(預設):檔案中不含垂直格式資訊。
◆ 遠端登入格式控制:檔案含有向印表機解釋的遠端登入垂直格式控制。
◆ fortran回車控制:每行首字元是fortran格式控制符。
(3) 結構:
◆ 檔案結構(預設):檔案被認為是乙個連續的位元組流,不存在內部的檔案結構。
◆ 記錄結構:該結構只用於文字檔案。
◆ 頁結構:每頁都帶有頁號傳送,以便收方能隨機儲存各頁。
(4) 傳輸方式
◆ 流方式(預設):檔案以位元組流傳輸,對於檔案結構,傳送方在檔案尾提示關閉資料連線。對於記錄結構,有專用的兩位元組序列碼標記記錄結束和檔案結束。
◆ 塊方式:檔案以一系列塊來傳輸,每塊前面都帶有乙個或多個首部位元組。
◆ 壓縮方式:
3、 ftp命令:
命令和應答在客戶和伺服器的控制連線上以nvt ascii形式傳送,這要求在每行結尾都要返回cr/lf。
ftp命令大家都很熟悉,這就不介紹了。
4、 ftp應答:
應答都是ascii碼形式的3位數字,並跟有報文選項。一些典型的應答:
◆ 125:資料連線已開啟,傳輸開始
◆ 200:就緒
◆ 214:幫助報文
◆ 331:使用者名稱就緒,要求輸入口令
◆ 425:不能開啟資料連線
◆ 452:錯寫檔案
◆ 500:未知語法錯誤
◆ 501:無效引數
◆ 502:未實現的mode型別
5、 連線管理:
資料連線有3大用途:
(1) 從客戶向伺服器傳送乙個檔案
(2) 從伺服器向客戶傳送乙個檔案
(3) 從伺服器向客戶傳送檔案或目錄列表。
每乙個資料連線對傳輸乙個檔案或目錄序列都要建立乙個新的連線。
(1) 客戶發出命令要求建立資料連線
(2) 客戶在客戶主機上未資料連線選擇乙個臨時埠號
(3) 客戶使用port命令從控制連線上把埠號發給伺服器。
(4) 伺服器在控制連線上接收埠號,並向客戶端主機上的埠發出主動開啟,伺服器的資料連線使用埠20。
二、**tp:簡單郵件傳送協議
1、**tp協議:
用tcp進行的郵件交換是由報文傳送**mta(message transfer agent)完成的。兩個mta之間用nvt ascii進行通訊,客戶向伺服器發出命令,伺服器用數字應答碼和可選的字串進行響應。
常見的**tp命令,其中只有5個**tp命令用於傳送郵件:hello、mail、rctp、data和quit。
helo:標識自己
mail:啟動使用者**
rcpt:標識接收方
data:郵件報文內容
quit:退出
rset:異常中止當前的郵件事務並使兩端復位
noop:強迫伺服器響應乙個ok應答碼,不做任何事。
2、信封、首部和正文
(1) 信封:由mta用來交付。
mail from:[email protected]
rcpt to:[email protected]
(2) 首部:由使用者**使用。共有9個字段:received、message_id、from、data、reply-to、x-phone、x-mailer、to、subject。每個首部欄位都包含乙個名、緊跟乙個冒號,接著是字段值。
(3)正文:是傳送給接收使用者報文的內容。當用data命令傳送時,先傳送首部,緊跟乙個空行,然後是正文。用data傳送的各行都必須小於1000位元組。
使用者接收正文部分,加上一些首部字段,並把結果傳給mta。mta加上一些首部字段,加上信封,並把結果發給另以mta。所有這一些都以nvt ascii格式傳送。
3、擴充的**tp:
要使用e**tp,首先通過ehlo命令而不是helo命令啟動與伺服器的會話。它會顯示擴充命令:expn、size、help、8bitmime、xadr等。size命令是讓客戶在mail from命令中以位元組的多少指定報文的大小,這樣伺服器可以在客戶開始傳送報文之前驗證它是否接收該長度的報文。8bitmime允許客戶把關鍵字body加到mail from命令中,指定正文中是否包含nvt ascii(預設)或8位資料。除非客戶收到伺服器響應ehlo命令發來的8bitmime關鍵字,否則禁止客戶傳送任何非nvt ascii字元。
(1) 首部變化:非ascii字元
用途主要是為了允許傳送方名、接收方名以及主題中使用其他的字元。
首部欄位中可以包含編碼字(coded word),其格式如下:
=?charset?encoding?encoded-text?=
TCP IP學習筆記(八)
tcp ip學習筆記 八 一 ftp 檔案傳輸協議 1 ftp協議 採用2個tcp連線來傳輸乙個檔案。1 控制連線 控制連線通常以客戶伺服器方式建立。控制連線始終等待客戶與伺服器的通訊,該連線將命令從客戶端傳給伺服器,並傳回伺服器的應答。2 資料連線 該連線用於資料傳輸。2 資料表示 1 檔案型別 ...
tcp ip 學習筆記
最近學習網路程式設計,看了周立發老師的blog 也模仿寫了乙個檔案管理併發伺服器。選擇多程序併發伺服器 技術難點 建立tcp 伺服器 fork 產生新的處理程序 使用getopt 函式使伺服器配置引數化,使用同一的linux風格 設定埠復用,瀏覽檔案系統,思路 1 首先建立乙個被動套接字 設定套接字...
Tcp ip學習筆記
分層 網路協議通常分不同層次進行開發,每一層分別負責不同的通訊功能。乙個協議族,比如t c p i p,是一組不同層次上的多個協議的組合。t c p i p通常被認為是乙個四層協議系統,如圖1 1所示。每一層負責不同的功能 1 鏈路層,有時也稱作資料鏈路層或網路介面層,通常包括作業系統中的裝置驅動程...