반응형

★프로토콜: 컴퓨터 상호간의 대화에 필요한 통신규약

 

int socket(int domain, int type, int protocol);

  • domain: socket이 사용할 프로토콜 체계 정보 전달
  • type: socket의 데이터 전송방식에 대한 정보 전달
  • protocol: 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달

  • 프로토콜 체계
이름 프로토콜 체계 (Protocol Family)
PF_INET IPv4 인터넷 프로토콜 체계
PF_INET6 IPv6 인터넷 프로토콜 체계
PF_LOCAL 로컬 통신을 위한 UNIX 프로토콜 체계
PF_PACKET Low Level socket을 위한 프로토콜 체계
PF_IPX IPX 노벨 프로토콜 체계

지정한 프로토콜 체계의 범위내에서 세번째 인자가 결정

 

  • socket의 데이터 전송 방식
  1.  연결지향형 socket (SOCK_STREAM)

- 중간에 데이터가 소멸되지 않고 목적지로 이동

- 전송 순서대로 데이터가 수신

- 연결지향형 socket 대 연결지향형 socket의 연결은 반드시 1대 1이어야 함

- 전송되는 데이터의 경계(boundary)가 존재하지 않음

→ socket으로 전송되는 데이터는 내부 버퍼에 저장되므로 데이터가 수신되고 바로 read함수를 호출해야 하는 것은 아님. 버퍼 용량을 초과하지 않는 한 데이터가 채워진 후에 한번의 read함수 호출로 데이터를 읽을 수 있고 한 번의 write함수로 전송된 데이터를 여러 번의 read함수로 저장할 수 있음.

≪입력 버퍼가 수신되는 데이터로 채워지면 데이터를 전송하는 영역의 socket이 데이터를 전송하지 않으며 전송된 데이터가 소멸되지 않는다. 즉 연결지향형 socket은 상대 socket의 상태를 파악해가면서 데이터를 전송한다.≫

 

  2.  비 연결지향형 socket (SOCK_DGRAM)

- 전송된 순서에 상관없이 가장 빠른 전송 지향

- 전송된 데이터는 손실의 우려가 있고 파손의 우려가 있음

- 전송되는 데이터의 경계(boundary)가 존재

→ write 함수를 여러번 호출했을 경우 read함수도 여러번 호출돼야 함

- 한 번에 전송할 수 있는 데이터의 크기가 제한됨

 

  •  프로토콜 정보

: 하나의 포로토콜 체계 안에서 데이터 전송 방식이 동일한 프로토콜이 둘 이상 존재하는 경우, 원하는 프로토콜 정보를 구체화하기 위해 사용

 

ex) TCP socket: IPv4 인터넷 프로토콜 체계에서 동작하는 연결지향형 데이터 전송 socket

int tcp_socket=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)

 

ex) UDP socket: IPv4 인터넷 프로토콜 체계에서 동작하는 비 연결자향형 데이터 전송 socket

int udp_socket=socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)

 

 

반응형

+ Recent posts