あいてぃ煮込み

SIer(SE)が、ITインフラをメインに知識や実装手順を紹介するブログです。

『NW基礎』TCP/UDPとプロトコル&ポート番号

f:id:toto-blend:20210420133827p:plain

今回は、TCP/UDPプロトコルに焦点を当て紹介していきます。

TCP/UDPとは

TCP/UDPとは、TCP/IPトランスポート層(第3層)に分類されるプロトコルです。
ポートと呼ばれるプロトコルを識別する仕組みを利用してOSがデータ通信を行います。

このポートが、プロトコルを識別するために利用する16ビットの数値をポート番号
呼びます。

この16ビットというのは、TCP/UDPヘッダが割り当てられるビット数のことを指しており、ポート番号は、0~65535の範囲で割り当てます。

f:id:toto-blend:20200919215304j:plain

※ヘッダとは、TCP/IPの各層で通信の際にデータに付与されるビット長の情報。IPアドレスMACアドレス、ポート番号など通信に必要な情報が記載されています。

ポート番号は、大きく3つに分けられます。

ウェルノウンポート0~1023
有名なプロトコルに利用されるポート番号
登録済みポート1024~49151
ベンダーがポート番号を管理している団体に申請して認可を受けて
利用されるポート番号
プライベートポート49152~65535
個人や組織で自由に利用することができるポート番号
TCPとは

TCPとは、コネクション型通信を採用した上位プロトコル(第4層)を識別し信頼性の高い通信を提供するプロトコルです。
コネクション型通信とは、通信相手からの応答があるかを確かめてから通信を開始する
方法です。

TCPでは、この通信手順を3wayハンドシェイクと呼びます。

f:id:toto-blend:20200913195549p:plain f:id:toto-blend:20200913203807p:plain:w300

UCPとは

UDPとは、コネクションレス型通信を採用した上位プロトコル(第4層)を識別し転送速度が速い通信を提供するプロトコルです。
コネクションレス型通信とは、通信開始前に相手との応答確認を行わず通信を開始する
方法です。

TCP/UDP比較表

TCPUDP
コネクション型通信コネクションレス型通信
転送速度が遅い転送速度が速い
信頼性が高い信頼性が低い
代表上位プロトコル紹介

ポート番号とプロトコルの紐づきや転送方式(TCP/UDP)の対応は、IANA(Internet Assigned Numbers Authority)が管理しています。

Service Name and Transport Protocol Port Number Registry

プロトコルポート番号概要
FTP20ファイル転送に利用。データ転送用。
FTP21ファイル転送に利用。制御用。
SSH22ネットワークに接続された機器を遠隔操作するのに利用。
SMTP25 電子メールを送信するために利用。
DNS53IPアドレスFQDNを紐づけて名前解決するのに利用。
DHCP67ダイナミックルーティングの一種。
サーバー宛。
DHCP68ダイナミックルーティングの一種
クライアント宛。
HTTP80Webサーバとクライアント(ブラウザ)の通信に利用。
Kerberos88ユーザー認証に利用。ADなどで利用されている。
POP3110メールサーバからメールを受信するのに利用。
NTP123時刻同期に利用。
IMAP143メールサーバ上のメールを操作するのに利用。
POPとの違いは、端末にメールをダウンロードしない。
SNMP161ネットワーク機器の監視に利用。
BGP179ダイナミックルーティングの一種。
ネットワーク機器同士で経路情報を交換。
LDAP389ADなどのディレクトリサービスにアクセスするのに利用。
HTTPS443HTTPの通信間をSSL/TLSで暗号化しセキュアになったHTTP通信。
RDP3389リモートデスクトップで利用。

読んで整理するDNS用語集

f:id:toto-blend:20210420133611p:plain

この記事は、リゾルバや権威などのたくさんあるDNS用語をまとめて紹介します。

DNS(Domain Name System)とは

IPアドレスFQDNを紐づけ、変換してくれるプロトコルです。
TCP/IPのアプリケーション層に分類し、TCP/UCPポートの53番 が宛先として使われています。

