2.2 TCP/IP 스택의 계층 구조
TCP/IP 스택은 일견 우아해 보이기도 하지만 가까이서 보면 여기저기 땜질한 자국도 많이 보인다. 먼저 우아한 면은, 목적에 따라 여러 프로토콜을 갈아 끼울 수 있게 계층을 추상화하여 나누고, 각 계층이 저마다의 소임에 충실할 수 있게끔 설계하여, 이처럼 각기 독립된 계층이 다른 계층을 뒷받침하고 데이터를 적절히 연계할 수 있다는 면이다. 지저분한 면은 기껏 이렇게 추상화를 잘해놓고선 프로토콜 작성자마다 성능이니 확장성이니 하는 핑계로, 쓸모 있긴 하지만 설계 철학에 반하는 복잡한 예외사항으로 범벅을 해 두었다는 면이다.
멀티플레이어 게임 프로그래머로서 우리는 TCP/IP 스택의 이처럼 우아하면서도 지저분한 일면을 바르게 이해하여, 우리 게임이 제대로 동작하고 또한 효율적으로 동작하게 만들어야 한다. 게임 제작에는 주로 TCP/IP의 상위 계층을 주로 다루게 되지만, 최적화를 위해서는 하위 계층이 어떻게 동작하는지, 그리고 윗단과 어떤 식으로 상호작용하는지도 알아두면 좋다.