TCP '연결'의 착각
질문:
파일 다운로드 중 LAN 케이블을 분리했다가
다시 연결하면 TCP 연결은 어떻게 될까?
답변:
L4 수준의 연결 중 L1 수준의 연결을 잠시 끊는다면,
TCP 연결은 일정시간 동안만 유지된다
Process를 개발하는 Socket Programming 용어로는
3-way handshake이 되었음에도
지속적으로 연결이 되어있는지 재확인하는데 이를 Heartbeat 확인이라고 부른다
재전송 타이머의 기본 근사 값은 대략 3초이다
하지만 대부분의 운영체제들은 1초 미만으로 보낸다
3-way handshake를 할 때 SRTT 값을 계산해서
얼마나 기다릴지 설정을 하게 된다
재전송 타이머 만료 후에도 확인 응답을 받지 못한 경우,
세그먼트를 재전송하고 RTO(Retransmission Time-Out) 값은 두배로 증가한다
ex. 1초 > 2초 > 4초 > 8초 > 16초 간격으로 재전송한다
보통 최대 5회 재전송을 시도하고 5회 이상 모두 실패할 경우
보통 전송 오류가 발생한다
추가적으로,
케이블이 끊기거나 무선통신을 하는 경우를
충격이 발생했다고 말하며
충격완화장치로 Buffer가 있다
이 Buffer를 통해 예를들어 미리 5초가량의 데이터를 미리 받아놓고
충격을 받았더라도 일정시간 동안 다시 연결이 된다면 정상적으로 작동하는 방식과 같다
이를 악용하여,
논리적 TCP 연결과 물리적 링크간 차이를 이용한 시간차 공격을 통해
게임에서 버그로 사용하는 경우가 있는데
이는 결국 연결이 End-point의 주관적 판단에 불과한다는 것을 보여주고
TCP 연결은 보안성이 없기에 신뢰해서는 안된다는 것을 보여준다
'CS > [널널한 개발자] 네트워크' 카테고리의 다른 글
5-2] 웹을 이루는 핵심기술 - HTML과 HTTP, URL과 URI (0) | 2023.06.21 |
---|---|
5-1] 웹을 이루는 핵심기술 - DNS (0) | 2023.06.20 |
4-4] L4 수준에서 외울 것들 - TCP, UDP 헤더형식과 게임서버 특징 (0) | 2023.06.20 |
4-3] L4 수준에서 외울 것들 - TCP 연결 종료 및 상태 변화 (0) | 2023.06.20 |
4-2] L4 수준에서 외울 것들 - TCP 연결과정 (0) | 2023.06.20 |