소켓의 생성 방법과 소켓별 특성
컴퓨터 상호 간의 대화에 필요한 통신 규약이다.
#include <sys/socket.h>
int socket(int domain, int type, int protocol); // 성공 시 파일 디스크립터, 실패 시 -1 반환
/* domain 소켓이 사용할 프로콜 체계(Protocol Family) 정보 전달
* type 소켓의 데이터 전송방식에 대한 정보 전달
* protocol 두 컴퓨터 간 통신에 사용되는 프로토콜 정보 전달
*/
소켓이 통신에 사용하는 프로토콜 부류 정보
이름 | 프로토콜 체계(Protocol Family) |
---|---|
PF_INET | IPv4 인터넷 프로토콜 체계 |
PF_INET6 | IPv6 인터넷 프로토콜 체계 |
PF_LOCAL | 로컬 통신을 위한 UNIX 프로토콜 체계 |
PF_PACKET | Low Level 소켓을 위한 프로토콜 체계 |
PF_IPX | IPX 노벨 프로토콜 체계 |
소켓의 데이터 전송 방식
소켓의 타입 1: 연결지향형 소켓(SOCK_STREAM)
socket 함수의 두 번째 인자로
SOCK_STREAM
을 전달하면 ‘연결지향형 소켓’이 생성된다.
연결지향형 소켓의 데이터 송수신 방식:
데이터를 송수신하는 소켓은 내부적으로 버퍼(buffer), 쉽게 말해서 바이트 배열을 지니고 있다.
💡 소켓 대 소켓의 연결은 반드시 1대1이어야 한다. 즉, 연결지향형 소켓 하나는 다른 연결지향형 소켓 하나와만 연결이 가능하다.소켓의 타입 2: 비 연결지향형 소켓(SOCK_DGRAM)
socket 함수의 두 번째 인자로
SOCK_DGRARM
을 전달하면 ‘비 연결지향형 소켓’이 생성된다.
비 연결지향형 소켓의 데이터 송수신 방식: