カテゴリー : IT勉強

IPアドレス(インターネット層)

TCP/IPプロトコル「インターネット層」IPアドレスをもう少し詳しく。

IPアドレスは、インターネット層のIPプロトコルが最終的にデータのやりとりをするPCなどの機器を特定するための識別子です。
TCP/IPに参加している機器はIPアドレスが付けられます。
クライアントは1台につき1つのIPアドレスを付けるのが一般的です。
サーバーやネッワーク機器などは、複数のIPアドレスが付けられることもあります。

IPプロトコルがつくるデータグラムのヘッダには、自分のIPアドレスと通信相手のIPアドレスの情報が含まれています。
IPプロトコルは、通信相手のIPアドレスの情報を参照し、「どのネットワークを経由していくか」ということを決定することがルーティングを行います。

IPアドレスには、べージョンがあり、現在普及している「IPv4
IPv4は、現在普及している全32ビットのIPアドレスを使用した通信方式のことです。
「192.168.0.1」
のように表記します。

アドレス資源を32ビットで管理しているため、識別できるコンピュータの最大数は42億9496万7296台です。
IPv4のIPアドレス約43億個なので、アドレス資源の枯渇が問題になりました。
2010年8月時点で、残り5%ということろまできています。(IPv4枯渇時計

そこで、IPアドレスを128ビットで管理する「IPv6」に移行を進めています。
IPv6の表記は
「2031:0000:130F:0000:0204:76ff:fe9c:c041」
のようにします。

IPv6では、約340澗(340兆の1兆倍の1兆倍)個のアドレスが使えるようになります。(2の128乗)
「澗」という単位までいってしまいます。
これから、枯渇の心配はなさそうですね。(うまく普及がすすんでいないようですが・・・)

IPv6の普及状況

ポート番号の種類

ポート番号の種類

ポート番号は0~65535番まであります。

0~1023番は「ウェルノウンポート番号(the Well Known Ports)
1024~49151番は「予約済みポート番号(the Registered Ports)
49152~65535番は「動的・プライベートポート番号(the Dynamic and / or Private Ports)

各範囲のポート番号の役割

ウェルノウンポート番号は、特定の用途に使用するポート番号としてICANNの一部であるIANAという組織が管理しています。

予約済みポート番号は、サービスやアプリケーションごとに割り当てられたポート番号です。IANAが登録を受け付けています。

動的・プライベートポート番号は、自由に使えるポート番号です。クライアントはこの範囲のポート番号を使います。
クライアント側はこの範囲を使います。
「ポート解放」をするのも、動的・プライベートポート番号の49152~65535番を使います。

主なウェルノウンポート番号

ポート番号 TCP/IP プロトコル(Protocol) 用途
20 TCP ftp-data ファイル転送(データ本体)
21 TCP ftp ファイル転送(コントロール)
22 TCP ssh リモートログイン(セキュア)
23 TCP telnet リモートログイン
25 TCP SMTP メール送信
53 TCP/UDP domain DNS(名前解決はUDP,ゾーン転送はTCP)
67 UDP BOOT/DHCP Server IPアドレスの自動取得
68 UDP BOOT/DHCP Client IPアドレスの自動取得
69 UDP TFTP ファイル転送
80 TCP HTTP www
110 TCP POP3 メール受信
123 UDP NTP 時刻合わせ
143 TCP imap メール受信
443 TCP https www(セキュア)
520 UDP RIP ルーティングプロトコル

ポート番号って??

「○番のポートを解放してください。」ってなんだろう?って思ったことある人いませんか?
P2Pソフトを使っていた人は、ポート解放をしていたと思いますが、ポートってなんでしょうか?

ポートとは

アプリケーション層のソフトウェアとトランスポート層(TCPとUDP)でデータをやりとりするための仮想的な通路の出入口ことです。
いろいろな出入口(ポート)がたくさんあるので、番号をつけて識別しています。

ネットでメールやウェブ閲覧などを同時に行えるのも、ポートが複数存在しているからです。
例えば、SMTP(メール)は25番だったり、HTTP(ウェブ)は80番といったふうに割り振られています。
主なポート番号はこちらを参照)

プログラムでポートを用いて通信するには、一般にソケットと呼ばれる仕組みを使います。
ソケットとは、通信の端点のことで、2台のコンピュータが通信しているとき、その通信路の両端、すなわちそれぞれのコンピュータにソケットが存在します。

「トランスポート層」の働きはこちらを参照してください。

サーバーとのデータのやり取りを考えてみましょう。
クライアント側からの要求(データ)をサーバーに送るときにTCPセグメントで、ヘッダを付け加えます。
この一連の流れは『TCP/IP「各レイヤの動き・カプセル化」』を参照)
このヘッダには、ポート番号の情報を宛先として加えています。
サーバーは、ヘッダをみて、どのポート番号に要求されたデータを送ればよいのかを判断しています。

