더북(TheBook)

이 예제에서 호스트 A는 세그먼트를 한 번 보내고 나서 마냥 ACK가 올 때까지 기다린다. 그렇지만 이것은 이해하기 쉽도록 꾸며본 시나리오에 불과하다. 실제로는 세그먼트를 보낼 때마다 ACK가 올 때까지 호스트 A가 전송을 멈추고 기다려야 한다거나 하는 제약이 전혀 없다. 그런 게 있다면 TCP는 장거리에서는 사용하기 힘든 프로토콜이 되어버릴 것이다.

이더넷의 MTU가 1,500바이트라는 점을 떠올려 보자. 거기서 IPv4 헤더가 최소 20바이트를 차지하고 TCP 헤더가 또 적어도 20바이트를 가져가면, 분열이 없다는 전제하에 이더넷을 거쳐 TCP 세그먼트 하나에 실어 보낼 수 있는 데이터는 1,460바이트가 된다. 이 숫자를 MSS(maximum segment size, 최대 세그먼트 길이)라 한다. TCP 연결 도중 한 세그먼트 보낸 뒤 ACK를 받아야만 다음 세그먼트를 보내야 한다는 제약이 있다면 대역폭이 심각하게 제한되고 말 것이다. 그런 시나리오에서 대역폭을 계산해 보기 위해 시간을 한번 따져 보자. 발신자가 세그먼트를 보내 수신자가 받는데 걸리는 시간, 그리고 수신자가 ACK를 보내 발신자가 받는 시간을 더한 것을 왕복 시간(round trip time), 줄여서 RTT라 하는데, 북미 대륙 횡단에 필요한 왕복 시간은 대략 30밀리초 내외이다. MSS를 RTT로 나누면 대역폭이 나오는데, 1500바이트/0.03초=50kbps가 된다. 아무리 고속의 회선을 깔아도 중간에 이더넷 링크가 하나 끼어 있다면 고작 1993년 당시 모뎀 속도밖에 나오지 않게 되는 셈이다.

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