ドメインインターネット上でネットワークを特定するための文字列。
インターネット上でドメイン名が重複することはありません。
ドメイン名を登録・管理を行っている組織から1年~契約することができます。
ホスト名TCP/IPのネットワーク上で、PCなどの機器を特定するための文字列。
ドメイン名と違いネットワークが、異なると同じホスト名を持っている機器が存在する場合があります。
NetBIOS名Windowsネットワーク上で使われるコンピューター名。
TCP/IPのIPとは異なり、NetBIOS名で通信相手を特定します。
Windowsでコンピューター名を設定した際には、ホスト名とNetBIOS名の両方が設定されます。
FQDN(Full Qualified Domain Name)直訳すると完全修飾ドメイン
ホスト名+ドメイン名=FQDN

f:id:toto-blend:20200809184742p:plain:w300

ドメイン名 階層構造

ドメイン名は、インターネット上で階層構造になっています。
この階層構造は、ドメイン名前空間と呼ばれていたりします。

f:id:toto-blend:20200810001033p:plain

example.com」のようにドメイン名は、ピリオドで区切られており、この単位をラベルと呼びます。

f:id:toto-blend:20200811180512p:plain

有名なドメインの種類と概要

ドメイン概要
.ルートドメイン
ドメイン名の一番右に記載されているが、省略されていることが多い。
.com元々は、商業組織向けのTLD
使用する際に制限は無く、最も使用されているドメイン
.jp日本を示す、国別コードトップレベルドメイン(略ccTLD)。
ccTLDは、その国に組織や個人の住所がなければ取得できません。
.net元々は、ITインフラ組織向けのTLD
使用する際に制限は無く、.comが使用できない場合の代わりとして良く使われる。
.org非営利組織向けのTLDwikipediaなどに使われている。
.info使用する際の制限がないTLD
.co.jp日本で登記された会社のみ使用することができるSLD。
.ne.jp日本で登記されたITインフラ組織向けのSLD。
.or.jp日本で登記された法人組織向けのSLD。
DNS名前解決正引き・逆引き

DNSは、IPアドレスFQDNを紐づけて管理しており、IPアドレスからFQDNを求めたり FQDNからIPアドレスを導き出すことを名前解決と呼びます。

DNSサーバーを構築する際は、正引き・逆引き共にできる環境で構築を進めていくと他の部分でのトラブルが減ります。

正引きFQDNからIPアドレスを導き出す方法。
様々なサービスの通信で用いられており、何かのシステム導入時に、名前解決が必須なこともよくあります。
逆引きIPアドレスからFQDNを導き出す方法。
正引きとは別のデータを元にして逆引きが行われており、正引きと比較して通信の信頼を確認する場合もあります。
DNSコンテンツサーバーとキャッシュサーバー、リゾル
DNSコンテンツサーバー別名:権威DNSサーバー
自身が管理しているDNS情報をリクエストがあった際に応答します。
実環境では、DMZによく配置されます。
DNSキャッシュサーバー別名:フルサービスリゾルバ(フルリゾルバ)
リクエストがあった際に、自身が管理しているDNS情報に該当しているものがあればそれで応答します。
なかった場合、他のDNSサーバーに問い合わせて名前解決します。
この問い合わせ結果をDNSキャッシュと呼び一定期間保持されます。
DNSキャッシュの有効期間は、名前解決のたびに毎度問い合わせるのではなく、キャッシュ情報から名前解決を行います。
スタブリゾル別名:クライアントリゾルバやDNSクライアント
そもそもリゾルバとは、DMSクライアントの名称です。
DNSキャッシュサーバーにリクエストを送信します
スタブリゾルバとDNSキャッシュサーバ間の問い合わせ・応答を再帰問い合わせと呼び、 DNSキャッシュサーバーとDNSコンテンツサーバー間の問い合わせ・応答を非再帰問い合わせ、または反復問い合わせと呼ばれています。

f:id:toto-blend:20200821163002p:plain よく使われるADのDNSOSSのbindは、DNSコンテンツサーバーとDNSキャッシュサーバーを兼用している場合があります。

