UDP와 같이 non-blocking 데이터 그램 소켓에 대해 write()/send()를 호출 할 때 write()/send() 또는 read()/recv() 호출은 정확히 1 패킷을 처리합니다.원시 소켓 데이터 그램 소켓 또는 아닙니다?
원시 소켓이 아래와 같이 데이터 그램 소켓인지 궁금합니다.
int on = 1;
rawfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
setsockopt(IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));
원시 소켓이므로 TCP 스택이 포함되지 않습니다. 원시 소켓에 대한 TCP 패킷은 패킷 일 뿐이라고 생각합니다. TCP 메커니즘이 관련되어 있지 않습니다. isn/t it? – user1944267
메커니즘이 관련되어 있습니다. 커널은 TCP 소켓의 경우에 당신을 위해 몇 가지 일을합니다. [이 질문] (http://stackoverflow.com/questions/4323764/can-i-create-a-listening-tcp-socket-using-raw-sockets-in-linux)을보십시오. – nouney
아, ok, recv()/read()입니다. TCP 스택이 들어오는 tcp 패킷을 응답하기 때문입니다. 하지만 send()/write()의 경우 raw socket은 로컬 TCP 스택과 아무 관련이 없습니다. – user1944267