- Packet Loss ( 패킷이 유실된 경우 )
- TCP Out of order ( 패킷의 순서가 뒤바뀐 경우 )
- Retransmission과 Dup ACK
- Zero - window ( 수신측 버퍼에 여유 공간이 하나도 없는 경우 )
TCP 계층 즉, 4계층 부터 아래 1계층 까지 따져봤을 때 발생할 수 있는 장애 유형이 있다.
📘 Packet Loss ( 패킷이 유실된 경우 )
인터넷이라는 네트워크 환경은 기본적으로 불안정하다.
그래서 인터넷 수준, L3 혹은 그 이하에서 발생하는 것 중에 가장 흔한 게 패킷이 아예 유실되어 버릴 수 있다.
자주 일어나는 일은 아니지만 간간히 일어난다.
📘 TCP Out of order ( 패킷의 순서가 뒤바뀐 경우 ).
수신 측에서 예상한 순서와 다른 TCP 세그먼트가 도착하는 현상을 말한다.
TCP는 연결이라는 개념을 포함하고 있는데, 데이터들이 날아올 때 순서를 따진다.
연결이 있고 순서 개념이 있다 보니 데이터가 왔을 때, 1번이 오면 그다음은 2번 그다음은 3번이 와야하는데
가끔 순서가 뒤바뀔 수 있다.
발생하는 주요 원인
- 멀티패스 라우팅
- 하나의 TCP 연결이 여러 네트워크 경로를 통해 전송될 경우
- 각 경로마다 지연이 다르기 때문에 순서가 바뀌기 쉽다.
- 네트워크 혼잡
- 일부 패킷이 네트워크 장비에서 큐잉되거나 드롭되면서 재전송이 발생
- 나중에 보낸 패킷이 먼저 도착하는 상황이 생길 수 있다.
- 리트랜스미션
- ACK 손실 또는 지연으로 인해 송신 측이 재전송하게 되어, 그 패킷이 원래 패킷보다 먼저 도착할 수 있다.
📘 Dup ACK ( Duplicate ACK )
Dup ACK는 말 그대로 중복된 ACK 패킷을 의미한다.
TCP 수신 측이 같은 ACK 번호를 반복해서 보낼 때, 이를 송신 측에서 중복 ACK로 인식한다.
이는 일반적으로 데이터 손실 또는 Out of order 상황을 의미한다.
특정 패킷이 안와서 재전송을 요청했는데 해당 패킷이 도착하고, 재전송한 패킷이 도착하면
Dup ACK가 발생할 수 있는 것이다.
발생하는 주요 원인
- 패킷 손실
- 가장 흔한 원인. 특정 시퀀스의 세그먼트가 손실되었을 때 발생
- 패킷 재정렬
- 순서가 어긋난 패킷이 먼저 도착하여, 이전 시퀀스 번호에 대한 ACK가 반복되는 경우
📘 Zero-window ( 수신측 버퍼에 여유 공간이 하나도 없는 경우 )
윈도우 사이즈가 0이 된다는 것은 수신 측에서 더 이상 데이터를 받을 수 없는 상태를 의미한다.
다시 말해 수신 측 버퍼가 꽉 찼다는 의미
소켓 수신 버퍼에 데이터가 차곡차곡 쌓일 때,
recv를 이용해 소켓 수신 버퍼에 있는 데이터를 L7에 있는 버퍼에 데이터를 담는 속도보다
소켓 수신 버퍼에 데이터가 담기는 속도보다 빠르지 않으면 윈도우 사이즈가 0이 된다.
이는 위 3가지의 오류 사항과는 성격이 다르다.
위 3가지의 오류 사항은 네트워크 인프라 수준에서의 오류라고 생각 할 수 있는 반면
Zero-window는 개발자가 구현하는 코드에 따라 해결이 가능하기 때문이다.
'네트워크' 카테고리의 다른 글
[네트워크] 파일 수신 (0) | 2025.04.20 |
---|---|
[네트워크] 파일 송신 (0) | 2025.04.20 |
[네트워크] TCP/IP 연결의 의미 (0) | 2025.04.20 |
[네트워크] select (0) | 2025.04.17 |
[네트워크] I / O 멀티플렉싱 (0) | 2025.04.17 |