TCP/IP Socket Programming 2

다나·2022년 12월 23일
0

컴퓨터 네트워크

목록 보기
5/6
post-thumbnail

1. 프로토콜(Protocol)의 이해와 소켓의 생성 🚀

프로토콜(Protocol) : 컴퓨터 상호간의 데이터 송수신에 필요한 통신규약 (약속)

  • 소켓 생성시, 기본적인 프로토콜을 지정해야 한다.
#include <sys/socket.h>

int socket(int domain, int type, int protocol);
//성공시 파일 디스크립터, 실패시 -1을 반환한다.

Arguments 인자

  • domain : 소켓이 사용할 프로토콜 체계 정보를 지정한다.
  • type : 소켓의 데이터 전송방식에 대한 정보를 지정한다.
  • protocol : 두 컴퓨터 간 통신에 사용되는 프로토콜 정보를 지정한다.

2. 프로토콜 체계(Protocol Family) 👩‍🏫

1) PF_INET : IPv4 인터넷 프로토콜 체계
2) PF_INET6 : IPV6 인터넷 프로토콜 체계
3) PF_LOCAL : 로컬 통신을 위한 UNIX 프로토콜 체계
4) PF_PACKET : Low Level 소켓을 위한 프로토콜 체계
5) PF_IPX : IPX 노벨 프로토콜 체계

3. 소켓의 타입(Type) 🎒

  • 소켓의 타입은 '데이터 전송방식'을 의미한다.
  • 따라서, 소켓 생성시 소켓의 타입이 결정되어야 한다.

PF_INET 프로토콜 체계의 대표적인 소켓 타입

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

int tcp_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
//IPv4 인터넷 프로토콜 체계에서 동작하는 '연결지향형 전송 소켓'

특징 1 : 중간에 데이터가 소멸될 수 있다.
특징 2 : 전송 순서대로 데이터가 수신되지 않는다.

  • 데이터가 중간에 소멸될 수 있고 전송 순서대로 수신되지 않지만,
    TCP는 소멸된 데이터를 재전송하여 신뢰를 보장하며, 받지 않은 데이터 전까지만 Application으로 올려보내기 때문에 전송 순서대로 데이터를 전송할 수 있다.

특징 3 : 데이터 경계가 존재하지 않는다.

  • Stream Delivery이기 때문이다. (컴퓨터 네트워크 이론 부분 참고)

특징 4 : 소켓 대 소켓의 연결은 1:1 구조이다.

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

int udp_socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
//IPv4 인터넷 프로토콜 체계에서 동작하는 '비연결지향형 전송 소켓'

특징 1 : 데이터 손실 및 파손의 우려가 있다.

  • UDP는 데이터가 사라져도 복구(재전송)하지 않기 때문이다.

특징 2 : 데이터 경계가 존재한다.
특징 3 : 한 번에 전송할 수 있는 데이터의 크기가 제한된다.

참고 (네트워크 연결 방식 종류 - TCP가 연결지향형 소켓 타입인 이유)
1) Circuit Switching : 연결 지향 방식 - 중앙제어 및 전체 경로 설정
2) Packet Switching : 비연결 지향 방식 - 인터넷 연결 방식
2-1) TCP : (논리적) 연결 지향 방식 - 연결 setup이 되어야 전송 가능하다. (상대방이 연결되어야 한다.)
2-2) UDP : (논리적) 비연결 지향 방식 - 상대방 연결 없이도 전송 가능하다. (ex. 우편)

  • 즉, TCP는 Packet Switching이지만, 논리적으로는 연결 지향 방식이다.
  • 그리고 UDP는 Packet Switching이고, 논리적으로도 비연결 지향 방식이다.
profile
컴퓨터공학과 학생이며, 백엔드 개발자입니다🐰

0개의 댓글