Edited at

情報処理技術者試験 ネットワークスペシャリストに合格 

情報処理技術者試験 ネットワークスペシャリスト第一回試験に合格したものです。

過去に情報処理技術者試験の勉強会を何度か開催したことがあります。

2種、1種というとご存知ないかもしれません。

過去問題を3年分、3回、時間を測ってやるという方法をお勧めしていました。

1)試験時間以内に回答する。最初は10%くらいの出来でも時間内にやる習慣が大事。

2)間違えたところは、ネットで調べる。ただし、Wikiに書いてあることを鵜呑みにせず、その項目は参考文献を調べ、調べた内容と参考文献をWikiに追記するようにする。

3)3年分やったら、最初に戻る。これを3回繰り返す。

 3回繰り返しても50%以上の正解率に達しなければ、参考書を読み、わからないところを整理する。整理した事項でWikiに誤りや不足項目があれば追記する。

これだと、試験は受かるが、技術は身についていない可能性あるという課題がありました。


体験記

最近合格した方の体験記を拝見しました。

ネットワークスペシャリスト試験 合格体験記

https://qiita.com/kuwana-kb/items/5a8474894f47c3c4186d

ギリギリでネットワークスペシャリスト試験 (ネスペ) に一発合格した私の勉強方法

https://qiita.com/tr_ikym/items/8eb9010d066f4bfdd541

ネットワークスペシャリスト試験に合格した勉強方法

https://qiita.com/rerk1715/items/93b9113fd92420ecc4dd

どちらもwiresharkの話題がないのが残念。Web系の仕事をされている方、みんなでwiresharkを使っていれば、え、なんでこんなパケット流れることあるのという異常現象が、いっぱい集まるかも。


実務

ネットワークスペシャリストは、第一回試験を受けた。過去問を3年分野るという方法は取れません。試験も受かるが、技術も身につく方法かもしれないことを記録します。

なお、参考文献は順次追記しています。参考文献にあげた内容で分からない事がありましたらコメントかTwitter等でご質問ください。

なお、ネットワークスペシャリスト試験に受かった方は、CISCOの試験問題を一度やられるとよいと思っています。

私は、CISCO試験は受けていませんが、CCNP相当の5日間、十数万円のCISCOのコースを受講しています。受講先でCCNA相当の資料と、そ前と、CCIE相当の資料も拝見して勉強しました。

ネットワークは初期設定が難しい事もありますが、事故対応(trouble shooting)が大事です。

CISCOの事故対応のCCIE相当の資料は一度目を通しておかれることをおすすめします。

また、いつでもどこでもWireshark(許諾をえて)は大事かも。


参考文献1

コンピュータネットワーク 第5版,アンドリュー・S・タネンバウム, 日経BP社,2013

https://www.amazon.co.jp/dp/482228476X/

Minixの作者であるタネンバウムのネットワーク本。OSの主要な機能がネットワークと一体として機能している事が分かる。翻訳で読んでもいいですが、原書で読んでもいいです。


1. 網(network)測定(measure)

ネットワーク技術の第一歩は測定です。ある現象が出現することを記録することは大事です。ある現象が出現していない状態の記録も大事です。測定したら記録すると考えてください。

測定には、能動(active)測定と受動(passive)測定があります。能動測定とは、小包(packet)などの信号を送ることによって測定する方法です。受動(passive)測定は、信号を送らずに測定する方法です。

測定は動的(dynamic)な状態の記録です。状態の中には、ずっといっしょで設定のように静的(static)な情報も含みます。静的な情報の取得は、設定の確認と考えてください。


壁1 受動測定:流れていない小包は測定できない

受動測定の課題は、流れていない小包(packet)の測定ができないとう壁です。当たり前といえば当たり前なんですが、忘れがちです。小包(packet)が流れていなければ、遅延は0か無限大か不明です。


壁2 能動測定では測定行為が遅延を増大させる可能性がある

能動測定の課題は、測定のために送り出した小包(packet)が、網や機器の処理時間を使い、全体の遅延を増大させることにあります。

