파일 다운로드 중 LAN 케이블을 분리했다가 다시 연결하면 TCP 연결은 어떻게 될까?
연결을 끊었다라는 것은 L4 계층의 연결을 말한다. 만약 L1 수준에서 랜선을 잠시 뽑아도 L4의 TCP 연결은 유지된다. L1의 랜선을 얼마의 시간동안 끊었는지에 따라 결과는 다를 수 있다.
어플리케이션은 연결을 유지하기 위해 3way-handshakes를 진행했음에도 계속해서 연결을 재확인한다. 그리고 이를 하트비트라 표현한다.
이를 일상에 비유하자면 친구와 전화 통화를 할 때 전화 통화가 끊어진 것은 L1, 전화 통화는 끊어지지 않았지만 친구가 말이 없는 경우는 L4인 것이다.
...
TCP 연결이라는 착각 (너무 중요함)
1) 재전송 타이머의 기본 근사 값은 대략 3초이다. 하지만 대부분의 운영체제들은 1초 미만이다.
- ex) Ack를 보내고 답이 오지 않을 때
2) 재전송 타이머 만료 후에도 확인 응답을 받지 못한 경우 세그먼트를 재전송하고 RTO(Retransmission Time-Out) 값은 두 배로 증가한다.
3) 예를 들어, 1초 > 2초 > 4초 > 8초 > 16초 간격으로 재전송한다.
4) 보통 최대 5회 재전송을 시도하고 5회 이상 모두 실패할 경우 보통 전송 오류가 발생한다.
...
위와같이 L1 케이블이 분리되는 경우를 '충격'이라고 표현한다. 충격이 발생했더라도 서비스는 원활히 동작해야한다. 만약 1초동안 데이터가 오지 않아도 버퍼에 채워져 있는 분량만큼 실행된다.
이러한 충격과 버퍼의 동작은 일상에서 자주 일어난다. 예를들어 무선으로 네트워크를 연결할 경우 이동 시 중계기가 계속해서 달라질 것이다. 그럼에도 스트리밍에 문제가 없는 이유는 중간에 버퍼가 제 역할을 하고 있기 때문이다.
...
정리
1) L1 수준에서 랜선을 잠시 뽑아도 L4의 TCP 연결은 유지된다.
2) 어플리케이션은 3way-handshakes를 진행했음에도 연결을 계속해서 재확인 한다. 그리고 이를 하트비트라 표현한다.
3) L1 케이블이 분리되는 경우를 '충격'이라고 표현하는데, 충격이 발생했더라도 서비스는 원활히 동작해야한다.
4) 만약 1초 동안 충격이 일어날 경우 버퍼에 채워져 있는 분량만큼은 실행된다.
'네트워크' 카테고리의 다른 글
한 번에 끝내는 DNS (0) | 2024.11.04 |
---|---|
TCP 연결이라는 착각 2 (0) | 2024.11.04 |
TCP, UDP 헤더 형식 그리고 게임서버 특징 (0) | 2024.10.31 |
TCP 연결종료와 상태변화 (0) | 2024.10.29 |
TCP 연결과정과 3-way handshaking (1) | 2024.10.29 |