2014년 12월 12일 금요일

TCP/IP 소켓 프로그래밍 9강

이번 강은 소켓의 다양한 옵션을 알아보자.
다음 표를 보자. 출처 : 윤성우 TCP/IP소켓 프로그래밍

표만 봐서는 뭐가 뭔지 하나도 모르겠다.
하지만 Get, Set 가 있다.
참조(Get) 및 변경(Set)에 쓰는 함수를 보자

#include <sys/socket.h>
int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);
-sock : 옵션확인을 위한 소켓의 파일 디스크립터 전달
-level : 확인할 옵션의 프로토콜 레벨 전달.
-optname : 확인할 옵션의 이름 전달.
-optval : 확인결과의 저장을 위한 버퍼의 주소 값 전달.
-optlen : optval로 전달된 주소 값의 버퍼크기를 담고 있는 변수의 주소 값 전달

#include <sys/socket.h>
int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
-sock : 옵션확인을 위한 소켓의 파일 디스크립터 전달
-level : 변경할 옵션의 프로토콜 레벨 전달.
-optname : 변경할 옵션의 이름 전달.
-optval : 변경할 옵션정보를 저장한 버퍼의 주소 값 전달.
-optlen : optval로 전달된 옵션정보의 바이트 단위 크기 전달.

이 강에는 여러 옵션을 설명하다보니 소스가 많이 나온다.
이걸 여기에 다 기록하기엔 양이 많으니
직접 소스를 다운 받아서 해보는게 가장 좋을 것 같다.

소스 다운 받기 

Nagle 알고리즘을 알아보자.
일단 그림을 보자. 역시 출처는 "윤성우 TCP/IP 소켓 프로그래밍" 이다.

기본적으로 TCP 소켓에서는 Nagle 알고리즘을 적용해서 데이터를 송수신한다.
이 알고리즘을 적용하지 않으면 지나치게 네트워크 트래픽이 높아질 수 있다.
하지만 항상 이 알고리즘이 좋은 것은 아니다.
용량이 큰 파일데이터의 전송에는 이 알고리즘을 끄고 전송하는 것이 더 좋다.
그러니 전송할 데이터의 특성을 알고 알고리즘을 선택해야 할 것이다.

새벽에 졸음을 쫒아가며 쓰다 보니 너무 대충 쓴다는 생각이 든다 ㅡㅡ;;
10강에는 멀티프로세스를 이용한 서버 구현을 해보겠다.

댓글 없음:

댓글 쓰기