프로토콜이란?
- 멀리 떨어져 있는 두 사람이 대화를 주고받기 위해서는 나름의 대화방법을 결정해야 하는데, 여기서 결정하는 대화방법을 프로토콜이라고 한다. 즉, '컴퓨터 상호간의 통신에 필요한 규약.'이라고 할 수 있다.
SOCKET socket(int af, int type, int protocol);
- af(linux에선 domain) : 소켓이 사용할 프로토콜 체계(Protocol Family) 정보 전달.
- type : 소켓의 데이터 전송방식에 대한 정보 전달.
- protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달.
프로토콜 체계(첫 번째 인자값)
- PF_INET : IPv4 인터넷 프로토콜 체계
- PF_INET6 : IPv6 인터넷 프로토콜 체계
- PF_LOCAL : 로컬 통신을 위한 UNIX 프로토콜 체계
- PF_PACKET : Low Level 소켓을 위한 프로토콜 체계
- PF_IPX : IPX 노벨 프로토콜 체계
소켓의 타입(두 번째 인자값)
- SOCK_STREAM(연결지향형 소켓)
- 특징 : 중간에 데이터가 소멸되지 않고 목적지로 전송된다.
: 전송 순서대로 데이터가 수신된다.
: 전송되는 데이터의 경계(Boundary)가 존재하지 않는다.
- 신뢰성 있는 순차적인 바이트 기반의 연결지향 데이터 전송 방식의 소켓
- SOCK_DRAM(비 연결지향형 소켓) :
- 특징 : 전송된 데이터는 손실의 우려가 있고, 파손의 우려가 있다.
: 전송되는 데이터의 경계(Boundary)가 존재한다.
: 한번에 전송할 수 있는 데이터의 크기가 제한된다.
- 신뢰성과 순차적 데이터 전송을 보장하지 않는 고속의 데이터 전송을 목표로 하는 소켓
프로토콜(세 번째 인자값)
솔직히 첫번째와 두번째 인자값만으로도 충분히 우리가 원하는 유형의 소켓을 만들 수 있다. 그렇기 때문에 이 인자값에 0을 넣어주어도 상관이 없다. 하지만 한 가지 예외가 생긴다. 그 예외가 바로 하나의 프로토콜 체계 안에 데이터의 전송방식이 동일한 프로토콜이 둘 이상 존재하는 경우가 생길지도 모른다는 것이다. 그것을 구분해 주는 것이 바로 아래의 인자값들이다.
- IPPROTO_TCP : 연결지향형 데이터 소켓.
- IPPROTO_UDP : 비연결지향형 데이터 소켓.
'프로그래밍 > 예전글' 카테고리의 다른 글
리눅스 기본 명령어 (1) | 2010.08.17 |
---|---|
네트워크의 주소체계와 데이터 정렬 (0) | 2010.08.17 |
윈도우 기반의 소켓관련 함수 (0) | 2010.08.14 |
페도라 리눅스 GUI에서 CUI로 바꾸자~! (vi 명령어 사용) (0) | 2010.08.14 |
리눅스 yum 명령어를 알아보자 (0) | 2010.08.14 |