ポート番号のソースを表示
←
ポート番号
移動先:
案内
、
検索
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
'''ポート番号'''(ポートばんごう)とは、[[コンピュータ]]が[[データ通信]]を行う際に通信先のプログラムを特定するための番号のことである。 == 概要 == [[コンピュータネットワーク|ネットワーク]]上でコンピュータ(計算機)同士がデータを交換する[[プロトコル]]の一つである[[インターネット・プロトコル・スイート|TCP/IP]]においては、[[IPアドレス]]により通信相手のコンピュータを指定するが([[Internet Protocol|IP]]・[[ネットワーク層]])、そのコンピュータ上で動いている複数の[[プログラム (コンピュータ)|プログラム]]のうちの一つを通信相手として指定するために、'''ポート番号'''を用いる([[Transmission Control Protocol|TCP]]や[[User Datagram Protocol|UDP]]・[[トランスポート層]])。指定できる番号の範囲はTCPやUDPなどの通信の種類毎にそれぞれ 0 から 65535(16ビット符号無し整数)と定められている。 これらの番号と、TCPやUDPなどの通信プロトコルの指定との組み合わせで特定される、論理的な通信の口を'''ポート'''と呼ぶ。 IPアドレスを建物の住所にたとえるなら、ポート番号は部屋番号に相当する。 ポート(Port)の語源は,船舶の左舷,すなわち,荷出入り口であって,旅客航空機もそれにならって左側に搭乗口がある。つまり,ポート番号とは,出入り口番号を意味する。 そう。 ポート番号とはポストと同様の存在である。 == ポートとソケット == プログラムでポートを用いて通信するには、一般に'''[[ソケット (BSD)|ソケット]]'''と呼ばれる仕組みを用いる(ソケットは[[BSD]]で開発されたため、特に'''BSDソケット'''とも呼ぶ)。ソケットとは通信の端点のことで、2台のコンピュータが通信しているとき、その通信路の両端、すなわちそれぞれのコンピュータにソケットが存在する。また、ソケットの[[インタフェース (情報技術)|インターフェース]]やソケットを扱う[[ライブラリ]]プログラムも併せてソケットと呼ぶこともある。 ソケットを用いた通信は、以下のような手順で行われる。 # [[サーバ]]機でサービスを提供するプログラムは、ソケットを作成し、サービス固有のポート番号をソケットに割り当て (bind)、待ち行列を用意し (listen)、クライアントからの接続を待ち受ける (accept)。 # サービスを利用する[[クライアント]]プログラムは、ソケットを作成し、そのソケットの通信相手として[[サーバ]]機のIPアドレスと[[サービス]]のポート番号を指定し (connect)、接続を行う。 # サーバは接続を受け付けると、新規にソケットを作成し、そのソケットとクライアントとの間に通信を確立する。もとのソケットは再び待ち受けに戻る(これは、会社などで、受付係が来客を担当者に引き合わせ、その後また受付に戻るようなものと考えることができる)。 # 通信が終わると、2.および3.で作成したソケットは破棄される。 これらの手順に沿って通信を行うプログラムの形式は、ソケットプログラミングと呼ばれる。 WWW (HTTP) の場合、原則としてHTMLファイルや画像ファイルを1件取得するたびに上記2.~4.の手順が繰り返されるため、アクセスが集中するとサーバの負荷が非常に高くなる(ただしHTTP 1.1では1回の接続で複数件のデータを取得する動作がデフォルトとなっている)。 このように、ポート番号とはサーバ上のサービスを特定するための番号であるといえる。そのため、サーバ側のポート番号は重要であるが、クライアント側のポート番号は通常問題とされず、空いている番号を適当に自動で割り当てる。 なお、上記手順の3.で作成されるソケットは、待ち受け用のソケットと同じIPアドレス・ポート番号・プロトコル (TCP/UDP) を有する。 すなわち、1台のサーバ機に、同じIPアドレス・ポート番号・プロトコルのソケットが複数存在し得る(ポートとソケットは一対多の対応となり得る)ことに注意が必要である。 この様子は、同時に複数の相手と通信を行っているWebサーバなどで、[[netstat]]コマンド(ソケットの通信状況を表示するコマンド)を実行してみるとよくわかる。 $ netstat tcp4 0 0 xxx.yyy.zzz.www.80 aaa.bbb.ccc.ddd.39321 ESTABLISHED tcp4 0 0 xxx.yyy.zzz.www.80 eee.fff.ggg.hhh.56047 TIME_WAIT tcp4 0 0 xxx.yyy.zzz.www.80 iii.jjj.kkk.lll.41358 TIME_WAIT tcp4 0 0 xxx.yyy.zzz.www.80 mmm.nnn.ooo.ppp.3356 FIN_WAIT_2 tcp4 0 0 xxx.yyy.zzz.www.80 qqq.rrr.sss.ttt.3355 FIN_WAIT_2 ここでxxx.yyy.zzz.wwwはこのWebサーバ機のIPアドレス、80はWebサーバプログラムのポート番号、右側は各クライアントのIPアドレスおよびポート番号である。 == ポート番号の種類 == ポート番号は大別して 3 種類に分けられる。 {| class="wikitable" |+'''ポート番号の種類''' !種類!!範囲!!内容 |- |WELL KNOWN PORT NUMBERS||align=right|0番 - 1023番||一般的なポート番号 |- |REGISTERED PORT NUMBERS||align=right|1024番 - 49151番||登録済みポート番号 |- |DYNAMIC AND/OR PRIVATE PORTS||align=right|49152番 - 65535番||自由に使用できるポート番号 |} WELL KNOWN PORT NUMBERは、[[Internet Assigned Numbers Authority]] (IANA) が管理している。REGISTERED PORT NUMBERSに関しても、IANAが利便性を考慮して公開している。なお、クライアント側に割り当てられるポート番号など、ユーザが自由にポート番号を使用する場合は、49152番以降を使用する。クライアントのポート番号は俗に[[エフェメラルポート]](短命なポート)と呼ばれる。 [[1992年]]まではWELL KNOWNポート番号は1~255までだった。 ただし、これはあくまで指針であり強制力はない。これに従わず勝手なポート番号を用いて通信することも一応は可能であるが、混乱を招くであろう。 なお、[[Unix系]]のOSでは、0〜1023番のポートを使用するには、通常、[[ルート|root]]権限が必要で、予約ポートとも呼ばれる。 == 代表的な例 == 以下は、一般的に使用されるポート番号の一覧である。 * TCP/20 : [[ファイル転送プロトコル|FTP]] (データ) * TCP/21 : FTP (制御) * TCP/22 : [[Secure Shell|SSH]] * TCP/23 : [[Telnet]] * TCP/25 : [[Simple Mail Transfer Protocol|SMTP]] * UDP/53 : [[Domain Name System|DNS]] * UDP/67 : [[Dynamic Host Configuration Protocol|DHCP]](サーバ) * UDP/68 : [[Dynamic Host Configuration Protocol|DHCP]](クライアント) * TCP/80 : [[Hypertext Transfer Protocol|HTTP]] * TCP/110 : [[Post Office Protocol|POP3]] * TCP/119 : [[Network News Transfer Protocol|NNTP]] * UDP/123 : [[Network Time Protocol|NTP]] * UDP/137~138 : [[NetBIOS]] * TCP/139 : [[NetBIOS]] * TCP/143 : [[Internet Message Access Protocol|IMAP]] * TCP/443 : [[HTTPS]] * TCP/445 : ダイレクトホスティング[[Server Message Block|SMB]]サービス * TCP/587 : Submission(メール送信) プロトコル名称とポートの対応表は、[[Unix系]]OSや[[OS X|Mac OS X]]では/etc/servicesに、[[Windows NT系]]では%SystemRoot%\System32\drivers\etc\servicesにテキストファイルとして存在する。ただしIANAに登録されているものがすべて記載されているとは限らない。 == ポートと不正アクセス == 一般に、コンピュータ内には様々なプログラムが動いている。近年は通信処理を行うのに十分な能力を持つコンピュータが安価になったことから、家庭用のパソコン内でもいわゆるサーバ機能を有するプログラムが多数動作している。これらのプログラムはポートを作成して結合を待ち受けているが、プログラムの不備があると、ある特別なデータを受信した時にプログラムが誤作動することがある。悪意を持って巧妙に作られたデータの場合、本来通信データとして送信してはいけない情報(コンピュータ内に隠匿してあるはずの[[パスワード]]など)を勝手に送信してしまうような誤動作をさせられることもある。このような誤作動の元となるプログラムの不備のことを[[セキュリティホール]]と呼ぶ。 セキュリティホールのない[[ソフトウェア]]を用いるのが最善の策であるが、プログラムが人間によって作られるものである限り誤りを完全になくすことはできない。また、セキュリティホールになりえる動作でも用途によっては便利な機能であることがあり、悪意のあるデータが送られてこないことが保証されていればそのソフトウェアを動かしたい場合も多い。 このような場合のために、安全を確保しやすい内部の[[Local Area Network|LAN]]と何者がいるかわからない外部の[[インターネット]][[コンピュータネットワーク|網]]との間の通信に介入し、不正な通信の一部を遮断するということが行われる。この遮断機能を[[ファイアーウォール]]と呼ぶ。 ファイアーウォールにはいくつかの手法があるが、最も多く用いられているのはソケットのバインドを規制するものである(パケットフィルタ型)。特定のポート番号とのバインドができないようにしたり、逆に特定のポート番号とのバインドしかできないようにすることにより、ユーザが気づかないうちにコンピュータが外部と勝手に通信してしまうのを防ぐのである。また、TCPのように通信回線確立の手順があるプロトコルにおいては、LAN側からインターネット上にあるサーバに対して接続開始を要求するのは認めるが、インターネット側からLAN上のコンピュータへの接続開始の要求は通さないということもよく行われる。 ファイアーウォールはソフトウェアまたはハードウェアの形態を取り、その機能はルーター(LANとインターネットの接続点に位置する)に内蔵されたり、コンピュータ内部に導入されたりする ([[IDS]])。[[パーソナルコンピュータ|パソコン]]向けのIDSは特に[[パーソナルファイアウォール]]と呼ばれる。 一般論として、ネットワーク経由で記憶媒体を共有する、いわゆる「ファイル共有」を実現するサービスは、処理の高速化などの必要性からプロトコルが単純化されておりセキュリティ面での脆弱性を持つ事が多い。特に[[Microsoft Windows]]がファイル共有などの実現に用いているNETBIOSと呼ばれるプロトコルは非常に広く用いられているにもかかわらずプロトコルの脆弱性が高いといわれている。このため、NETBIOS用として定義されているポート番号137番〜139番(TCPとUDP)については、インターネットとLANを接続するルータにおいて通信を遮断する事が強く推奨されている。市販のルータでは工場出荷状態でこれらのポートの通信遮断設定が入っている事が多い。 == ポートフォワード == 近年のインターネットの爆発的な拡大にともない、コンピュータ1台1台を識別するはずのIPアドレスの数がコンピュータの台数よりも遥かに少ないという状況が起こってしまった。[[IPv6]]を用いてIPアドレスの数を飛躍的に増加させるという動きもあるが、現状では一つのIPアドレスを複数のコンピュータで使い回すということが行われている。 この際、「[[電子メール]]の受信サービスを行うのはAというコンピュータ」「[[World Wide Web|WWW]]のサービスを行うのはBというコンピュータ」というように、サービス毎に処理をするコンピュータが違うようにするためには、「ポート番号25番の通信はAへ」「ポート番号80番の通信はBへ」というようにポート番号毎に通信先を振り分ければよい。このポート番号による通信コンピュータの振り分けの機能を「ポートフォワード (''port forward'')」と呼ぶ。 一般に、ポートフォワードは[[NAPT]](ルータによるIPアドレス/ポート変換)や[[パケットフィルタ]]の機能の一部として実現される。 == 関連項目 == * [[インターネット・プロトコル・スイート|TCP/IP]] * [[インターネット]] * [[ポートマップ]] * [[エフェメラルポート]] * [[TCPやUDPにおけるポート番号の一覧]] == 外部リンク == * [http://www.yougetsignal.com yougetsignal.com] * [http://www.iana.org/assignments/port-numbers IANAによるポート番号の一覧] [[Category:インターネットのプロトコル|ほおとはんこう]]
ポート番号
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
新しいページ
最近の更新
おまかせ表示
sandbox
commonsupload
ヘルプ
ヘルプ
井戸端
notice
bugreportspage
sitesupport
ウィキペディアに関するお問い合わせ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報