강의 자료를 만들면서 ‘이미 연결이 되어있고 재전송이 일어나지 않는다는 전제 하에 tcp와 udp의 latency차이가 없다’라는 내용을 적다가 혹시 몰라서 ai한테 이 내용에 대해 물어봤다.
chatgpt, copilot – ‘거의 차이가 없다’ 라고 대답
gemini – ‘[명백]하게 udp가 빠르다’ 라고 대답
ai가 코드를 짜서 돌려봤겠냐, 넷상에 퍼진 얘기들 조합해서 답을 해주니 이 모양이지.
시퀀스를 맞춰보고 슬라이딩 윈도우를 조절하는 cpu비용이 추가로 들겠지만 현대 cpu는 굉장히 빠르고 OS의 tcp구현 코드와 네트워크 장비 드라이버는 수 십 년간 최적화되었다. 그러니 이 비용은 무시해야 한다. 그렇다면 udp가 더 빠를 이유가 없다.
스택오버플로우 찾아보면 ‘파이썬으로 tcp/udp응답성 테스트 코드를 작성해서 테스트 했는데 tcp가 더 빨랐더라’ 라는 얘기도 있다.
직접 코드를 짜서 테스트 해봤다.
winsock +, C + blocking mode 소켓 코드로 작성했다.
1. 로컬 네트워크에 물려있는 A와 B장비에 각각 클라이언트와 서버를 띄운다.
2. 클라이언트는 17바이트의 패킷을 전송하고 서버는 패킷을 수신하자마자 그대로 되돌려 준다.
3. 클라이언트는 송신을 시작해서 되돌아온 패킷을 수신할 때까지 시간을 측정한다.
udp 평균 : 0.7782ms
tcp 평균 : 0.6509ms
유의미한 차이는 아니라고 보지만 심지어 tcp가 더 빠르다!
ai주장이나 인터넷상에 널리 퍼진 속설과는 달리 tcp가 오히려 latency가 적다. 연결이 이미 되어있고 재전송이 없다면 당연한 결과다.

