ポートの概念を知らないヒトは、先に「2. ポート」を読んできてからのが良いかもです。
さて、一番最初で、プロトコルには○○がないと××は動かない(IP がないと TCP が動かないとか)ってゆーのがあるってコトをちらっと触れたでせう。あれを具体的に説明するモノが「TCP/IP プロトコルスタック」なの。

コレが TCP/IP プロトコルスタック。
要するにどーゆーコトかって、パケットにはパケットヘッダが付いてるって書いたと思うんだけど、そのパケットヘッダってゆーのは各段階で切り離されていっちゃうのね。その切り離される段階が概念的に階層構造になってるって感じ。
# 語弊ありまくり(苦笑)

例えば A が B へパケットを投げるときはこんな風に書いてあったりするんだけど、1 と 2 が所謂パケットヘッダと呼ばれてる部分で、B に届いた時点で 1 はなくなっちゃうし、B の 80番ポートで受け取ってもらえた時点で 2 はなくなっちゃうし、用件が伝わった時点で 3 もなくなっちゃうワケ。
で、具体的には、まず「B って誰よ?」ってゆーのがリンク層。(ARP とかにあたる部分)
B に届いて 1 が切り離される場面ってゆーのは IP とかにあたる部分でネットワーク層。
B の 80 番ポートで受け取ってもらえて、2 が切り離される部分ってゆーのは TCP とかにあたる部分でトランスポート層。
目的の B 自身がそれを読む 3 が切り離される部分ってゆーのは HTTP とか FTP とかにあたる部分でアプリケーション層ってワケ。
そーして、B が A へと返事する場合にもこんな風に書かれるワケ。

で、やっぱし「A って誰だっけ?」ってゆーのがリンク層。
A に届いて 1 が切り離されるのがネットワーク層で、A の 3456番ポートで受け取ってもらえて 2 が切り離されるのがトランスポート層、A 自身が読んで 3 が破棄されるのがアプリケーション層ってワケ。
だから、ホントは「IP がないと TCP が使えない」んぢゃなくて、「トランスポート層のプロトコルはリンク層のプロトコルが動いてないと使えない」ってコトなのです。
ちなみに、「1通目のメッセージ」とか「1通目に対する返事」みたいのはシーケンス番号って言って、到着順序がめちゃくちゃでも(例えば 1通目よりも 2通目が先に届いちゃったとか)それをちゃんと到着順に処理出来るよーにしたりするためにあるの。
# 但し、到着順に並べてくれるのは TCP で、UDP は並べてくれない(爆)
OSI 7階層モデルってゆーのもあるんだけど、一般的に TCP/IP では 7階層も使われてないからとりあえずぱす(^_^;)