본문으로 바로가기
728x90
반응형

오늘은 지난 포스팅에 이어서 포스팅 하겠습니다.

 

소켓 옵션 제어에 대해 포스팅 했는데,

 

오늘은 프로토콜 레벨 IPPROTO_TCP의 옵션에 대해 알아보겠습니다.

 

1. TCP_NODELAY

 

이름 처럼 TCP에서만 사용할 수 있습니다.

 

기본값은 0이라 사용하지 않으나, 사용하게 된다면, 네이글 알고리즘을 사용하게됩니다.

 

이 옵션은 네트워크를 통해 보내야 하는 패킷 수를 줄여 TCP/IP 네트워크의 효율성을 향상시킵니다.

 

네이글 알고리즘은 아래의 링크를 참고하시기 바랍니다.

 

https://en.wikipedia.org/wiki/Nagle's_algorithm

 

Nagle's algorithm - Wikipedia

Means of improving the efficiency of TCP/IP networks Nagle's algorithm is a means of improving the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network. It was defined by John Nagle while working for Ford Ae

en.wikipedia.org

출처 : wikipedia

 

2. TCP_MAXSEG

 

이 옵션은 TCP의 데이터 전송 단위인 세그먼테이션의 크기(MSS)를 설정합니다.

 

보통의 OS에서는 이 옵션을 사용하지 않으면 MSS의 크기는 MTU에서 TCP와 IP 헤더 길이를 뺀 값이 정해집니다.

(1500(MTU크기)-20(TCP헤더길이)-20(IP헤더길이) = 1460(MSS))

 

만약 TCP 헤더에 옵션을 추가한다면, 이 길이까지 제외하여 계산이 됩니다.

 

그리고 MSS값을 MTU값보다 크게 지정하면 이 옵션은 적용되지 않습니다.

 

3. TCP_CORK

 

이 옵션은 작은 데이터를 모아두었다가 전송하는 기능입니다.

 

대용량 전송에서는 통신에 유리하다는 장점이 있습니다.

 

만약 400바이트의 데이터를 3번 전송한다고 가정해보겠습니다.

 

패킷은 TCP헤더와 IP헤더가 더해지기 때문에 440바이트가 3번 전송되므로, ( ( 40 + 400 ) + ( 40 + 400 ) + ( 40 + 400 ) ) 1320 바이트가 전송됩니다.

 

하지만 2번에 나눠 전송된다면, ( ( 40 + 400 + 400 ) + ( 40 + 400 ) ) 1280 바이트가 전송됩니다.

 

1번에 전송된다면, ( ( 40 + 400 + 400 + 400 ) ) 1240 바이트가 전송됩니다.

 

전송 횟수도 줄이고, 전송되는 크기도 줄일 수 있기 때문에 오버헤드는 상당히 줄어들게 됩니다.

 

많은 데이터를 보낼수록 오버헤드는 엄청나게 커진다고 볼 수 있습니다.

 

 

1,2부에서 설명한 옵션을 사용한다면, 조금이나마 더 네트워크 성능을 향상시킬 수 있습니다.

 

오늘 포스팅은 여기까지하겠습니다.

 

감사합니다.

728x90
반응형