DNSゾーン・レコード
DNSゾーンDNSコンテンツサーバーが管理する範囲をゾーンと呼びます。
ゾーンで扱う情報をゾーンファイルと言う設定ファイルに記載していきます。
このゾーンの情報を別のDNSサーバーに、転送・同期する手法をゾーン転送と呼びます。
ゾーン転送は、DNSサーバーの冗長化でよく利用されます。
DNSレコードゾーンファイルに記載された情報の単位をレコードと呼びます。
レコードは、数種類存在します。
Aレコード:ホスト名にIPアドレスを紐づけた情報(正引き)
PTRレコード:IPアドレスにホスト名を紐づけた情報(逆引き)
NSレコード:ゾーン情報を管理しているDNSサーバーのFQDN
MXレコード:ドメイン宛のメール配送先のメールサーバのFQDN
CNAMEレコード:ドメイン名の別名
SOAレコード:ゾーンに関する以下の情報を記載します
DNSサーバー名&管理者のメールアドレス
シリアル番号(serial):ゾーン情報が更新されたかどうかの判断情報として利用され、数値が大きければ更新されたと判断します
ゾーンファイルを更新したタイミングの年月日+連番の10桁がシリアル番号によく用いられます。
ゾーン転送間隔(refresh)&転送失敗時の再試行(retry)
レコード有効期間(expire):何かしらの理由でゾーン情報が、最新に更新できなくなった場合のレコード有効期間
DNSキャッシュ保持期間(TTL)
優先DNS・代替DNS/プライマリDNSセカンダリDNS

ごくまれに優先DNS・代替DNSとプライマリ・セカンダリDNSが、同じものだと思っている方がいますが、全くの別物です。

優先DNS・代替DNS

優先DNS最初に問い合わせるDNSサーバー
通信ができない場合は、代替DNSサーバーに問い合わせるが、レコードが存在しない場合は、代替DNSサーバーには問い合わせず、そのまま終了します。
代替DNS優先DNSサーバーと通信できなかった場合に問い合わせするサーバー

プライマリDNSセカンダリDNS

プライマリDNSメインで動いているDNSコンテンツサーバー
セカンダリDNSサブで動いているDNSコンテンツサーバー
プライマリDNSのゾーン情報をゾーン転送で冗長化したDNSサーバー

ちなみに、WindowsLinuxの問い合わせDNSの設定項目は、下記のようになっています。
Windowsイーサネットのプロパティより優先DNS・代替DNS
Linux(CentOS):nmtuiよりプライマリDNSセカンダリDNS

DNSフォワーダー

別名:DNSプロキシやDNSリレー

DNSサーバーの機能の一つで、自身で名前解決は行わず、別のDNSキャッシュサーバーに問い合わせを転送します。
スタブリゾルバとDNSキャッシュサーバーの間に中継役として配置されます。

ちなみにフォワーディングとは、別の機器から受信したデータを何も手を加えずに指定された宛先に転送することを指しています。

このDNSフォワーダーの機能は、家庭用ルーターブロードバンドルーター)によく利用されています。
DNSフォワーダー機能が設定されたルーターIPアドレスをクライアントPCなどのDNSの設定項目に入力することで、ユーザーはDNSIPアドレス意識せずに名前解決を行うことができます。

DNSサフィックス

名前解決の際に、ホスト名だけで通信が行えるようにドメイン名を自動的に、補完してくれる機能のことです。
DNSサフィックスの設定項目に補完するドメイン名を設定しておきます。

『NW基礎』IPv4アドレス、MACアドレス、ARPによる通信の仕組み

f:id:toto-blend:20210420133329p:plain

今回は、「IPアドレスIPv4)」、「MACアドレス」、「ARP」の3者による通信の仕組みを解説します。

TCP/IPカプセル化に関してはこちらの記事をご覧ください

toto-blend.hatenablog.com

MACアドレス

MACアドレスとは、NICに割り当てられる16進数48ビットの跡識別番号です。
基本的に一意の値で、TCP/IPのネットワークインターフェース層のアドレスに該当します。

