1. 다음 중 Time-wait 상태에 대해서 맞게 설명한 것을 모두 고르면?
>b. 연결종료의 Four-way handshaking 과정에서 먼저 FIN 메세지를 전달한 소켓이 Time-wait 상태가 된다.
*틀린 내용
a.Time-wait 상태는 서버 프로그램에서 생성한 소켓에서만 발생한다.
->소켓의 Time-wait 상태는 클라이언트냐 서버냐에 상관없이 존재한다. 먼저 연결의 종료를 요청하면 해당 소켓은 반드시 Time-wait 상태를 거친다. 하지만 클라이언트의 Time-wait 상태는 신경을 쓰지 않아도 된다. 왜냐하면 클라이언트 소켓의 PORT번호는 임의로 할당되기 때문이다.
c.연결요청 과정에서 전송하는 SYN 메세지의 전송순서에 따라서 Time-wait 상태는 연결종료와 상관없이 일어날 수 있다.
->Time-wait 상태는 반드시 FIN 메세지를 전송받아야 일어난다.
d.Time-wait 상태는 불필요하게 발생하는 것이 대부분이므로, 가급적이면 발생하지 않도록 소켓의 옵션을 변경해야 한다.
->물론, 재빨리 서버를 재 가동시켜서 서비스를 이어나가야 할 경우에는 Time-wait 상태가 불필요하겠지만, Time-wait 상태는 상대 호스트가 정상적으로 종료할 수 있게끔 하기 때문에 중요하다.
Time-wait 상태
2. 옵션 TCP_NODELAY는 Nagle 알고리즘과 관련이 있다. 이 옵션을 이용해서 Nagle 알고리즘을 해제할 수도 있는데, 그렇다면 어떠한 경우에 한해서 Nagle 알고리즘의 해제를 고민해 볼 수 있겠는가? 이를 송수신하는 데이터의 특성과 관련해서 설명해보자.
>전송하는 데이터의 특성에 따라서 Nagle 알고리즘의 적용 여부에 따른 트래픽의 차이가 크지 않으면서도 Nagle 알고리즘을 적용하는 것보다 데이터의 전송이 빠른 경우 Nagle 알고리즘 해제를 고민해 볼만한 상황이다. 그리고 이러한 상황은 한 세션 내에서 전송해야 할 데이터의 양이 많은 경우 발생한다. 출력버퍼로 전달되는 데이터의 양이 많으면, Nagle 알고리즘의 적용 여부에 상관없이 충분히 버퍼링 되서 데이터가 전달되기 때문이다.
Nagle 알고리즘 적용된 상태
Nagle 알고리즘 적용 X
[참고] TCP/IP 소켓프로그래밍 윤성우 저
'C > TCPIP 소켓 프로그래밍(윤성우 저)' 카테고리의 다른 글
TCP/IP 소켓 프로그래밍 10장 내용 확인문제 (0) | 2017.06.15 |
---|---|
TCP/IP 소켓 프로그래밍 1~5장 함수 복습 (0) | 2017.06.10 |
TCP/IP 소켓 프로그래밍 8장 내용 확인문제 (0) | 2017.06.06 |
TCP/IP 소켓 프로그래밍 7장 내용 확인문제 (0) | 2017.06.03 |
TCP/IP 소켓 프로그래밍 6장 내용 확인문제 (0) | 2017.05.29 |