Webplaza ArchNetz

TCP・UDP


Front Page



通信を行う際にIPと同じ重要な働きをするTCP・UDP。
TCP及びUDPで通信をする際には、IPアドレスの他に【ポート番号】と言う物をKeyにして通信を行います。このポート番号とは、受信した端末がどのサービスを利用するかを決定する為に必要な情報で、とても重要な物です。
プロトコルには、それぞれの果たす役割が決められています。その中でも重要なネットワーク層プロトコルであるIPの役割は、IPアドレスを基にして宛先ホストまでパケットを送り届ける事ですが、総てのパケットを確実に宛先に届ける義務までは負っていません。相手に確実に届いたかどうかを確認したり、途中で消えてしまったパケットを再送してくれません。あくまでも【相手に届ける】だけで、それ以上の事は総て上位層で解決しなければならないのです。そこでポートを介して上位層のアプリケーションと下位層のIPを結びつける役割を持つTCPやUDPの働きが重要に成ります。


■■■ TCPプロトコル ■■■


TCP【Transmission Control Protocol】はコネクション型のプロトコルで、データを送信する時の制御が非常に複雑です、これらの複雑な機能によって、IPと言う信頼性が無いネットワーク層を利用して信頼性の高い通信を実現しています。TCP通信はデータを受信後、送信側に確認応答(ACK)パケットを返します。

・信頼性の無いIPから送られてきたデータを、ACKを使った応答確認によって信頼性のある形でアプリケーションに渡します。
・TCPヘッダに含まれている情報
1.送信元ポート/送信先ポート番号:送信されたパケットがどのアプリケーションを必要としているかを示します。
2.シーケンス番号/応答確認番号:受信側で分割されて到着するセグメントを分割前の順番に繋ぎなおします。
3.フラグ:【SYN】【ACK】【FIN】等6種類有り、コネクションの確立を希望する側から送信されます。
4.ウィンドウサイズ:セグメントが欠落した時の受信側でのデータのバッファリング可能なバイト数。
・コネクション管理:コネクション確立・切断に必要なパケットの往来を管理します。
・信頼性の確保の為、オーバーヘッドが大きくなります。
・ウィンドウ制御/フロー制御:受信データが多過ぎて受信側の処理が追いつかない時、送信側に対してデータ転送の中止・再開を指示します。
・データ送信の際、最大セグメント長(MSS)のサイズに分割されて送信されます。


■■■ UDPプロトコル ■■■


UDP【User Datagram Protocol】は、IPに依存したコネクションレス型のプロトコルです。相手の受信状態に関わらず、データを一方的に送信します。ネットワークが混雑していた場合やパケットが紛失した場合でも再送しない等、信頼性は低いが高速な通信を行う事ができます。用途としては、極端に少ないデータ量やマルチメディア、限定された範囲への通信、マルチキャストやブロードキャスト等の同報性が無い通信等に使用されます。UDPはTCPに比べて正確さには欠けますが、高速性を確保できます。

・コネクションレス型通信を行います。(TCPはコネクション型)
・UDPヘッダに含まれている情報(全8バイト)
1.送信元ポート番号
2.宛先ポート番号
・通信の効率を重視します。(お互いの通信の状態を確認する必要が無い為)
・パケットの届く順番を保障せず、損失にも対処できませんが、TCPに比べてオーバーヘッドが少ない。
・ユニキャストだけでなく、ブロードキャストの通信にも適しています。
・TCPに関連するアプリケーションがユーザサービス寄りであるのに比べて、UDPアプリケーションはシステムの機能として使われる物が多い(TCPはWEB通信。UDPはSNMPのネットワーク監視等)


■■■ シーケンス番号 ■■■


送信したデータが受信対象に到着した時、受信ホストは送信ホストにデータが到着した事を伝えます。これを確認応答(ACK)と言います。また、再度問い合わせし直す事を、否定確認応答(NACK)と言います。
データ送信した後に、ある程度待ってもACKが帰ってこない場合や確認応答データが喪失した場合等は、データを再送処理します。シーケンス番号は、データの重複を防いだり、データの順番、喪失を起こさないようにする為に付加されている番号です。
TCPは、一つ一つのセグメントをやり取りする度に、シーケンス番号と応答確認番号をチェックし、セグメントの順番の確保や欠落を確認しています。


■■■ コネクション管理 ■■■


TCPでは、通信する前にコネクションの確立要求(SYN)を送信して、コネクションを確立してからでないと通信を行う事ができません。また、通信が終了した場合でもコネクション切断要求(FIN)を出してコネクションを切断します。この手続きは3回のパケット交換が必要な事から【3ウェイハンドシェイク】と言います。


■■■ ポート番号 ■■■


TCP・UDPは、ネットワーク層から送られたIPパケットをどのアプリケーションに渡せば良いのかを識別する機能を持っています。そこでアプリケーションを区別するのに【ポート番号】と言われる識別情報が使用されます。
各アプリケーションは、どのポート番号のパケットが来たら自分に渡して欲しいかをTCPまたはUDPに予め指定して置きます。そしてTCP・UDPは、受信パケットの宛先ポート番号をチェックし、適切なアプリケーションに引き渡します。

アプリケーションを区別するために使われるポート番号には、使用出来る数が予め決められており、アプリケーションの種類によって固定されている物が有ります。
ポート番号は16ビットの長さを持つ為0番~65535番まで利用できますが、その内0番~1023番までが【Well Known Port】として予約されています。
それに対してクライアント側のポート番号は、その場その場で使用していない番号をOSが割り当てるように成っています。これを【User Port】と言い、1024番~49151番までが利用されます。残りの49152番~65535番は【Private Port】として、独自に開発したサーバ等での待ち受け用に使用されます。


よく見かけるポート番号

TCP/20 : FTPデータ
TCP/21 : FTP制御
TCP/22 : SSH
TCP/23 : telnet
TCP/25 : SMTP
UDP/53 : DNS
UDP/67 : DHCPサーバ
UDP/68 : DHCPクライアント
TCP/80 : HTTP
TCP/110 : POP3
TCP/119 : NNTP
UDP/123 : NTP
TCP/143 : IMAP
UDP/161 : SNMP
TCP/443 : HTTPS
TCP/445 : SMB
TCP/465 : SMTP over SSL/TLS
TCP/587 : SMTP サブミッションポート
TCP/993 : IMAP over SSL/TLS
TCP/995 : POP over SSL/TLS



Front Page

Google
WWW の検索 ArchNetz の検索
Copyright (C) 2000-2015 Webplaza ArchNetz All Rights Reserved.