トリビアル
トリビアル
TFTPとは	
•  トリビアル・ファイル転送プロトコル	
  
•  ディスクレスシステム起動時に使用	
  
–  ディスクレスシステム(シンクライアント)	
  
必要なシステムや記憶装置を全てサーバに	
  
依存しているシステム	
  
•  FTP は TCP	
  
•  TFTP は UDP	
  
•  シンプルで軽いプロトコル	
  
–  ROMに載せられる
プロトコル	
RRQ	
WRQ
TFTP 読出/書込要求メッセージ	
	
  
	
  
•  モードには	
  “netascii”	
  か	
  “octet” か “mail”	
  が ASCII コードで入る	
  
–  netascii	
  :	
  FTP でいう ASCII モード 受信側が文字コードを変換する	
  
–  octet	
  :	
  FTP でいう Binary モード 送信元のフォーマットで転送される	
  
–  mail	
  : ファイル名にメール受信者名を使用 書込要求で転送開始	
  
OPCODE	
  
1	
  =	
  RRQ	
  
2	
  =	
  WRQ	
  
ファイル名	
   0	
   モード	
   0	
  
(2バイト)	
 (可変長)	
 (1バイト)	
 (可変長)	
 (1バイト)
TFTP データ転送メッセージ	
•  TFTP で転送されるデータは512バイトごとの	
  
ブロックに分割される	
  
•  分割されたブロックはブロック番号と共に	
  
転送される	
  
	
  
OPCODE	
  
3	
  = データ	
  
ブロック番号	
   データ	
  
(2バイト)	
 (2バイト)	
 (0-­‐512バイト)
TFTP 確認応答メッセージ	
•  受信側は受信したデータのブロック番号を返す	
  
•  1つ送られてきたら1つ返す	
  
–  ウィンドウ制御は行わない	
  
	
  
OPCODE	
  
4	
  =	
  ACK	
  
ブロック番号	
  
(2バイト)	
 (2バイト)
ストップ・アンド・ウェイト・プロトコル	
RRQ
ストップ・アンド・ウェイト・プロトコル	
Data1
ストップ・アンド・ウェイト・プロトコル	
ACK1
ストップ・アンド・ウェイト・プロトコル	
Data2
ストップ・アンド・ウェイト・プロトコル	
ACK2
ストップ・アンド・ウェイト・プロトコル	
Data	
  n	
512バイト未満	
終わった
ストップ・アンド・ウェイト・プロトコル	
ACK	
  n
TFTP 書込要求メッセージの場合	
•  クライアントが WRQ を送る	
  
•  サーバはブロック番号0のACKを返す	
  
•  クライアントはブロック番号1で	
  
データ転送開始
ポート	
69番	
  
開けてます	
 69宛:データくれよ	
4001番です	
  
データあげる	
 4001宛:ありがと	
69宛:データくれよ	
4002宛:ありがと	
4002番です	
  
データあげる
例	
bsdi % ftfp svr4
tftp> get test1.c
Received 962 bytes int 0.3 seconds
tftp> quit
bsdi % ls –l test1.c
-rw-r—r– 1 rstevens staff 914 Mar 20 11:41 test1.c
bsdi % wc –l test1.c
48 test1.c
セキュリティ	
•  セキュリティに関する仕様はない	
  
•  特定のディレクトリだけにアクセス許可したり	
  
まとめ	
•  ROM にフィットするシンプルなプロトコル	
  

Arch TCP/IP TFTP