[Network] TCP/IP 소켓의 타입과 프로토콜

kkson·2023년 9월 3일
1

Network

목록 보기
4/4
post-thumbnail

소켓의 타입과 프로토콜

소켓의 생성 방법과 소켓별 특성


프로토콜(Protocol)이란?

컴퓨터 상호 간의 대화에 필요한 통신 규약이다.


소켓의 생성

#include <sys/socket.h>

int socket(int domain, int type, int protocol); // 성공 시 파일 디스크립터, 실패 시 -1 반환
/* domain   소켓이 사용할 프로콜 체계(Protocol Family) 정보 전달
 * type     소켓의 데이터 전송방식에 대한 정보 전달
 * protocol 두 컴퓨터 간 통신에 사용되는 프로토콜 정보 전달
 */

프로토콜 체계(Protocol Family)

소켓이 통신에 사용하는 프로토콜 부류 정보

이름프로토콜 체계(Protocol Family)
PF_INETIPv4 인터넷 프로토콜 체계
PF_INET6IPv6 인터넷 프로토콜 체계
PF_LOCAL로컬 통신을 위한 UNIX 프로토콜 체계
PF_PACKETLow Level 소켓을 위한 프로토콜 체계
PF_IPXIPX 노벨 프로토콜 체계

소켓의 타입(Type)

소켓의 데이터 전송 방식


소켓의 타입 1: 연결지향형 소켓(SOCK_STREAM)

socket 함수의 두 번째 인자로 SOCK_STREAM을 전달하면 ‘연결지향형 소켓’이 생성된다.

연결지향형 소켓의 데이터 송수신 방식:

  • 중간에 데이터가 소멸하지 않고 목적지로 전송된다.
  • 전송 순서대로 데이터가 수신된다.
  • 전송되는 데이터의 경계(Boundary)가 존재하지 않는다.
💡 데이터의 경계가 존재하지 않음은 다음의 상황을 표현한 것이다. ”사탕 100개가 여러 번에 걸쳐서 보내졌다. 그러나 받는 사람은 사탕 100개가 쌓인 다음에 이름 한번에 봉지에 담아갔다.”

데이터를 송수신하는 소켓은 내부적으로 버퍼(buffer), 쉽게 말해서 바이트 배열을 지니고 있다.

💡 소켓 대 소켓의 연결은 반드시 1대1이어야 한다. 즉, 연결지향형 소켓 하나는 다른 연결지향형 소켓 하나와만 연결이 가능하다.

소켓의 타입 2: 비 연결지향형 소켓(SOCK_DGRAM)

socket 함수의 두 번째 인자로 SOCK_DGRARM을 전달하면 ‘비 연결지향형 소켓’이 생성된다.

비 연결지향형 소켓의 데이터 송수신 방식:

  • 전송된 순서에 상관없이 가장 빠른 전송을 지향한다.
  • 전송된 데이터는 손실의 우려가 있고, 파손의 우려가 있다.
  • 전송되는 데이터의 경계(Boundary)가 존재한다.
  • 한번에 전송할 수 있는 데이터의 크기가 제한된다.

References

윤성우(2009). 윤성우의 열혈 TCP/IP 소켓 프로그래밍. 서울: 오렌지미디어.

profile
열린 마음으로 환경 변화에 유연한 개발자

0개의 댓글