SlideShare a Scribd company logo
1 of 22
Download to read offline
pasora
BOOTP とは	
•  ディスクレスシステムが起動時に	
  
IP アドレスを決定する方法	
  
•  UDP を使用し TFTP と連携する
BOOTP パケット形式	
IP ヘッダ	
   UDP ヘッダ	
   BOOTP 要求/応答	
  
(20バイト)	
 (8バイト)	
 (300バイト)
BOOTP	
  要求/応答形式	
•  オペコード:8bit	
  
– 1	
  =	
  要求 2	
  = 応答	
  
•  ハードウェアタイプ:8bit	
  
– 1	
  =	
  Ethernet	
  
•  ハードウェアアドレス長:8bit	
  
– Ethernet は 6
BOOTP	
  要求/応答形式	
•  ホップカウント:8bit	
  
•  トランザクション ID:32bit	
  
•  秒数:16bit	
  
– 指定秒数反応なしなら	
  
サーバダウンと判断	
  
•  未使用:16bit	
  
BOOTP	
  要求/応答形式	
•  クライアント IP アドレス:32bit	
•  ユーザ	
  IP アドレス:32bit	
•  サーバ	
  IP アドレス:32bit	
•  ゲートウェイ	
  IP アドレス:32bit
BOOTP	
  要求/応答形式	
•  クライアント・ハードウェア・	
  
アドレス:16Byte	
  
•  サーバ・ホスト名:64Byte	
  
•  起動ファイル名:128Byte	
  
•  ベンダ仕様情報:64Byte
ベンダ仕様情報	
•  サーバからクライアントへの	
  
追加情報	
  
•  情報が格納されている場合	
  
最初の4バイトは	
  
99.130.83.99が設定される	
  
→マジッククッキー	
  
バッド	
タグ =	
  0	
  
(1バイト)
サブネット・マスク	
タグ =	
  0	
   データ長 =	
  4	
   サブネット・マスク	
  
(1バイト)	
 (1バイト)	
 (4バイト)
タイム・オフセット	
タグ =	
  2	
   データ長 =	
  4	
   タイム	
  
(1バイト)	
 (1バイト)	
 (4バイト)
ゲートウェイ	
タグ =	
  3	
   データ長 =	
  N	
  
(1バイト)	
 (1バイト)	
有線ゲートウェイ	
  
IPアドレス	
  
(4バイト)	
ゲートウェイ	
  
IPアドレス	
  
(4バイト)	
N バイト
エンド	
タグ =	
  255	
  
(1バイト)
ポート番号	
•  サーバは67、クライアントは68	
  
•  同じポートを使用した場合サーバが	
  
オペコードを読み判断しなければならなくなる	
  
•  エフェメラルポートを使用した場合	
  
同じポートを使用するアプリケーションが受信	
  
例	
1 0.0.0.0.68 > 255.255.255.255.67!
secs:100 ether 0:0:a7:0:62:7c!
要求送信!
2  mercury.bootp > proteus.68: secs:100 Y:proteus!
S:mercury G:mercury ether 0:0:a7:0:62:7c!
file “/local/var/bootfiles/Xncd19r”!
応答!
3 arp who-has proteus tell 0.0.0.0!
4  arp who-has proteus tell 0.0.0.0!
5  arp who-has proteus tell proteus!
例	
6  proteus.68 > 255.255.255.255.bootp:!
secs:100 ether0:0:a7:0:62:7c!
IP ヘッダに自 IP アドレスを載せ再要求!
7  mercury.bootp > proteus.68: secs:100
Y:proteus!
S:mercury G:mercury ether0:0:a7:0:62:7c!
file “/local/var/bootfiles/Xncd19r”!
同じサーバから同じ応答!
8  proteus.68 > 255.255.255.255.bootp:!
secs:100 ether0:0:a7:0:62:7c!
さらに別の要求をブロードキャスト!
例	
9  proteus.68 > 255.255.255.255.bootp:!
secs:100 ether0:0:a7:0:62:7c!
同じサーバから同じ応答!
10  arp who-has mercury tell proteus!
11  arp reply mercury is-at 8:0:2b:28:eb:1d!
12  proteus.tftp > mercury.tftp: 37 RRQ!
“/local/ver/bootfiles/Xncd19r”!
13  mercury.2352 > proteus.tftp: 516 DATA block 1!
14  proteus.tftp > mercury.2352: 4 ACK!
(略)!
15  mercury.2352 > proteus.tftp: 516 block 2463!
16  proteus.tftp > mercury.2352: 4 ACK!
17  mercury.2352 > proteus.tftp: 228 block 2464!
18  proteus.tftp > mercury.2352: 4 ACK!
例	
•  1,264,286バイトが9秒で転送された	
  
– 140Kbpsくらい	
  
– まぁまぁらしい	
  
BOOTP サーバの設計	
•  どうして応答をクライアントに直接送れるのか	
  
1.  サーバがカーネルに ioctl	
  要求し	
  
クライアントのエントリを ARP キャッシュに置く	
  
2.  ブロードキャストする
ルータを経由する BOOTP	
•  RARP は同一セグメント内でしか使えない	
  
•  BOOTP はルータがサポートしていれば使える	
  
– ほとんどの主要ルータ・ベンダはサポート	
  
(本でいう主要ってどこですかね……)	
  
– ディスクレス・ルータを念頭に置いたもの	
  