普段何気なくインターネットを楽しんでいたりしますが、ネットワークだけみても裏では多くの処理がされているのですね。

TCP/IP「各レイヤの動き・カプセル化」

TCP/IPがどのように働いているのか、各レイヤごとにみてみよう。

「メールを送信」を例にしてみていきます。

各レイヤの動き

ユーザーがメーラーを使ってメールを作成します。
一般的なメーラーはアプリケーション層のプロトコルSMTPに対応していますので、SMTPの決まりごとに沿って「メール」に必要な情報をヘッダとして付けます。
下位のレイヤに渡されます。

アプリケーション層(SMTP)からトランスポート層(TCP)に渡され処理が行われます。
データを分割し、メール受信側のTCPが処理できるように必要な情報をヘッダに付けます。
このとき、「TCPセグメント」と呼ばれます。

さらに、下位のレイヤに渡されます。

トランスポート層(TCP)からインターネット層(IP)に渡され処理が行われます。
データを分割し、必要な情報をヘッダに付けます。
このとき、「IPデータグラム」と呼ばれます。

さらに、下位のレイヤに渡されます。

ネットワークインターフェイス層(イーサネット)で受け取ったIPデータグラムを処理が行われます。
イーサネットでは、ヘッダとトレーラが付けられます。
このとき「フレーム」と呼ばれます。
電気信号に変換されてネットワークへと送られます。

受信側は、この手順と逆にネットワークインターフェイス層から上位レイヤへ処理が行われます。

ヘッダには、データの宛先や送信元情報、エラーチェック情報といった管理用のデータが格納されます。

セグメント、データグラム、フレームなどの呼び分けは以下を参照してください。
TCP/IPの各層における一般的な呼び方

カプセル化

各レイヤで作成した「セグメント」や「データグラム」などは、ヘッダと本体データを1つのかたまりとして扱われ、上位層のデータを順々に下位層の情報で包み込んでいきます。
これを「カプセル化」と呼びます。

「パケット」の呼び分け

携帯電話が普及して「パケット」って名称は一般的になってきました。
「パケット」にも、細かく各階層(レイヤ)で呼び方が違うこと知っていますか?

TCP/IPとOSI参照モデルでも、パケットの呼び方が違います。
OSI参照モデルでは「PDU」と呼んでいます。

TCP/IP内でも、レイヤごとに作るパケットを呼び分けることもあります。
それぞれのレイヤごとに固有の呼び名があるのです。

TCP/IPプロトコル 取り扱われるデータの単位(PDU)
アプリケーション層 データ/メッセージ
トランスポート層 セグメント
インターネット層 パケット/データグラム
データリンク層 フレーム
物理層 ビット(電気信号)

また、「IPパケット」や「TCPパケット」とプロトコル名を最初に加える呼び方も使われたりします。

「パケット」にも、いろいろと呼び方が違っていたりしますが、「違う呼び方で呼ぶことがあるんだ。」程度に覚えておけばあまりこだわる必要はないかもしれません。

クリエイティブコモンズ3.0 解説まとめ

クリエイティブ・コモンズ 3.0 まとめ

クリエイティブコモンズが良く分からないので、調べてみた。
以下6項目があり、すべて原作者クレジット表記が必要。

  • Creative Commons 3.0 Attribution
  • 原著作者クレジット表記が必要。商用利用OK。改変OK。
    ただ「Creative Commons」や「Creative Commons Licenses 3.0」と表記されているものは、Creative Commons 3.0 Attributionとして扱っても問題ない。

  • Attribution-NoDerivs
  • 原著作者クレジット表記が必要。商用利用OK。改変NG。

  • Attribution-NonCommercial-NoDerivs
  • 原著作者クレジット表記が必要。商用利用NG。改変NG。

  • Attribution-NonCommercial
  • 原著作者クレジット表記が必要。商用利用NG。改変OK。

  • Attribution-NonCommercial-ShareAlike
  • 原著作者クレジット表記が必要。商用利用NG。改変OK。
    ただし、改変し頒布する創作物はライセンス体系を同じにする必要がある。
    この場合は「Creative Commons 3.0 Attribution-NonCommercial-ShareAlike」としなければならない。

  • Attribution-ShareAlike
  • 原著作者クレジット表記が必要。商用利用OK。改変OK。
    ただし、改変し頒布する創作物はライセンス体系を同じにする必要がある。
    この場合は「Creative Commons 3.0 Attribution-ShareAlike」としなければならない。

未だに何がどうだったかわからなくなるので、メモでした。

クリエイティブ・コモンズ・ライセンスとは

TCP/IPの各レイヤ識別子

ネットワークでデータをやり取りするときは、どの相手とデータをやり取りするのか特定する必要があります。
TCP/IPの各レイヤは、相手を特定するために識別子をつける仕組みを持っています。
レイヤによって識別方法が違います。

ネットワークインターフェイス層

