[Computer Network] 소켓의 타입과 프로토콜 설정

G·2023년 3월 15일
0

Socket Programming

목록 보기
3/6

socket 함수를 다시 확인해보자.

#incldue <sys/socket.h>

int socket(int domain, int type, int protocol)	

domain: 소켓이 사용할 프로토콜 정보 전달(e.g. ip version 4)

type: 소켓의 데이터 전송방식에 대한 정보 전달
TCP 또는 UDP 둘 중 하나를 선택한다.

protocol: 두 컴퓨터 통신에 사용되는 프로토콜 정보 전달

TCP의 특징

  • 중간에 데이터가 소멸되도 복구한다.
  • 전송 순서대로 데이터가 어플리케이션 입장에서 수신된다
  • 데이터의 경계가 존재하지 않는다.
  • 소켓 대 소켓의 연결은 반드시 1대 1의 구조이다.

UDP의 특징

  • 어플리케이션 입장에서 데이터의 손실 및 에러의 우려가 있다.
  • 어플리케이션 입장에서 데이터의 경계가 존재한다.

소켓의 타입

  • 연결형 지향형의 소켓 타입(TCP)
  • 비연결형 지향형의 소켓 타입(UDP)
    여기서 연결 지향형은

TCP socket

#incldue <sys/socket.h>

int tcp_socket = socket(PF_INET, SOCKET_STREAM, IPPROTO_TCP)	

UDP socket

#incldue <sys/socket.h>

int udp_socket = socket(PF_INET, SOCKET_DGRAM, IPPROTO_UDP)	

첫 번째 두 번째 인자를 통해서 소켓의 프로토콜이 사실상 정해지기 때문에 세 번째 인자를 0으로 전달해도 된다.


TCP 소켓에 정보를 전달할 땐 한 번에 전달하며, 이는 몇개의 패킷에 담길지 모른다. 게다가 전송된 데이터는 receiver 버퍼에 1 바이트 단위로 존재하기 때문에, 한 번에 데이터를 받을 수도 있고 바이트 단위로 받을 수도 있다. boundary가 없음을 이해하자.

profile
열심히 안 사는 사람

0개의 댓글