方言を話すおしゃべり猫型ロボット『ミーア』をリリースしました(こちらをクリック)

【ネットワーク】LAN/WAN, TCP/IP, IPアドレス, サブネットマスク, NAT, CIDR表記, DNS, ポート番号

この記事は約13分で読めます。

LAN/WAN

LAN(local aria network)

  • 小規模な地域(家庭やオフィスなど)に限定されたネットワークで、複数のコンピューターを相互接続している
  • コンピューター同士をLANケーブルで結ぶ

WAN(wide area network)

  • 離れた場所(都市、国、または世界を跨ぐ)にあるLANとLANを結んだネットワーク
  • LAN同士を通信回線で結ぶ

TCP/IP, UDP

IP(Internet Protocol)

  • インターネットにおいて情報の伝達を行なう手順 (プロトコル)
  • 送り先とデータからなるパケットを送るだけの簡単な仕組み
  • ping コマンドでデータが送信され、データを受けた機器 (サーバやルータなど) から確認メッセージ かが返ってくるかを確認できる

TCP(Transmission Control Protocol)

  • IP(Internet Protocol) の仕組みを使ってデータを送るプロトコル。異なるネットワーク間で情報をやり取りするための規則や手順を定義している

UDP(User Datagram Protocol)

  • エラー確認やデータの再送制御は行わないが、その分データを高速に送ることができる→小さなデータや映像のような多少欠損しても問題なく、信頼性よりも速度を求められる通信に適している。

pingコマンド

  • Packet InterNet Groper(パケットインターネット探査者)の略。
  • $ ping ターゲット で表記:ターゲット (ホスト名や IP アドレス) にデータを送り、返答が戻るまでの時間を表示する。
  • -c オプションを付けて、pingを発行する回数を指定できる。
ShellScript
$ ping 192.168.1.1 (192.168.1.1  ping を送信)
 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=30 time=1.01 ms (1.01m 秒で返答があった)
64 bytes from 192.168.1.1: icmp_seq=2 ttl=30 time=0.914 ms (0.914m 秒で返答があった)

IPアドレス

TCP/IP でデータを送受信するには発送元と発送先の場所を表すアドレスが必要 →IPアドレスの導入

IPアドレスは、ネットワーク上の住所。

IPv4(Internet Protocol version 4) と IPv6 という 2 つのプロトコルが使われている。

IPv4(Internet Protocol version 4)

  • 4バイト (16進数で8桁) で表せるアドレスで、4 バイトのアドレスは 1 バイト (16進数で2桁) ごとで10進数に変換してでつないで表記する。
  • グローバルIPアドレス:プライベートなIPアドレスを除いたIPアドレス。NICに管理されていて、許可なく利用できない。
  • 1バイト(Byte):8桁の2進数=8ビット(Bit):1桁の2進数
    Linux標準教科書

IPアドレス=ネットワークアドレス(どのネットワーク?)+ホストアドレス(どのPC?)。つまり、どのネットワークの、どのコンピューターかを表現している。

Linux標準教科書

サブネットマスク(subnet mask)

  • IPアドレスのどの部分がネットワーク部で、どの部分がホスト部かを示す情報。
  • サブ(=部分)ネット(=ネットワーク)マスク(=覆い隠す)→ネットワーク部とホスト部を区別する
  • IPアドレスと同じ形式で表され、ネットワークアドレス部分には”255″、ホストアドレス部分には”0″が入る。
ShellScript
IPアドレス:        192.168.1.10
サブネットマスク:  255.255.255.0
                   ----------------
ネットワークアドレス: 192.168.1
ホストアドレス:       .10

プライベートIPアドレス

インターネット上では使用されず、ローカルネットワーク内でのみ使われる特別なIPアドレス範囲。

ローカルネットワーク内で使える、自分たちで勝手に決めていいIPアドレス。

例えば、192.168.1.10 はプライベートIPアドレス。このIPアドレスはインターネット上で一意ではなく、ローカルネットワーク内でのみ意味を持つ。インターネット全体で一意である必要がなく、ローカルネットワーク内でのみ一意であれば良い

Linux標準教科書

プライベートIPアドレスが同じでも良い理由

家庭のネットワークでコンピュータが 192.168.1.10 というプライベートIPアドレスを持っていても、別の場所(例えば職場)で別のネットワークが存在し、そのネットワーク内の全く別のコンピュータが同じ 192.168.1.10 というIPアドレスを持っていても問題ない。

