C/TCPIP 소켓 프로그래밍(윤성우 저)

TCP/IP 소켓 프로그래밍 9장 내용 확인문제

꾸준함. 2017. 6. 10. 13:24

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 소켓프로그래밍 윤성우 저


반응형