1. 프로토콜의 이해와 소켓의 생성
▶ 프로토콜이란 ?
- 개념적으로 약속의 의미를 담고 있다.
- 컴퓨터 상호간의 데이터 송수신에 필요한 통신규약이다.
- 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다.
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
domain -> 소켓이 사용할 프로토콜 체계(Protocol Family) 정보 전달
type -> 소켓의 데이터 전송방식에 대한 정보 전달
protocol -> 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달
▶ 프로토콜 체계(Protocol Family)
- 프로토콜도 그 종류에 따라서 부류가 나뉘는데, 그 부류를 가리켜 프로토콜 체게라 한다.
- 프로토콜 체계 PF_INET은 IPv4 인터넷 프로토콜 체계를 의미한다. 우리는 이를 기반으로 소켓 프로그래밍을 학습한다.
▶ 소켓의 타입
- 데이터 전송방식을 의미한다
- 소켓이 생성될 때 소켓의 타입도 결정되어야 한다.
▶ 프로토콜 체계 PF_INET의 대표적인 소켓 타입 둘
- 연결 지향형 소켓 타입(데이터 전송 보장하지만 느리다.)
- 비 연결 지향형 소켓 타입(데이터 전송 보장못하지만 빠르다.)
▶ 연결지향형 소켓(SOCK_STREAM)의 데이터 전송특성(TCP)
- 중간에 데이터가 소멸되지 않는다.
- 전송 순서대로 데이터가 수신된다.
- 데이터의 경계가 존재하지 않는다.
- 소켓 대 소켓의 연결은 반드시 1 대 1의 구조.
▶ 비 연결지향형 소켓(SOCK_DGRAM)의 데이터 전송 특성(UDP)
- 전송순서 상관없이 빠른 속도의 전송을 지향한다.
- 데이터 손실 및 파손의 우려가 있다.
- 데이터의 경계가 존재한다.
- 한번에 전송할 수 있는 데이터의 크기가 제한된다.
▶ IPv4 인터넷 프로토콜 체계에서 동작하는 연결지향형 데이터 전송 소켓
int tcp_socket=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
▶ IPv4 인터넷 프로토콜 체계에서 동작하는 비 연결지향형 데이터 전송 소켓
int udp_socket=socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
---> 첫 번째, 두 번째 인자로 전달된 정보를 통해서 소켓의 프로토콜이 사실상 결정되기 때문에 세 번쨰 인자를 0으로 전달해도 된다.
'Foundation > - TCP IP' 카테고리의 다른 글
OSI 7계층 (0) | 2017.11.18 |
---|---|
(2) 연결을 요청하는 소켓의 구현(클라이언트 소켓) 및 서버 접속 (0) | 2017.09.07 |
(1) 리스닝 소켓의 전반적인 생성과정 (0) | 2017.09.07 |