MACアドレスはセグメントを超えることができず、セグメント内で重複した場合、通信障害が発生します。

例:77:21:33:12:6e:31

Ethernet

Ethernetとは、LANで用いられる、世界で最も普及している有線の通信プロトコルです。 通信の送受信先を判別するのにMACアドレスが用いられます。

NICに割り当てられたMACアドレスとケーブルで繋いだ対向にある物理ポートを紐づけたものをMACアドレステーブルといいます

MACアドレステーブルは、フレームを受信した際に学習しテーブルが更新されます。 一定期間学習した通信が使用されないと、MACアドレステーブルから削除されます。

f:id:toto-blend:20200719234916p:plain

これらを用いるネットワーク機器のL2スイッチとリピータハブのデータ転送方式として下記の2種類が存在します。

データ転送方法詳細
フラッディング宛先MACアドレスMACアドレステーブルに存在しない場合、 宛先から応答してもらうために全ポートから送信
スイッチング宛先MACアドレスMACアドレステーブルに存在する場合、 テーブルに基づき対応ポートから送信

リピータハブは、MACアドレステーブルを学習することができないため毎回フラッディングします。 学習できないことから別名バカハブとも呼ばれたりします。

IPアドレス

IPアドレスとは、通信機器に割り当てられる識別番号です。
TCP/IPネットワーク層に該当するアドレスで、IPv4IPv6の2種類が存在します。

IPアドレスも重複すると通信障害が発生します。

IPv4アドレス2進数32ビット、10進数で表記
例:192.168.1.1
IPv6アドレス2進数128ビット、16進数で表記
例: ::ffff:c0a8:101

ルーティング

ルーティングとは、通信する際の宛先までの最適な経路を選択し送信することです。 経路決定には、ルーティングテーブルと呼ばれる宛先IPアドレスネクストホップ、インターフェースが記載された一覧情報を用います。

ネクストホップとは、データを転送する隣接ルーターIPアドレスのこと

ルーティングテーブルに、宛先IPアドレスへの経路が複数存在する場合ロンゲストマッチと呼ばれる、宛先ネットワークアドレスのプレフィックス長が最も長く一致するルートを選択します。

f:id:toto-blend:20200724235912p:plain

これらを用いるルーターやL3スイッチ、PCのルーティング学習方法として下記の2種類が存在します。

スタティックルーティング宛先ネットワークへのルートを手動で設定
ダイナミックルーティング宛先ネットワークへのルートを機器同士で交換、自動で設定

ARP

ARPとは、IPアドレスMACアドレスの情報を求めるためのプロトコルです。

IPアドレスMACアドレスは、それぞれ異なるレイヤのアドレスであり、紐づける仕組みが存在しないためARPを用いる必要があります。

IPアドレスで宛先が分かったとしてもHWと関連づけられていないため通信ができません。合わせてMACアドレスを利用することで、どのNICに送るといった判別が可能になり通信が成立します。

ARPテーブル(ARPキャッシュ)というIPアドレスMACアドレスが紐づけられた一覧情報を用いてIPアドレスMACアドレスを連携し通信します。

f:id:toto-blend:20200729010823p:plain

『NW基礎』TCP/IP&OSI参照モデルとカプセル化を紹介

f:id:toto-blend:20210420133130p:plain

今回は、TCP/IPOSI参照モデルについて紹介します。 また、プロトコルを学ぶ上で重要な処理、カプセル化と非カプセル化についても紹介します。

プロトコルとは

機器同士が通信を行う際に定められた手順や規格のことをプロトコルと呼びます。

通信を行う機器同士が、同じプロトコルであれば通信が成立します。

f:id:toto-blend:20200713230306p:plain

昔は、各メーカーが独自のプロトコルを採用していたため、同じメーカ同士の機器しか通信ができない時代がありました。

しかし現代は、RFC(Request for Comments)によって定められたTCP/IPが国際標準規格として、世界中のネットワーク技術の発展につながっています。

RFCとは、IETFというインターネットに関する非営利組織が定めている技術仕様のこと

