URL : http://christin2.tistory.com/25
소켓의 생성
int socket(int domain, int type, int protocol);
- domain : 소켓이 사용할 프로토콜 체계 정보 전달
- type : 소켓의 데이터 전송방식에 대한 정보 전달
- protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달
ref URL : http://forum.falinux.com/zbxe/?mid=C_LIB&document_srl=429387&sort_index=readed_count&order_type=desc
ref URL : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/2/socket
프로토콜 체계(Protocol Family)
: 생성되는 소켓이 사용할 프로토콜의 부류 정보
: 소켓 생성의 첫 번째 인자
소켓의 타입(Type)
: 소켓의 데이터 전송 방식을 의미
: 소켓 생성의 두 번째 인자
1. 연결지향형 소켓(SOCK_STREAM) : 신뢰성 있는 순차적인 바이트 기반의 연결지향 데이터 전송 방식의 소켓
∙ 특성
- 중간에 데이터가 소멸되지 않고 목적지로 전송됨
- 전송 순서대로 데이터가 수신됨
- 전송되는 데이터의 경계가 존재하지 않음
* read 함수의 호출 횟수와 write 함수의 호출 횟수는 연결지향형 소켓의 경우 큰 의미를 갖지 못함
* 소켓 대 소켓의 연결은 반듯이 1:1이어야 함
** TCP 프로토콜을 사용하는 것
2. 비 연결지향형 소켓(SOCK_DGRAM) : 신뢰성과 순차적 데이터 전송을 보장하지 않는, 고속의 데이터 전송을 목적으로 하 는 소켓
∙ 특성
- 전송된 순서에 상관없이 가장 빠른 전송을 지향함
- 전송된 데이터는 손실의 우려가 있고, 파손의 우려가 있음
- 전송되는 데이터의 경계가 존재
- 한 번에 전송할 수 있는 데이터의 크기가 제한됨
** UDP 프로토콜을 사용하는 것
프로토콜의 최종선택
: 소켓의 데이터 전송방식은 같지만, 그 안에서도 프로토콜이 다시 나뉘는 상황에서 세 번째 인자를 통해 더 구체화
Ex)
IPv4 인터넷 프로토콜 체계에서 동작하는 연결지향형 데이터 전송 소켓
int tcp_socket = socket ( PF_INET, SOCK_STREAM, IPPROTO_TCP );
IPv4 인터넷 프로토콜 체계에서 동작하는 비 연결지향형 데이터 전송 소켓
int ucp_socket = socket ( PF_INET, SOCK_DGRAM, IPPROTO_UCP );
'Programming > Linux C/C++' 카테고리의 다른 글
네트워크 프로그래밍과 소켓의 이해 (0) | 2014.09.02 |
---|---|
주소체계와 데이터 정렬 (2) | 2014.08.29 |
TCP 기반 서버/클라이언트 1 (0) | 2014.08.29 |
linux socket summary (0) | 2014.06.15 |
리눅스 커널 내부 구조@kandroid (0) | 2014.06.03 |