これらのネットワークは互いに独立しており(異なるグローバルIPアドレス(インターネット上で一意のアドレス)を介してインターネットに接続されている)、プライベートIPアドレスが衝突することはない。

インターネット上では、各ローカルネットワークはルーターを通じて接続される。このルーターは、グローバルIPアドレスを持っており、インターネット上でユニーク

ローカルネットワーク内のデバイスがインターネットにアクセスする際、その通信はルーターを通じて行われ、ルーターは「NAT(Network Address Translation)」と呼ばれるプロセスを使用して、プライベートIPアドレスをグローバルIPアドレスに変換する。

NATは、表形式でプライベートIPアドレスとグローバルIPアドレスの関係を記載している。

ShellScript
| ローカルIPアドレス(プライベートIP) | グローバルIPアドレス |
|-------------------------------------|---------------------|
| 192.168.1.10                        | 203.0.113.5         |
| 192.168.1.11                        | 203.0.113.5         |
| 192.168.1.12                        | 203.0.113.5         |

このNATプロセスにより、複数のデバイスが同じグローバルIPアドレスを共有してインターネットにアクセスでき、また、外部から見た場合、どのプライベートIPアドレスがどの通信を行っているかを区別することができる。したがって、異なるローカルネットワークで同じプライベートIPアドレスを使用していても、グローバルIPアドレスが異なれば、インターネット上での通信が混同することはない。

出典:https://www.aterm.jp/function/wg1800hp/guide/list/main/m01_m6.html

CIDR (サイダー:Classless Inter-Domain Routing)表記

IP アドレスのネットワーク部とホスト部の境目を/ (スラッシュ)の後に続くビット数で指定する方法。IPアドレスとサブネットマスクを簡潔に表現するために導入された。

「IPアドレス/プレフィックス長」という表記

  • プレフィックス長:プレフィックスはprefixで、文字通り「接頭辞」の意味。何の接頭辞かというと、IPアドレスの接頭辞に該当するのはネットワークアドレス。つまり、最初の何ビット分がネットワークアドレスかを示している。

例)CIDR表記「192.168.1.0/24」

ShellScript
ネットワークアドレス: 192.168.1.0
サブネットマスク: 255.255.255.0
プレフィックス長: /24

ネットワーク部分: 192.168.1 (24ビット)
ホスト部分: .0 (残り8ビット)
ホスト部分で表現できる(PCに割り当てられる)アドレスの数:256個

IPv4の場合、ホスト部分のアドレス数は、2の(32−プレフィックス長)乗となる。今回の場合は、2の32-24=8乗なので、256。

つまり、LAN内で実際にデバイスに割り当てることができるIPアドレスの数は256。

正確には、サブネットの最初のアドレス(ネットワークアドレス)と最後のアドレス(ブロードキャストアドレス)はデバイスに割り当てられない。従って、実際にデバイスに割り当てることができるアドレスの数は、総数から2を引いた数=254となる。

ifconfig:IPアドレス確認(mac)

プライベートIPアドレス

ipconfigで下記オプションをつける。macの場合、ipconfigのみで出力しようとすると、コマンドと引数をつけるように言われる。

  • ipconfig: ネットワーク構成情報を表示するためのコマンドラインユーティリティ
  • getifaddr: 指定したネットワークインターフェースのIPアドレスを取得するサブコマンド
  • en0: 特定のネットワークインターフェースを指定するためのインターフェース名。macOSやLinuxでは、ネットワークインターフェースは通常、en0eth0wlan0などの名前で識別される。en0は通常、有線Ethernet接続を表す
ShellScript
$ ipconfig getifaddr en0
198.168.XXX.XXX

もしくは、ifconfigを入力。ifconfigの場合は、ipconfigと異なり、単体コマンドで結果を出力してくれる。しかし、この場合、ネットワークインターフェースに関する多岐にわたる情報が出力される。

ShellScript
$ ifconfig