送り出す小包の量が、該当する分類の百分の1未満でないと%表示の結果の有効数字が2桁にならないかもしれません。遅延を正確に測ろうと度々小包(packet)を送り出すと、遅延はいくばくか増大し、正確という概念から外れてしまいます。

測定工学の基本は、正確な測定という概念は不可能だということです。統計や確率に基づいて推定する事ができるだけです。相対性理論によっても、よらなくても。

試験問題や解答例、Wikiでのなどで、断定的な記述があっても、影響されず、常に統計と確率を用いて判断する習慣を身につけましょう。

大事なことは、ここで参照した参考文献1、参考文献2や、情報源に当たってWikiに追記することかも。


1.1 受動測定の道具


1.1.1 wireshark

wiresharkの前身はetherealという同じ著者の測定の道具です。

Windows, Unix/Linux/Macintoshで測定できます。

http://wireshark.org

Wiresharkで測定しまくってください。

仕事場、顧客先、自宅、出張先、通勤経路・旅行経路など。私は少なくとも100箇所以上で測定しました。

顧客先等訪問先で測定する場合には、事前に許可を得てください。データを持ち帰る場合には、機密情報が含まれていないかを確認してください。測定目的も明確に伝えましょう。無駄なパケットが流れていないか、矛盾・無駄な設定をしていないか、機密情報が漏れていないかなど、一時的ではありますが、役立つことをお返しできることを伝えましょう。

海外では、南アフリカ、ブラジル、ペルー、アメリカ、カナダ、メキシコ、スペイン、イタリア、フランス、オランダ、ドイツ、フィンランド、スウェーデン、アイスランド、ロシア、オーストラリア、インド、タイ、中国、香港、韓国など二十数カ国で、言った先のホテル、大学、企業、官庁、ネットカフェなどのシステムの構築、保守、日本語フォントの導入などお手伝いの傍、測定させていただきました。

 測定して分析して、結果は廃棄する条件の場合が多くありました。また、測定していると機密事項を取得できてしまい、結果として全データを廃棄せざるを得ない場合もありました。

それでも、普段、仕事場では見かけないパケットを収集することが大切です。

毎日使っている環境ではお目にかかれない現象に、どのように解釈すればいいかが分からない事象の方が多くあります。

wiresharkはethernetの測定をします。TCP/IPではないプロトコルのパケットも記録・分析できます。

測定する際には、いくつか仮説を立てておくと良いでしょう。

仮説として

1 機器の設定の空間的間違い

 サブネットマスクや、IPアドレスそのものの設定など

2 機器の設定の時間的間違い

 タイムアウト時間、生存active確認時間が短すぎたり、長すぎたり

3 機器の故障、熱暴走

 熱暴走の場合には、システムを止め、少し時間を開けてから再起動するとしばらく出ないため、故障と熱暴走の区分が可能な場合がある

4 機器の設定の矛盾

 複数のDHCPサーバの衝突、複数のNTPサーバのずれなど一方だけであれば、起きない現象が複数台あるために起きる現象(仮説です)

5 不安定電源による機器の頻繁な再起動や処理の断絶

 繋がったり繋がらなかったりするが設定を確認すると問題が見当たらず、システムの再起動や断続的な処理が確認できる

6 想定容量を超える通信の断続的な発生

 内部、外部を問わず、設計時の想定容量を超える通信が発生したために起こったと思われる現象


1.1.2 設定の確認: ifconfig/ipconfig(windows only)

ネットワーク入出力界面(interface)の設定の確認は、ifconfig命令(command)で行います。ターミナル、シェル、コマンドなどの入力促進(command prompt)画面で何の付加もなく入れると、基本的な設定が分かります。


