はじめてのTCP/IP Q&A, ethernet(21)

はじめて TCP/IP を知る人のために、Q&Aを作ってみた。

＜この項は書きかけです。順次追記します。＞

Q(question)質問とA(assumption)仮説かもしれない。

Aのうち、URLのついていない項目は、６割は嘘かもしれません。嘘は言い過ぎかもしれません。確からしさが40%。本当かどうかは自分で調べてくださいという、学習用の問答です。

Q1 TCP/IPって何ですか？
A1 Transmission Control Protocol という転送(transport)規約と Internet Protocolという網(network)規約の２つの組み合わせです。IETF(Internet Engineering Task Force：インタネット技術作業部会)でRFC(request for comment)として標準化しています。

Q2 何で２つを組み合わせるんですか？
A2 TCPはポート番号、IPはインタネットアドレスを指定しますが、両方組みあわせて、上位の応用(application)ソフトウェアが利用するためです。

Q3 TCPとIPの二つだけで全部対応しているんですか？
A3 転送ではUDP(user datagram protocol)という再送をしない通信規約があります。網ではICMPという通信を確認する通信規約があります。

Q4 TCP/IPの特徴はなんですか？
A4 Internet Protocolは、網(network)と網(network)との相互接続で、継ぎ目のない利用が可能です。

Q5 もっと簡単に言うと？
A5 あなたの網(network)は、私の網(network)だ。

Q6 TCP/IPの上で動く応用ってなんですか。
A6 HTTP(hypertext transport protocol)というWEBの読み書きをする通信規約です。

Q7 インタネットアドレスって何ですか？
A7 192.168.0.1のような４つの数字の組み合わせで、８ビットの数字が４桁あるもので宛先を示します。

Q8 インタネットアドレスは必ず数字で指定しないとダメですか？
A8 DNS(Domain Name System)といって、文字と数字の対応づけをする仕組みがあり、文字でインタネット上の相手を指定することができます。

Q9 インタネットアドレスは端末間で固有である必要がありますか？
A9 インタネットは網と網との相互接続です。網と網とがドメイン名で固有に指定できれば接続可能です。

Q10 TCP/IPはどんな通信媒体上での送受信可能ですか？
A10 TCP/IPは、Ethernet上で動作することが多いですが、それ以外の通信規約上でも動作することはできます。 

Q11 TCP/IPとEthernetの間は仲がいいんですか？
A11 TCP/IPのインタネットアドレスとEthernetのMACアドレスとの対応づけをするのに、ARP(address resolution protocol)があり、Ethernetの放送(broad cast）でARPでIPとMACアドレスの対応づけを行うことができます。

Q12 対応づけがどうなっているかはどうやって知ることができますか？
A12 ARPコマンドでわかります。

Q13 APRコマンドってどうやって入力するんですか？
A13 M.S. Windows, Apple macOS, Android/Linuxのいずれでも、コマンドプロンプトまたはshellを立ち上げて、arp -aとすると、自分の機器の対応関係が出ます。192.168.0.1がIPアドレスで、10:66:82:d:xx:xx(xxは文字を変えています。）がMACアドレスです。

```shell:bash
arp -a
? (192.168.0.1) at 10:66:82:d:xx:xx on en0 ifscope [ethernet]
? (192.168.0.4) at 42:48:39:d6:xx:xx on en0 ifscope [ethernet]
? (192.168.0.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
? (224.0.0.251) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
```

Q14 MACアドレスがff:ff:ff:ff:ff:ffのブロードキャストになっている場合のIPアドレスの意味は何ですか？
A14 IPアドレスでは、ネットワークアドレスとブロードキャストアドレスの２つは、そのネットワークで個別の機器に設定できないアドレスです。ネットワークアドレスは、設定可能な範囲の値がすべて0, ブロードキャストアドレスは、設定可能な範囲の値がすべて1です。

Q15 TCP/IPがうまく動いているのを確認する簡単な方法がありますか？
A15 ping(ピング:packet internet groper, packet internet gopher：インタネット小包検索)コマンドで、ドメイン名またはIPアドレスまで繋がっているか確かめることができます。

Q16 ping(ピング)コマンドは、いつでも、どこへでも使えますか？
A16 pingコマンドは、ICMP(Internet Control Message Protocol:インタネット制御伝言規約）によって動いています。ICMPを応答しないという設定になっていると、返事は帰って来ず、つながっているかどうかはわかりません。

Q17 ping(ピング)コマンドの使い方はどんなんですか？
A17 M.S. Windows, Apple macOS, Android/Linuxのいずれでも、コマンドプロンプトまたはshellを立ち上げて、ping 192.168.0.1 のように、pingの後にIPアドレスまたはドメイン名（インタネット上の文字の名前）を入れてみてください。

```shell:bash
$ ping www.github.com
PING github.com (52.69.186.44): 56 data bytes
64 bytes from 52.69.186.44: icmp_seq=0 ttl=43 time=16.899 ms
64 bytes from 52.69.186.44: icmp_seq=1 ttl=43 time=15.646 ms
64 bytes from 52.69.186.44: icmp_seq=2 ttl=43 time=15.232 ms
```

Q18 ping出力のicmp_ceqってなんですか？
A18 ICMP(Internet Control Message Protocol:インタネット制御伝言規約）パケットの順次番号です。pingを送ってから、向こうから来た返事の何番目かを表しています。途中でパケットがどこかへ行ってしまったら、この番号は続き番号になっていません。


Q19 ping出力のTTLって何ですか？
A19 TTL(time to Line:生存時間）で、何台先の接続機器までを有効にするかの指定です。M.S. Windows, Apple macOS, Linux, 通信機器によって、その大きさの既定値が、128,43,64,255と違うかもしれません。

Q20 ping出力のtimeって往復時間ですか？
A20 はい。そうです。

Q21 ping出力のtimeが往復時間ということは、片道はその半分ていうことでOK？
A21 いいえ、登りと下りで通信速度が違ったり、経路が違うと、行きと帰りで倍以上時間が違うことはあります。例えば、同じ鉄道でも、名古屋と東京で行きは新幹線で、帰りは在来線だと、１時間４０分と５時間２０分と大幅に違います。現在の時刻表だと、中央線経由で距離が長い方が５時間２０分で、東海道本線の距離が短い方が６時間１０分になります。距離が短ければ、速いというわけではないという例になるかもしれません。

Q22 インタネットアドレスの枯渇ってなんですか。
A22 インタネットのアドレスを、最初は大盤振る舞いで、使う可能性のほとんどない数を配っていました。IPは網の相互接続ですから、網の内部は、プライベートアドレスで指定してもかまわないため、利用しないアドレスが大量に残ったままになることがしばしばでした。使っていないアドレスがいっぱいあるのに、新規に割り当てるアドレスはないというおかしな状況が生まれることを指します。

Q23 プライベートアドレスってなんですか。
A23 自分が所属している網だけで有効なアドレスで、10.0.0.0 から10.255.255.255, 172.16.0.0 から 172.31.255.255, 192.168.0.0 から192.168.255.255の３種類あります。

Q24 プライベートアドレスで何か困ることはありますか？
A24 昔は、特定の契約で、グローバルアドレスの機器でしか動かないソフトウェアがありました。今でも、まだ残っているかもしれません。

Q25 TCP/IPの利点は何がありますか？
A25 試験のための仕組みが充実し、試験が容易なことです。

Q26 試験が容易とはどういうことですか。
A26 インタネット全体が試験のための仕組みで、公道試験に相当する網全体の試験も、試験場試験に相当する内部網での試験も、ネットにつながずに１台だけで行うlocalhostを利用した試験まで、プログラムを変更せずに行うことができます。

Q27 試験の容易性には他に何がありますか？
A27 通信規約自体をRFC(Request for Comment)として提案でき、どのような試験を行うかも提案できます。



# RFC
RFC791, INTERNET PROTOCOL,    September 1981
https://datatracker.ietf.org/doc/html/rfc791

RFC792, INTERNET CONTROL MESSAGE PROTOCOL,  J. Postel,September 1981
https://datatracker.ietf.org/doc/html/rfc792

RFC 793,   TRANSMISSION CONTROL PROTOCOL, September 1981
https://datatracker.ietf.org/doc/html/rfc793

RFC826, An Ethernet Address Resolution Protocol - or - Converting Network Protocol Addresses, David C. Plummer, November 1982
https://datatracker.ietf.org/doc/html/rfc826

# 参考資料(reference)
Data Networking Products Terminology
https://smartcare.cbmusa.com/manuals/255-100-201.pdf

送信先の機器によって変わるTTLの話
https://qiita.com/ine1127/items/dae039f662656c10e7d1
 
## 関連自己記事
はじめてのEthernet Q&A 16
https://qiita.com/kaizen_nagoya/items/661499165ee71270fa20

はじめてのTCP/IP Q&A 16
https://qiita.com/kaizen_nagoya/items/1a51d0635a3bdef6078d

はじめての車載Ethernet Q&A 16
https://qiita.com/kaizen_nagoya/items/81375e39d5255c479d0e

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e
物理記事　上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

数学関連記事１００
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

言語・文学記事　１００
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

自動車　記事　１００
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

Qiita(0)Qiita関連記事一覧（自分）
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

鉄道（０）鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0

日本語（０）一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

仮説（0）一覧（目標100現在40）
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

安全（0）安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎　OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

Error一覧(C/C++, python, bash...) Error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

TOPPERSまとめ　#名古屋のIoTは名古屋のOSで
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
### 文書履歴(document history)
ver. 0.01 初稿 20210702
ver. 0.02 参考資料追記 20210703
ver. 0.03 項目数24 20210704
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.