Table of contents
Ethernet TCP 프로토콜을 분석하는데, 이론적으로 알던 내용과 다른 부분을 경험했습니다.
TCP 서버에서 TCP 클라이언트로 데이터를 송신하는데, 꼭 2번씩 송신해야 TCP 클라이언트에서 ACK 답변을 하는 현상이었습니다.
예를 들면, 아래와 같습니다.
TCP 서버 ----------> TCP 클라이언트 : Data
TCP 서버 ----------> TCP 클라이언트 : Data
TCP 서버 <---------- TCP 클라이언트 : ACK
… 반복
현상을 찾아보니 TCP에는 Delayed ACK(지연 ACK) 기능이 있었습니다.
요약하자면, 데이터를 수신 받을 때마다 ACK를 송신하지 않고
일정 수준의 Timeout 이후에 ACK를 송신하거나 DATA+ACK를 송신하는 기능입니다.
제가 분석한 네트워크에서는 ACK에 DATA는 없었지만, DATA도 함께 보낼 수 있도록 표준화되있는 것 같네요.
Delayed ACK 기능이 활성화 되었을 때, ACK로 응답하는 기준은 크게 두 가지로 보여집니다.
- TCP 패킷을 수신하고 Timeout이 지난 경우
- TCP 패킷을 수신하고, Timeout 이전에 또 다른 TCP 패킷을 수신하는 경우
(Timeout은 통상 200ms로 많이 설명되어 있는데 수정이 가능할 것 같습니다.)
현재, 제 컴퓨터에서도 활용되고 있는 것으로 보아 Delayed ACK는 전세계적으로 입증된 기능임을 유추할 수 있습니다.
네이글 알고리즘도 마찬가지지만, 컴퓨터 네트워크에서는 작은 아이디어로 성능을 개선하는 모습들이 종종 보이네요.
참고로 네이글 알고리즘과 Delayed ACK는 상충되는 문제가 있는 것 같은데, 이 부분은 추후 다시 다뤄보도록 하겠습니다.
'데이터통신/네트워크 > Ethernet' 카테고리의 다른 글
MTU(Maximum Transmission Unit)와 MSS(Maximum Segment Size) 이해 및 관계 (0) | 2021.12.30 |
---|---|
Ethernet 와이어링 참고 사이트 (0) | 2021.12.30 |
네이글 알고리즘(Nagle's Algoritm) 이해 (0) | 2021.12.30 |
TCP(Transmission Control Protocol) 연결 과정 요약 (0) | 2021.12.28 |
TCP/IP, UDP/IP 의미 정리 (0) | 2021.12.28 |