# 下記はダミー出力
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	ether aa:bb:cc:dd:ee:ff
	inet 192.168.56.101 netmask 0xffffff00 broadcast 192.168.56.255
  • en0: これはネットワークインターフェースを識別する名前。en0 は通常、macOS デバイスの最初のイーサネットまたはWi-Fiインターフェースを指す。
  • flags: 各フラグは、インターフェースの特定の状態や機能を示す。例えば、UP はインターフェースが動作中であることを意味し、RUNNING は有効なデータリンクが存在することを示す。
  • mtu 1500: MTU(Maximum Transmission Unit)は、ネットワークを介して一度に送信できる最大データサイズ。1500は標準的なイーサネットのMTU値。
  • ether aa:bb:cc:dd:ee:ff: インターフェースのMACアドレス。MACアドレスは、ネットワーク上のデバイスを一意に識別するためのアドレス
  • inet 192.168.56.101: デバイスがローカルネットワーク内で使用しているIPアドレス(IPv4)。
  • netmask 0xffffff00: サブネットマスクです。0xffffff00 は、255.255.255.0 と同等。
  • broadcast 192.168.56.255: ブロードキャストアドレス。同じローカルネットワーク内の全てのデバイスにデータを送信するために使用されるアドレス。

グローバルIPアドレス

ipecho.net/plain:

  • ipecho.net は自分のIPアドレスを返すためのシンプルなWebサービスを提供している。
  • /plain パスは、余計な装飾やHTMLなしで、純粋なテキスト形式でIPアドレスを返す。
ShellScript
curl ipecho.net/plain; echo

DNS(Domain Name System)

  • インターネット上でドメイン名をIPアドレスに変換するためのシステム。
  • 人間は記憶しやすいドメイン名(例:www.example.com)を使ってWebサイトにアクセスするが、コンピュータは数値のIPアドレス(例:192.0.2.1)を使って通信する。
  • DNSがなければ、ユーザーはお気に入りのウェブサイトにアクセスするためにIPアドレスを直接記憶しておく必要があり、インターネットの利便性は大幅に低下する。

ポート番号

TCP/IP で通信をする場合は、IP アドレスに加えて、通信を行う特定のサービスやアプリケーションを識別するためにポート番号を使う

Webサーバーとメールサーバーの例

ある企業には、Webサーバーとメールサーバーが1台のサーバー上で動作していて、このサーバーのIPアドレスが「203.0.113.5」だとする。

  • Webサーバー: 通常、WebサーバーはHTTPプロトコルを使用し、デフォルトでポート80番を使用する。したがって、このサーバー上のWebサービスにアクセスするためには、IPアドレスとポート番号を組み合わせて「203.0.113.5:80」と指定する。
  • メールサーバー: メールサーバーは通常、SMTPプロトコルでメールの送信を管理し、デフォルトでポート25番を使用する。このサーバー上のメールサービスにアクセスするには、「203.0.113.5:25」と指定する。
Linux標準教科書

ポート20(FTP データ): File Transfer Protocol (FTP) データ転送用。FTPはファイルのアップロードやダウンロードに使用されるプロトコルで、データ転送にはポート20が使われる。

ポート21(FTP 制御): File Transfer Protocol (FTP) 制御(コマンド)転送用。セッションの確立や制御にはポート21が使用される。

ポート22(SSH): Secure Shell (SSH)。リモートサーバーへの安全なログインやデータ通信、その他の安全なネットワークサービスを提供する

ポート23(Telnet): Telnetプロトコル。リモートサーバーへのコマンドラインインターフェイスアクセスに使用されるが、暗号化されていないためセキュリティが低く、SSHに置き換えられつつある。

ポート25(SMTP): Simple Mail Transfer Protocol (SMTP)。メールの送信に使われるプロトコル。

ポート53(DNS): Domain Name System (DNS)。ドメイン名とIPアドレスを対応づけるために使用される。

ポート80(HTTP): Hypertext Transfer Protocol (HTTP)。Webサーバーとクライアント間の通信に使用されるプロトコル。

ポート443(HTTPS): HTTP over SSL/TLS、またはHypertext Transfer Protocol Secure (HTTPS)。HTTP通信を暗号化してより安全にするプロトコル。

通常、ユーザーがWebブラウザでHTTPS通信を行う際には、IPアドレスやポート番号を直接入力する必要はない。ブラウザはHTTPS通信のデフォルトポートとしてポート443を自動的に使用する。しかし、実際にはそのサーバーのIPアドレスとポート443を使用して通信が行われる。

例えば、ユーザーが https://www.example.com にアクセスする場合、ブラウザは以下のことを行う。

  1. DNSサーバーが www.example.com に対応するグローバルIPアドレスを見つける。仮に203.0.113.5 が返されるとする。
  2. ブラウザは、取得したIPアドレスのポート443、すなわち 203.0.113.5:443 に自動的に接続を試みる。
  3. サーバーはリクエストを受け取り、セキュアなHTTPS通信を通じて、必要なデータ(ウェブページの内容など)をブラウザに送信する。

コメント

タイトルとURLをコピーしました