ルータを経由する BOOTP	
•  BOOTP 要求を受け取ったルータは自 IP	
  	
  
アドレスをゲートウェイ IP アドレスフィールド
に書き込み本物の BOOTP サーバに送信	
  
•  中継エージェントはホップフィールドを1増加	
  
•  サーバは応答を中継エージェントに送信	
  
まとめ	
•  RARP に代わるものとして	
  
開発された	
  
•  様々な追加情報を	
  
返すことができる	
  
•  サーバの実装は	
  
RARP より簡単

More Related Content

What's hot

あるmmapの話
あるmmapの話あるmmapの話
あるmmapの話nullnilaki
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用Toshiki Tsuboi
 
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Kazuhiro Takahashi
 
Redisととあるシステム
RedisととあるシステムRedisととあるシステム
RedisととあるシステムTakehiro Torigaki
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケットTakaaki Hoyo
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~nullnilaki
 
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24Naoya Nakazawa
 
Python32 pyhackathon-201011
Python32 pyhackathon-201011Python32 pyhackathon-201011
Python32 pyhackathon-201011Toru Furukawa
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたちt n
 
IPv6アドレスでお絵かき
IPv6アドレスでお絵かきIPv6アドレスでお絵かき
IPv6アドレスでお絵かきYasuyuki Nakamura
 
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメントmagoroku Yamamoto
 
DVB recording command on gstreamer.
DVB recording command on gstreamer.DVB recording command on gstreamer.
DVB recording command on gstreamer.裕士 常田
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)Sugawara Genki
 

What's hot (20)

あるmmapの話
あるmmapの話あるmmapの話
あるmmapの話
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
 
Ras piでrt linux
Ras piでrt linuxRas piでrt linux
Ras piでrt linux
 
Redis速習会@Wantedly
Redis速習会@WantedlyRedis速習会@Wantedly
Redis速習会@Wantedly
 
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
 
Hachioji pm 21
Hachioji pm 21Hachioji pm 21
Hachioji pm 21
 
Redisととあるシステム
RedisととあるシステムRedisととあるシステム
Redisととあるシステム
 
qemu-debootstrap
qemu-debootstrapqemu-debootstrap
qemu-debootstrap
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
#pakeana 14
#pakeana 14#pakeana 14
#pakeana 14
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
 
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
 
Python32 pyhackathon-201011
Python32 pyhackathon-201011Python32 pyhackathon-201011
Python32 pyhackathon-201011
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたち
 
IPv6アドレスでお絵かき
IPv6アドレスでお絵かきIPv6アドレスでお絵かき
IPv6アドレスでお絵かき
 
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
 
DVB recording command on gstreamer.
DVB recording command on gstreamer.DVB recording command on gstreamer.
DVB recording command on gstreamer.
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
 

Similar to Arch TCP/IP BOOTP

IPv6 を始めてみた
IPv6 を始めてみたIPv6 を始めてみた
IPv6 を始めてみたmiki koganei
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング勲 國府田
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Herokumgwsuzuki
 
パケットフィルタリングの考え方
パケットフィルタリングの考え方パケットフィルタリングの考え方
パケットフィルタリングの考え方Koiwa Hidekazu
 
How to apt-get from the internal network: remote sshd with kneesocks
How to apt-get from the internal network: remote sshd with kneesocksHow to apt-get from the internal network: remote sshd with kneesocks
How to apt-get from the internal network: remote sshd with kneesocksinaz2
 
自宅ラック勉強会#3
自宅ラック勉強会#3自宅ラック勉強会#3
自宅ラック勉強会#3hikari1019
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門Yuki Suga
 
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみたIto Takahiro
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 Fujio Kojima
 
Layer 4 Load Balancer (NAT, IP Tunnelling, DR)
Layer 4 Load Balancer (NAT, IP Tunnelling, DR)Layer 4 Load Balancer (NAT, IP Tunnelling, DR)
Layer 4 Load Balancer (NAT, IP Tunnelling, DR)Kota Uchida
 
自宅サーバーを立てる話
自宅サーバーを立てる話自宅サーバーを立てる話
自宅サーバーを立てる話naba0123
 
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~cyberblack28 Ichikawa
 
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムWiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムShinichi Hirauchi
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムJunichi Kakisako
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 

Similar to Arch TCP/IP BOOTP (20)

IPv6 を始めてみた
IPv6 を始めてみたIPv6 を始めてみた
IPv6 を始めてみた
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Heroku
 
パケットフィルタリングの考え方
パケットフィルタリングの考え方パケットフィルタリングの考え方
パケットフィルタリングの考え方
 
How to apt-get from the internal network: remote sshd with kneesocks
How to apt-get from the internal network: remote sshd with kneesocksHow to apt-get from the internal network: remote sshd with kneesocks
How to apt-get from the internal network: remote sshd with kneesocks
 
自宅ラック勉強会#3
自宅ラック勉強会#3自宅ラック勉強会#3
自宅ラック勉強会#3
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門
 
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 
Layer 4 Load Balancer (NAT, IP Tunnelling, DR)
Layer 4 Load Balancer (NAT, IP Tunnelling, DR)Layer 4 Load Balancer (NAT, IP Tunnelling, DR)
Layer 4 Load Balancer (NAT, IP Tunnelling, DR)
 
Inside winnyp
Inside winnypInside winnyp
Inside winnyp
 
自宅サーバーを立てる話
自宅サーバーを立てる話自宅サーバーを立てる話
自宅サーバーを立てる話
 
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
 
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラムWiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラム
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 

Arch TCP/IP BOOTP