TCP 가 연결이라는 착각

파일 다운로드 중 LAN 케이블을 뺏다 끼면, TCP 연결은 어떻게 될까?

  • 결론적으로는 잠깐 멈추었다가, 다시 파일 다운로드가 된다!

  • 만약, 케이블이 빠진 속도가 너무 길어진다면 파일 전송은 실패한다.

    • RTO(Retransmission Time-out) : 보낸 데이터에 대한 확인 응답(ACK)을 특정 시간 안에 받지 못하면, 해당 데이터를 손실된 것으로 간주하고 다시 보내는(재전송하는) 대기 시간

    • RTO 시간을 초과하면 데이터 전송을 실패한다.

다음과 같은 프로세스로 논리적 연결은 계속된다. (TCP 는 물리적인 연결이 아닌, 논리적인 연결이다!)

  • RTT 가 오지 않았을 때, 운영체제의 재전송 타이머는 대략 3초이다.

  • 재전송 타이머 만료 후, 응답을 받지 못한다면 Segment 를 재전송하고, RTO 값은 두배로 증가한다.

  • 예를 들어 1초 > 2초 > 4초 > 8초 > 16초 간격으로 재전송한다.

  • 보통 최대 5회 전송을 실시하고, 모두 응답을 받지 못하는 경우 보통 전송 오류가 발생한다.

    • 전송 오류가 발생하기 이전까지는 TCP 연결이 맺어져 있는 상태이다!

유선이 아닌, 무선 환경에서는 매순간 일어나는 상황이다!

  • 무선(지하철 와이파이) 의 경우 매순간 연결이 끊어진다고 볼 수 있는데, 이 때 버퍼의 미리 데이터를 받아두어 중간의 병목을 해결한다.

어떤 MMORPG 게임에서 아이템 복제라는 버그가 발생했다.

상황 설명

  1. 좋은 아이템을 가지고 있는 플레이어 A, 일반 플레이어 B

  2. A,B 가 한적한 장소로 이동한 다음, A 가 아이템을 버린다. 그 다음 랜선을 뽑고 A는 아이템을 먹은 뒤 랜선을 연결한다.

  3. A가 랜선을 뽑은 시점에, B는 아이템을 먹는다.

  4. A,B 모두 아이템을 먹은, 아이템 복제가 일어난다.

연결이라는 사실은, 엔드포인트의 주관적인 판단에 불과하다..

  • 우리가 전화를 하면서 대상자를 판단하는 기준이 목소리 인것처럼,

  • TCP 에서 연결의 기준으로 스펙에만 맞는 응답을 받으면 된다는 것이다.

  • 때문에, TCP 를 이야기할 때 부족한 보안에 대한 이슈는 항상 등장한다. -> TCP 가 절대적인 연결이라는 것은 착각이다!

Last updated