소켓의 생성과 프로토콜
프로토콜이란 컴퓨터 간의 대화에 필요한 통신 규약이다. 예를 들어 두 사람이 데이터를 주고 받는데 한사람은 전화로 주고
다른 사람은 편지로 받을 수는 없기 때문에 기본적으로 서로 데이터를 주고 받는 방법을 약속한 것이다.
소켓의 생성
선언 :
#include <sys/type.h>
#include <sys/socket.h>
int socket(int domain, int type,int protocol);
domain : 생성할 소켓이 통신을 하기 위해 사용할 프로토콜 체계를 설정한다.
type : 소켓이 데이터를 전송하는데 있어서, 사용하게 되는 전송타입을 설정해 준다.
protocol : 두 호스트 간에 통신을 하는데 있어서 특정 프로토콜을 지정 하기 위해 사용한다.
socket 함수는 호출시 시스템 내부적으로 소켓을 생성하고 그 소켓을 조작하기 위해 필요한 파일 다시크립터를 리턴하는 함수.
시스템 내부적으로 소켓을 생성한다는 것은 호스트가 통신을 하기 위해 필요한 리소스(자원)을 할당하는 것을 의미한다.
프로토콜 체계?
PF_INET - IPv4 인터넷 프로토콜
PF_INET6 - IPv6 인터넷 프로토콜
PF_LOCAL - LOCAL 통신을 위한 UNIX 프로토콜
PF_PACKET - Low level socket을 위한 인터페이스
PF_IPX - IPX 노벨 프로토콜
소켓은 모든 프로토콜을 수용할 수 있다. 즉 소켓은 프로토콜에 독립적이다.
소켓의 타입
데이터 전송 타입을 뜻한다.
SOCK_STREAM
연결 지향적 소켓.
에러나 데이터 손실 없이 무사히 전달된다.
전송하는 순서대로 데이터가 전달된다.
전송되는 데이터의 경계가 존재하지 않는다.
SOCK_DGRAM
비연결 지향적 소켓.
전송되는 순서에 상관없이 가장 빠른 전송을 지향한다.
전송되는 데이터는 손실될 수도 있고 에러가 발생할 수도 있다.
전송되는 데이터의 경계가 존재한다.
한번에 전송되는 데이터의 크기는 제한된다.
프로토콜의 선택
IPPROTO_TCP(0) : TCP를 기반으로 하는 소켓을 생성
IPPROTO_UDP(0) : UDP를 기반으로 하는 소켓을 생성
프로토콜 체계가 PF_INET이고 소켓 타입이 SOCK_STREAM이라면 인터넷 기반 연결 지향 소켓(TCP 소켓).
프로토콜 체계가 PF_INET이고 소켓 타입이 SOCK_DGRAM이라면 인터넷 기반 비연결 지향 소켓(UDP 소켓).
socket(PF_INET,SOCK_STREAM,0);
socket(PF_INET,SOCK_DGRAM,0);
'네트워크 프로그래밍' 카테고리의 다른 글
TCP / IP 소켓 프로그래밍 -4- (0) | 2009.09.18 |
---|---|
TCP / IP 소켓 프로그래밍 -3- (0) | 2009.09.18 |
TCP / IP 소켓 프로그래밍 -1- (0) | 2009.09.18 |
UDP 경계 에코 클라이언트 구축하기 (0) | 2009.09.18 |
UDP 경계 에코 서버 구축하기 (0) | 2009.09.18 |