ネットワークインターフェイス層のイーサネットは、MACアドレスを使って直接データをやり取りするPCなどを特定します。

インターネット層

インターネット層のIPプロトコルは、IPアドレスで相手を特定します。

トランスポート層

トランスポート層のTCPとUDPは、アプリケーション層を担当するソフトウェアとの間に階層的な通路を作りデータを受け渡します。
何本もある仮想的な通路を識別するためにポート番号を使っています。

1回のデータのやりとりに3つの識別子

各レイヤで別々の識別子を使うので、1回のデータのやりとりに、3つの識別子を使っています。

アプリケーション層

データをやり取りする相手のIPアドレスとポート番号は、アプリケーション層のソフトウェアが自動的に指定します。
MACアドレスは、IPアドレスと対応させるためのプロトコル「ARP」を使います。


TCP/IPの4つのレイヤの解説

HTTP「ウェブサービスの働き」

TCP/IPプロトコル「アプリケーション層」に属するプロトコル「HTTP」
(Hypertext Transfer Protocol)

ブラウザ(クライアント)がウェブサーバーにデータを要求すると、サーバーが要求されたデータを送るシンプルなものです。
HTTPを使用します。

ウェブサーバを構築するには「Apache」や「IIS」などウェブサーバーソフトを使います。

クライアントからサーバーに要求するデータをHTTPリクエストといいます。
HTTPリクエストのヘッダにはメソッド、URI、データ形式などが含まれています。

メソッドとは「何をするか」を表すコマンドで「GET」「POST」などがあります。
GETの場合は、URIで指定したファイルをサーバーがクライアントに送ります。
POSTの場合は、クライアントからサーバーにデータを送ります。

「GET」のHTTPリクエストを受け取ったサーバーは、HTTPリクエストで指定されたデータにヘッダを付加しHTTPレスポンスをクライアントに送ります。

HTTPリクエストを送り、HTTPレスポンスを返す。


Apacheとは、フリーソフトウェアとして無償で公開されており、世界中のプログラマたちがボランティアで長年に渡って開発を続けている。
現在、安定版の最新バージョンは2.2.16が公開されている。

TCP/IPプロトコル「ネットワークインターフェイス層」

TCP/IPのネットワークインターフェイス層の役割について。

OSI参照モデルでの、第1層「物理層」、第2層「データリンク層」にあたります。

ケーブルや端子の形状、信号の形式など物理的な決まり事を定めています。
さらに、機器間のデータのやり取りに関する決まり事も定めています。

なので、TCP/IPのネットワークインターフェイス層をデータリンク層と物理層に分けて考えることもあります。

ネットワークインターフェイス層の代表的なプロトコル

「イーサネット(Ethenet)」
「PPP」
などがあります。

「イーサネット(Ethernet)」は、イメージ的にケーブルなどの物理的な決まり事のように思えるかもしれませんが、データを処理する役割もあります。
データを処理する役割を「イーサネットプロトコル」と呼ぶこともあります。

「PPP」は、PCなどの機器が1対1で接続されている回線でデータのやり取りをするためのプロトコルです。
電話回線を使ってインターネット接続を行うときに使われました。
現在は、イーサネットが家庭にも普及しているため、使われなくなりました。

しかしパスワード認証機能があるので、会員の認証するときに使われます。
イーサネットとセットで使うPPPoE(PPP over Ethernet)というプロトコルが開発されました。
PPPoEを使えば、イーサネットを利用したネットワークでユーザー認証を行うことができます。
ADSLやFTTHで使われています。


TCP/IPの4つのレイヤの解説

TCP/IPプロトコル「インターネット層」

TCP/IPのインターネット層の役割について。

OSI参照モデルでは、第3層「ネットワーク層」にあたります。

データをやり取りする相手との通信に関する決まり事を定めています。
インターネット層はIP・トランスポート層はTCPとTCP/IPプロトコル群の基盤となるプロトコルです。

IPとルーティング

データをやり取りするには、「IPアドレス」が必要になります。
IPアドレスは、相手がどの場所に存在するのかを示す住所のようなものです。

IPアドレスがわかれば、次に「どのルートでデータを送るか」を決めます。
ルーティング」と呼びます。

IPの役割は、主に「IPアドレスの管理」と「ルーティング」になります。

インターネット層のプロトコル

ネットワーク層には、IPプロトコル以外にも、ARP、RARP、ICMPなどもあります。

ARP(Address Resolution Protoco)プロトコルとは、IPアドレスから物理層のネットワーク・アドレス(MACアドレス)を求めるために利用されるプロトコル。
RARP(Reverse Address Resolution Protocol)プロトコルとは、ARPとは逆の意味でMACアドレスからIPアドレスを取得するためのプロトコル。
ICMP(Internet Control Message Protocol)プロトコルとは、IPプロトコルがエラーした場合に対処するためのプロトコル。

[ping]コマンドには、ICMPプロトコルが使われています。


TCP/IPの4つのレイヤの解説