フロントエンドエンジニアとして働く分にはHTML/CSS/JSの知識だけで良いのかもしれないが、仕事上でTCPについての知識が必要になった。しかし、TCPについては基本情報技術者レベルの知識しかなく、いまだにOSI参照モデルが実際のアプリケーションとどう関連付けられるかわかっていない。
そこで、低レイヤーの学習も兼ねて、Go言語(golang)でTCPサーバーとクライアントをStep by Stepで実装し、TCP/IPについてより深く学ぼうと思う。
知識編: TCP/IPとは
インターネットやネットワークについて学んでいると必ず出てくるのが「
TCP/IP」だ。OSI参照モデルの第3層(ネットワーク層)の
IP(Internet Protocol)と第4層(トランスポート層)の
TCP(Transmission Control Protocol)の2つのプロトコルから構成されており、インターネットで標準的に利用されている通信プロトコルだ。
OSI参照モデルとTCP/IPプロトコル群
基本情報技術者の試験ではOSI参照モデルの概念についてしか触れないが、
TPC/IPプロトコル群(別名: インターネット・プロトコル・スイート)も存在する。TCP/IPプロトコル群のほうが効率的で、かつ現実的な仕様となっているので一般的に使われており、OSI参照モデルは「概念」として残っている。
OSI参照モデルとTCP/IPプロトコル群の対比表
| OSI参照モデル | TCP/IPプロトコル群 | プロトコル |
| アプリケーション層 | アプリケーション層 | HTTP, SMTP, POP3, Telnet, … |
| プレゼンテーション層 |
| セッション層 |
| トランスポート層 | トランスポート層 | TCP, UDP |
| ネットワーク層 | インターネット層 | IP, ICMP, ARP, RARO |
| データリンク層 | ネットワークインターフェース層 | Ethernet, PPP |
| 物理層 |