$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 34:36:3b:c8:7e:6c
inet6 fe80::1c52:690f:dee6:8581%en0 prefixlen 64 secured scopeid 0x5
inet 192.168.0.6 netmask 0xffffff00 broadcast 192.168.0.255
inet6 2402:6b00:3e94:e600:1c80:4a43:7dec:a91a prefixlen 64 autoconf secured
inet6 2402:6b00:3e94:e600:3148:e621:2e1b:be7d prefixlen 64 autoconf temporary
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
ether 06:36:3b:c8:7e:6c
media: autoselect
status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
ether a2:90:53:5c:90:51
inet6 fe80::a090:53ff:fe5c:9051%awdl0 prefixlen 64 scopeid 0x7
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 72:00:08:36:c7:90
media: autoselect <full-duplex>
status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 72:00:08:36:c7:91
media: autoselect <full-duplex>
status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether 72:00:08:36:c7:90
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: en1 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 8 priority 0 path cost 0
member: en2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 9 priority 0 path cost 0
nd6 options=201<PERFORMNUD,DAD>
media: <unknown type>
status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
inet6 fe80::5c8a:9f34:ebdb:5c7a%utun0 prefixlen 64 scopeid 0xb
nd6 options=201<PERFORMNUD,DAD>

\$はshell(terminal)の入力促進記号(command prompt)です。\$を打つ必要はありません。


回帰(loop back)

ethernetの利点の一つに、自分自身も一つのネットワークとして扱える回帰(loop back)機能があります。

上記ifconfigの結果では、「lo0」という名前です。IP番地は 127.0.0.1です。名前はOSなどによって少し違う場合がありますが、IP番地は127.0.0.1です。

プログラムをつくった場合に、この名前や番地で試験をするとよいでしょう。

インタネットがネットワークの相互接続という意味が分かるようになると思います。


参考文献2

岩波講座 インターネット〈2〉ネットワークの相互接続,岩波講座 インターネット<2>, 堀良彰,‎ 門林雄基,‎ 池永全志,‎ 後藤滋樹,岩波書店, 2001

https://www.amazon.co.jp/dp/4000110527/


1.2 能動(active)測定の命令(command)


1.2.1 ping

ICMPを使い、応答を確認する命令。系(system)の安全・安心(security)のため応答しない設定にしている場合が増えています。

組織内の小規模ネットワークの不具合や設定の確認などでは有用です。

$ ping localhost

PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.061 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.195 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.060 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.131 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.092 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.123 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.163 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.241 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.075 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.185 ms

いきなり外部測定するのではなく、まず回帰界面(loop back interface)の遅延を測定しておきましょう。PC/OSの性能、処理負荷など網(network)以外の要因を確認できます。


壁3 PC/OSの性能、他の処理負荷の変動

網の処理能力を向上させようとしても、PCやOSの性能、他の処理の負荷の変動によっては、十分な確認ができないかもしれません。

ネットワークのプログラムを書いたり、試験をする場合には、Linux農地BSD OSを対向試験機とする事をお勧めします。BSD OSは、TCP/IPの初期の頃から設計していた人たちが使っていたOSです。


1.2.2 traceroute/tracert(windows only)

ping以上に測定が困難になっている道具です。どこでも、どう接続しているかの情報を公開しないようになりました。実用的にはあまり使えないかもしれません。組織内の大規模ネットワークの不具合の確認や、経路設計などでは有用です。

$ traceroute localhost

traceroute to localhost (127.0.0.1), 64 hops max, 52 byte packets
1 localhost (127.0.0.1) 0.331 ms 0.054 ms 0.078 ms

自身への測定をしておくと、PC/OSの状態、環境、命令の処理能力など網以外の要因を確認しておく事ができます。


経路測定

インタネットの特徴に、経路が柔軟に変更可能な点がある。


Windows

$ route print


Linux

$ route

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 * 255.255.0.0 U 0 0 0 eth0


macOS

$ netstat -rn

Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.100.1 UGSc 288 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 148110 lo0
169.254 link#5 UCS 0 0 en0
192.168.100 link#5 UCS 1 0 en0
192.168.100.1/32 link#5 UCS 2 0 en0
192.168.100.1 5c:c3:7:7f:a4:42 UHLWIir 89 78 en0 1186
192.168.100.100/32 link#5 UCS 1 0 en0
192.168.100.100 34:36:3b:c8:7e:6c UHLWI 0 1 lo0
192.168.100.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 en0
224.0.0/4 link#5 UmCS 1 0 en0
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
255.255.255.255/32 link#5 UCS 0 0


