더북(TheBook)

전송 계층은 ‘포트’라는 개념을 통해 원격 호스트 프로세스 사이의 종단 간 통신을 지원한다. TCP와 UDP가 전송 계층에서 가장 주요한 프로토콜인데, 이 둘은 근본적으로 다른 특성을 지닌다. UDP는 가벼운 대신 연결이 유지되지 않고, 패킷의 전송을 보장하지 않는다. 반면 TCP는 패킷의 덩치가 더 크지만, 상태 기반 연결 유지를 지원하여 패킷의 전송을 보장하는 데다 그 순서도 지켜준다. 또한, TCP는 흐름 제어 및 혼잡 제어 메커니즘도 탑재되어 있어 패킷의 손실을 최소화할 수 있다.

프로토콜 스택의 최상단에는 응용 계층이 있다. 응용 계층의 프로토콜로는 DHCP, DNS 등이 있으며 우리가 작성할 게임 코드 역시 응용 계층에 포함된다.

사설 네트워크를 구축할 때 필요한 관리 수고를 최소화할 수 있게, 공유기의 NAT 모듈은 공인 IP 주소 하나를 네트워크 전체가 공유하여 쓸 수 있게 해 준다. NAT의 단점은 미리 약속되지 않은 외부 연결 접속을 허용하지 않다는 것인데, 서버를 구동하려면 외부 연결 접속 허용이 필수적이다. 따라서 STUN이나 TCP 홀 펀칭 같은 기법으로 이를 투과하기도 한다.

이 장에서 다룬 내용을 토대로 인터넷 동작 원리의 이론적 근간을 구축할 수 있다. 3장 버클리 소켓에선 실제 호스트 사이의 통신 코드 작성에 사용하는 함수와 자료구조를 다루는데, 이번에 다룬 내용을 잘 익혀두면 버클리 소켓을 이해하는 데도 큰 도움이 될 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.