TCP/IPOSI参照モデル

TCP/IPOSI参照モデルとは、階層ごとに分けられたプロトコル群の総称です。
それぞれ、下記のような違いが存在します。

OSI参照モデル国際化標準化機構(ISO)が規定
7階層に分けられたプロトコル群の総称
TCP/IPRFC(Request for Comments)によって規定
4階層に分けられたプロトコル群の総称
インターネット・プロトコル・スイートとも呼ばれる

f:id:toto-blend:20200716230330p:plain

OSI参照モデルTCP/IPでは各階層ごとに割り当てられたプロトコルにも差異があります。

歴史的に、TCP/IPのほうが始まりは少し早く1990年代ごろにTCP/IP対応製品が急速に普及し現在OSI参照モデルは、使われておりません。

しかしOSI参照モデルは、基本情報技術者試験にも出題されるので覚えておきましょう。

主要プロトコルとネットワーク機器をTCP/IPに基づき階層分けすると下記のようになります。

f:id:toto-blend:20200718172519p:plain

カプセル化と非カプセル化

通信時のデータのやり取りとして送信時は、上位レイヤ→下位レイヤ
受信時は下位レイヤ→上位レイヤの順番にデータを順に受け渡していきます。

データの受け渡し時、各レイヤでヘッダと呼ばれる情報が付加・展開されます。
ヘッダの内容は、用いるプロトコルによって変わります。

送信時に、各レイヤでヘッダを付加し下位レイヤに受け渡す処理をカプセル化
受信時に、各レイヤでヘッダを展開し上位レイヤに受け渡す処理を非カプセル化
といいます

ヘッダの中にあるIPなどの情報を読み取って通信を行っています。

f:id:toto-blend:20200718172425p:plain

各レイヤのデータ+ヘッダのひとまとまりをPDU(Protocol Data Unit)という単位で扱います。 各階層によってPDUの呼び方が下記のように変わります。

PDU(Protocol Data Unit)各層呼び方
トランスポート層セグメント
ネットワーク層パケット
ネットワークインターフェース層フレーム

『NW基礎』インターネット・LAN・WANの違い

f:id:toto-blend:20210420132758p:plain

今回は、「インターネット・LAN・WAN」について違いを紹介します。
また、エンジニアの仕事の中でまだまだ聞くであろう「イントラネット」についても紹介します。

インターネット

世界中の不特定多数の個人や組織が相互接続して形成された巨大なネットワークのことをインターネットと呼びます。

例えば、日常生活でPCやスマホからWebページを見ることもあるかと思います。
その、Webもインターネットの一部です。

作品、かぐや様でもありましたが「インターネットが壊れたの!!」という言葉は、中々面白いジョークですね。

alu.jp

WAN(Wide Area Network)

地理的に離れた場所に存在する機器同士で、相互接続し形成されたネットワークをWANと呼びます。

また、LANとLAN同士を相互接続し形成されたネットワークのLAN間をWANと呼ぶ場合もあります。

ちなみに、テレワークを実現するための技術として話題に上がるVPNはWANで用いられるものです。

f:id:toto-blend:20200711225532p:plain

LAN(Local Area Network)

建物内に存在する機器同士で、相互接続し形成されたネットワークをLANと呼びます。

  • 家庭内でWi-Fiルータスマホなどを接続して形成されたネットワークを家庭内LAN
  • 社内でPCなどを接続して形成されたネットワークを社内LAN

上記の説明からまとめるとインターネット・WAN・LANの順にネットワークの規模が異なります。
インターネット>WAN>LAN

f:id:toto-blend:20200712002651p:plain

イントラネットエクストラネット

TCP/IPに基づき構築された社内ネットワークをイントラネットと呼びます。
また、イントラネット同士で形成されたネットワーク間をエクストラネットと呼びます。

LAN=イントラネット、WAN=エクストラネットの考えで、ほぼほぼ間違いないです。

余談にはなりますが、このイントラネットエクストラネットは企業内ネットワークとして当たり前になったため死語だともいわれています。