본문 바로가기
CS/[널널한 개발자] 네트워크

4-5] L4 수준에서 외울 것들 - TCP '연결'이라는 착각

by 묻공러 2023. 6. 20.

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 연결은 보안성이 없기에 신뢰해서는 안된다는 것을 보여준다