0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ネットワークを繋げているプロトコルたち

Posted at

マエガキ

走り書きのメモです。今なんとなくネットワークの全体像について理解できた気がするのでメモに残しておきます。各プロトコル単体の動きは知っていたのだけれども、それぞれがどのように絡み合っているのかをちょっと理解できた気がする。。。

ホンダイ

デバイスAからローカルネットワーク内のデバイスBとリモートネットワーク(インターネットワーク)上のデバイスCに対してデータを送信することを考える。

まずデータをTCP (Transmission Control Protocol) や UDP (User Data Protocol) などによってヘッダを添付される。今回はTCPでの通信を考えることとする。

TCPは送られたか確認したり、データが順番に再構築出来ているかなどを確認するため、信頼性は高いが時間が掛かるプロトコル。
UDPは送りっぱなしでデータが上手く送れたかどうかなどは気にしないため早いが信頼性にかけるプロトコル。

そしてTCPヘッダを付けられたデータ(TCPセグメント)にIP (Internet Protocol) に沿ったヘッダを付ける。TCPヘッダを付けられた状態のデータにIPヘッダを付けた状態のことをIPパケットと呼ぶ。
TCPセグメントをIPパケットにカプセル化する、などと言うらしい。
このIPヘッダには送信元のIPアドレスや送信先のIPアドレス、パケットの大きさなどの情報が入っている

新しいヘッダ部を付与し、新しいパケットにすることをカプセル化する、と言うらしい

そのIPパケットをさらにイーサネットでカプセル化する。イーサネットヘッダを付けるとイーサネットフレームと呼ばれる状態のデータになる。
パケットやフレームなど言い方が変わるが、これはOSI参照モデルでの各層によるデータの単位の言い方が違うのでパケットやフレームなどとなっているが、意味としては一つの小さな単位である。

イーサネットヘッダには、送信元のMACアドレスや送信先のMACアドレスが書かれている。

こうして作成されたイーサネットフレームを送信元のデバイスAがデバイスBやデバイスCに送信される。

ソウシン

まずはローカルネットワーク内での通信について考える。
送信元のデバイスAが先ほど作成したイーサネットフレームを用いて、デバイスBに送信される。イーサネットフレームはローカルネットワーク内で、スイッチを通じて送信先のデバイスBに届く。
この際イーサネットヘッダに付けられた送信先BのMACアドレスをもとに送信される。

それをデバイスBが受け取り、イーサネットヘッダが捨てられる。

そして、次にIPヘッダを参照し、正しいIPアドレスに届いているかを確かめる。Bのデバイスの中にも複数のIPアドレスがある場合などもあるので、本当に正しいIPアドレスかどうかをIPヘッダで確認する。

IPヘッダを捨てる。

最後にTCPヘッダを用いてデータの順序のチェックやエラーがないかなどを確認しながら、データを再構築する。(このような流れのデータがデバイスBに沢山送られてくるので、この小さいデータたちを大きい、デバイスAが送信したかった元のデータに復元する)

これにより、ローカルネットワーク内での通信が完了する。

次に、インターネットワーク上でのデータの通信について考える。

先ほどと同様にデバイスAでイーサネットフレームにカプセル化されたデータを作る。
このイーサネットヘッダによってローカルネットワーク内でルータにイーサネットフレームが送信される。

ルータでは受け取ったイーサネットフレームをデカプセル化(一番上のヘッダを捨てること。今回だとイーサネットヘッダ)して、IPパケットを取り出す。

それを次のルータのインターフェースの形に合うように再度イーサネットヘッダを添付してカプセル化する。そのイーサネットフレームを次のルータに送信する。
この時各ルータではIPヘッダを利用して、次のホップ(ルータ)を決定し、イーサネットヘッダによって再度カプセル化している。

これを繰り返していくと最終的に送信先のデバイスCがあるルータに辿り着き、そのルータで再度でカプセル化して、IPヘッダを利用してカプセル化する。それをデバイスCに送信する。

デバイスCではイーサネットフレームを受信して、それをでカプセル化して、IPヘッダを確認し、自分へのデータなのかを確認する。(先ほどと同様に複数のIPアドレスがある場合などもここで確認する)

そして、TCPによりデータを取り出す。という流れだ。

カンソウ

それぞれのプロトコルが何か、ということはなんとなく知っているつもりだったが、それらをどのように利用して送信しているのか、について理解が曖昧だったので再度確認できてよかった。ちょっと雑な内容になっているが、自分の理解のためなので許して下さい😭。

それぞれの題名がカタカナ4文字ですが、僕の好きなニセコイという漫画の各話の題名がカタカナ4文字だったのでそれをパクらせてもらいました。最近たまたま読み直す機会があって、やっぱりいいな、、と思うので、ぜひ読んでみて下さい!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?