2. プログラム

自分でネットワークのプログラムを書いて、試験プログラムを書いて見て、試験してみると良い。

題材は例えば、

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。

https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

第二章JAVAによるネットワークプログラミング phttpd 三箇所でException収集

https://qiita.com/drafts/d1db78d3db0e90c0ff9f

Macintosh対応「基礎からわかるTCP/IP アナライザ作成とパケット解析 Linux/FreeBSD対応」小高知宏 オーム社

https://qiita.com/kaizen_nagoya/items/517411b42fc5ceabd581

3種類のネットワーク、3種類のOS、3種類の言語で、ネットワークのプログラムをして見れば、

ネットワークスペシャリストとしても立体的な意見が述べられるようになるはず。


3. 通信規約群, 定義等

10種類以上のパケットについて、誤り(error),定義(definition)、訂正方法(corrective action), 動作(behavior)、応用(application)を整理する。100種類貯めると保守、運用が楽になる。

通信入門<書きかけ>

https://qiita.com/kaizen_nagoya/items/bdfd74d6ac0ee7317fa5

(伝送)プログラマが電気通信主任技術者試験を受けるときに読んでおくこと

https://qiita.com/kaizen_nagoya/items/0222148a9f59f003d999


3.1 物理層

プログラマが知っているとよい無線通信(WLAN)<書きかけ>

https://qiita.com/kaizen_nagoya/items/0f09d0b42028aca93bdf


3.1.1 Wifi

https://www.wi-fi.org

Wifiの課題

https://qiita.com/kaizen_nagoya/items/b95d438fe0782a4d25bd


3.1.2 bluetooth

https://www.bluetooth.com/ja-jp


3.1.3 ZIGBee

http://www.zigbee.org


3.1.4 LTE(Long Term Evolution)

http://www.3gpp.org/technologies/keywords-acronyms/98-lte


3.1.5 WiMax

http://wimaxforum.org


3.1.6 CAN

https://www.can-cia.org/can-knowledge/canopen/canopen-history/

TCP/IPは、Ethernetの上にある。これらの通信規約以外にも、いろいろな通信規約を相互に接続して成り立っているのがインタネット。そこで関連する通信規約を使ったり、改良したり、応用したりしているとよい。


3.2 データリンク層

Wireshark 導入、記録、分析

https://qiita.com/kaizen_nagoya/items/d1d452d5f3eadd420d6e


3.2.1 ethernet

IEEE Registration Authority (RA)

http://standards.ieee.org/develop/regauth/oui/

ethernetで使うMacアドレスは、製造側がIEEEに自社の番号を登録する。そのため、Macアドレスがわかれば、製造元が判明する。

IEEE 802 またはEthernet

https://qiita.com/kaizen_nagoya/items/7c52dd250097050398ca


3.2.2 EtherCAT

工場でEthernetを利用して、同時に複数台の機器に制御信号を送る方式。

https://www.ethercat.org/default.htm


3.2.3 SPCE Wire

航空宇宙

http://spacewire.esa.int/content/Home/HomeIntro.php


3.3 ネットワーク層(IP), トランスポート層(TCP,UDP)

RFCを読む、翻訳する、整理する

https://qiita.com/kaizen_nagoya/items/97212ce0a21bc28faa6a


3.3.1 IP

RFC781

https://www.rfc-editor.org/info/rfc781

Specification of the Internet Protocol (IP) timestamp option


3.3.2 TCP

RFC793

https://www.rfc-editor.org/info/rfc793

Transmission Control Protocol


3.3.3 UDP

RFC768

https://www.rfc-editor.org/info/rfc768

User Datagram Protocol


3.3.4 ICMP

RFC792

https://www.rfc-editor.org/info/rfc792

Internet Control Message Protocol


3.3.5 DHCP

