min's devlog
소켓 옵션 종류(2) 본문
SO_RCVBUF, SO_SNDBUF
-receive 버퍼와 send버퍼
-접속 설정 이후에는 사용할 수 없다. (connect():접속설정)
: 클라이언트는 connect()호출 이전에 설정
-SO_RCVBUF 버퍼의 최대 크기는 131070, 최소 크기는 256이다.
SO_REUSEADDR
int set = 1;
setsockopt(udp_sock1, SOL_SOCKET, SO_REUSEADDR, (void*)&set, sizeof(int));
포트번호는 앱식별자. 포트가 끊어지지 않으면 다시 사용할 순 없다
그러므로 한 호스트 내에서는 같은 포트번호를 중복으로 사용할 수 없다.
그러나 이 옵션을 쓰면 소켓 주소를 다시사용하고 싶을 때 포트번호를 재사용 할 수 있다.
원래는 안되지만, 소켓주소 재사용 옵션이 필요한경우 (포트번호 재사용)
-TIMED-WAIT 상태일 때 : 접속이 완벽하게 끊어졌을 때
-자식프로세스가 서버인경우 : 재사용 옵션을 bind()호출(이름등록) 이전에 설정해야한다.
기타옵션
SO_OOBINLINE (out of band)
-tcp의 커넥션은 하나지만, 그 안에 버퍼 하나가 따로 있다. 우선순위도 따로 있다.
이 옵션을 선택하면 outofband 버퍼나 일반버퍼나 우선순위를 똑같이 하겠다.
-원래 대역 외의 데이터는 일반 데이터보다 우선순위가 높은 버퍼에 저장되지만, 일반데이터의 수신버퍼에 있는 데이터는 동등한 순서로 처리된다.
SO_RCVLOWAT, SO_SNDLOWAT
-송수신 버퍼의 최소량 설정 옵션
SO_DONTROUTE
-인터넷에서 패킷을 보내면 어디로 갈지 모르지만 경로를 미리 정하는 경우도 있다. 이를 금지하는 것
-데이터그램 송신시에 시스템이 배정하는 라우팅 경로를 사용하지 않도록 한다.
TCP_NODELAY
-tcp에서는 기본적으로 Nagle's 알고리즘이 실행된다.
- 이옵션은 Nagle's 알고리즘 실행을 중지한다.
(Nagle's 알고리즘? - 데이터를 보내면, ack이 오는데 그러다보면 받은 측에서 ack에다 실어서 정보를 보내고 싶을 경우가 있다. 이때 ack 즉시 응답보다는 기다린다. ack에 실어보내는것:piggy back. 이때 기다리지 않고 바로 보내게 하는 옵션이다.
TCP_MAXSEG
-TCP의 최대 세그먼트 크기(MSS)값을 읽거나 변경
'Linux > TCP IP Socket Programming' 카테고리의 다른 글
SO_RCVBUF 옵션 (0) | 2021.04.04 |
---|---|
멀티캐스트 프로그래밍 (0) | 2021.03.28 |
소켓옵션 종류 (0) | 2021.03.27 |
소켓과 소켓 옵션 (0) | 2021.03.27 |
fork()와 wait() (0) | 2021.03.27 |