トランスポート層

ポート番号を使って、プロセスとプロセス(⇒実行中のプログラム)間の通信を担う部分です。
プロセスとプロセスを繋ぐことからエンドツーエンド(End To End)と呼ばれます。
このプロセスを特定する時に通信先のプログラムが利用するポート番号で通信します。
つまり、ポートという仮想の差込口を使って、アプリケーション間の接続を行うのがトランスポート層の役割です。
IPアドレスを使った情報を届ける方法は、ネットワーク層のIPプロトコルに任せています。
そして、IPプロトコルによって届くであろうはずの通信先ホストのプロセスに対するやり取り方法を提供します。
(「届くであろうはず」と書いた理由は、IPプロトコル自体に、確実に届ける仕組みがないからです。)

ここで使われるプロトコルがTCP(Transmission Control Protocol)とUDP(User Datagram Protocol)です。
大きな違いは、TCPは情報を確実に伝える時に使われ、
UDPは単に届けるための仕組みを提供する程度なので (速くでなく)早く伝えたくて届くか分からなくてもよい時に使われます。
(多数の書籍で UDPの特徴に「高速性」を挙げていますが、確実に届ける実質的な速度は伝達量の制御が行えるTCPが方が高速でしょう。
よって このサイトでは、UDPの特徴として「即時性」を挙げます。)

TCPはコネクション型で、UDPはコネクションレス型とも言われます。 TCPでは、情報を失うことなく確実に送るため、「コネクション」と呼ばれる仮想伝送路を作ってから情報を送ります。 対して、UDPは早さ優先なので、情報を失うかもしれないが、早く送れるように「コネクション」を作りません。

なお、『情報を失うことなく、送った情報が順番通りに受け取れる』伝送にストリームと言う用語で使う場合がありますが、 その場合で言うと、TCPはストリームですが、UDPはストリームでないことになります。 なぜならUDPには、確実に届ける仕組みがないので、部分的に到達できない可能性があるからです。

なお、ポート番号指定する場合、アプリケーションによって標準で決められる番号があり、 ウェルノウンポート番号(well-known port number)と呼ばれます。