最初はUNIXで実装され、次第に他のOSにも実装されていったプロトコル。
いくつかの階層に別れたモデルを採用しており、これは各階層が別の物に置き換わっても対応可能とするため。
すべての階層でおねじ物を使わなくても環境同士で接続できるようにするのが階層化の目的である。

「アプリケーション層」はHTTPが代表的なプロトコル。

「トランスポート層」はTCPとUDPなどがあり、主にこの2つが相手のPCにデータ制御を担当する。
TCPは相手とのポート番号で通信、データの欠損がないように整理、再送付要求、誤り検出などの実施、通信フローの制御を行う。
UDPではポート番号での通信は行うが、それ以外については保証していない(そのため、TCPよりも速度が早い)。

「ネットワーク層」は通信相手に向けてパケットを送るための管理を行う。
通信相手に送付するためにどのネットワークを通るべきか、どのプロトコルを利用するかなどを制御する。

「リンク層」はLANで利用するイーサネットなどの物理的なネットワークにパケットを送付する。