RFC2131

https://www.rfc-editor.org/info/rfc2131

Dynamic Host Configuration Protocol


3.3.6 DNS

RFC2035

https://www.rfc-editor.org/info/rfc1035

Domain names - implementation and specification


3.3.7 ARP

RFC826

https://www.rfc-editor.org/info/rfc826

Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware


3.4 アプリケーション層


3.4.1 HTTP

RFC7230

https://www.rfc-editor.org/info/rfc7230

Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing


3.4.2 NTP

RFC5905

https://www.rfc-editor.org/info/rfc5905

Network Time Protocol Version 4: Protocol and Algorithms Specification


3.4.3 Echonet lite

家電用ネットワーク。

https://echonet.jp/spec_g/#standard-01

電子電力計(smart meter)記録を利用・家電を制御:ECHONET Lite, TOPPERS ECNL

https://qiita.com/kaizen_nagoya/items/79825e6ec78d853d044f


参考文献

ネットワークスペシャリストのキーワード一覧

https://qiita.com/estaro/items/e4432b66dc813ff45c6a

ネットワークスペシャリスト試験で出題されがちなポート番号まとめ

https://qiita.com/yuyasat/items/cdba7381330373d00759

情報処理技術者試験 情報セキュリティスペシャリスト試験とネットワークスペシャリスト試験の受験に使った参考書など

https://qiita.com/jj1bdx/items/539c4fb9137549152508

情報処理技術者試験に向けて【ネットワークスペシャリスト編】

https://qiita.com/minakawa-daiki/items/eeaa5028a283b01d1f61

ネットワークスペシャリスト試験に合格した勉強方法

https://qiita.com/harerk/items/93b9113fd92420ecc4dd

ギリギリでネットワークスペシャリスト試験 (ネスペ) に一発合格した私の勉強方法

https://qiita.com/tr_ikym/items/8eb9010d066f4bfdd541

無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)

https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001#_reference-c2fe1302ee07f9be1de6

無線網(Wi-Fi)空中線(antenna)(113)Wi-Fi災害用統一SSID 00000JAPAN (ファイブゼロジャパン)啓蒙

https://qiita.com/kaizen_nagoya/items/212da024d9c20491e33f

通信エミュレータの移植

https://qiita.com/drafts/ce505bbea4229b83e93b

端末間経路選択のための片方向遅延差測定方式, 小川清, 静岡大学,2006


Wireshark

以下描きかけの項目もあります。順次追記中。

Wireshark 導入、記録、分析

https://qiita.com/kaizen_nagoya/items/d1d452d5f3eadd420d6e

MacintoshにWiresharkを導入する5つの壁

https://qiita.com/kaizen_nagoya/items/69eb2d357a125f5368e1

Raspberry PiでWiresharkを活用する12の関門

https://qiita.com/kaizen_nagoya/items/b3fa0a20855d44c3768d

Wiresharkで覚える12個の小包(Paket)

https://qiita.com/kaizen_nagoya/items/4f8d9471f27b2bf8b8f5

Wiresharkで覚えるTCP/IP(24項目)

https://qiita.com/kaizen_nagoya/items/605d4ddde9055a940831

p.s.

うまくいった、エラーがあった、とか言われることがあります。じゃ、その記録はと聞くとないと言われます。記録をとりましょうよ。

エラーは記録するがが、うまく行ったときの条件や結果は記録されていないことがあります。

仕事で測定するからには、測定結果を記録しましょう。うまく行った時も、エラーの時も。

同じ現象が何度も繰り返される場合には、1回目の現象とその繰り返し回数を記録するだけでもいいかもしれません。


文献履歴

ver. 1.00 20180305 初校

ver. 1.01 20180307 命令類追記

ver. 1.02 20180309 URL等追記

ver. 1.03 20180323 表現変更、URL追記

ver. 1.04 20190224 参考資料追記

ver. 1.05 20190509 CISCO, 参考資料追記

ver. 1.06 20190716 体験記追記



http://b.hatena.ne.jp/guide/bbutton