소켓

소켓

<aside> 💡 클라이언트와 서버는 소켓 식별자를 읽고 쓰면서 서로 통신한다.

</aside>

소켓이란

통신의 양 끝 점이다.

Berkeley Socket(BSD Socket)

소켓을 파일 식별자(file descriptor)의 형식으로 소켓을 다루는 API. Unix의 철학인 '모든 것은 파일이다'에서부터 출발했다. 네트워크를 포함한 모든 Unix I/O 디바이스들은 파일이므로, 소켓 역시 네트워크 상의 다른 프로세스와 통신하는 역할을 하는 파일로 볼 수 있다. Internet 소켓들은 대부분 이런 BSD 표준을 따른다.

파일 식별자

소켓 주소 구조체

<aside> 💡 소켓 주소 = IP주소 + 포트 번호

</aside>

generic 소켓 주소 구조체 sockaddr

connect, bind, accept 함수의 인자로 넣어주기 위한 16바이트 구조체이다.

예전에는 C언어에 (void *) 타입이 없어서 인자를 캐스팅해주기 위해 필요했다.

struct sockaddr { 
  uint16_t  sa_family;    /* Protocol family */ 
  char      sa_data[14];  /* Address data.  */ 
};

generic 소켓 주소 구조체

generic 소켓 주소 구조체