티스토리 뷰

1
int socket(int domain, int type, int protocol);
cs



1
2
3
4
5
SOCKET WSAAPI socket(
  _In_ int af,
  _In_ int type,
  _In_ int protocol
);
cs
  • domain : 생성할 소켓이 통신을 학 위해 사용할 프로토콜 체계 설정.

 프로토콜 체계

정의

PF_INET

IPv4 인터넷 프로토콜 

PF_INET6 

IPv6 인터넷 프로토콜 

PF_LOCAL 

Local통신을 위한 UNIX 프로토콜 

PF_PACKET

Low level socket을 위한 인터페이스 

PF_IPX 

IPX 노벨 프로토콜 

PF_LOCAL >> 유닉스 계열의 시스템에서 시스템 내부의 프로세스들끼리 통신을 하기 위한 용도로도 사용 될 수 있음.

  • type : 소켓이 데이터를 전송하는데 있어서 사용하게 되는 전송 타입을 설정.

    • SOCK_STREAM : 전송라인 선점하여 통신. ==> Circuit Switching

      • TCP

      • 에러나 데이터의 손실 없이 무사히 전달.

      • 전송하는 순서대로 데이터가 전달.

      • 전송되는 데이터의 경계가 존재하지 않음.

        • 두 번의 write(send)함수 호출을 통해서 데이터를 전송했다 하더라고, 수신측 호스트의 버퍼가 넉넉하다면 한번의 read(recv)함수 호출을 통해서 모든 데이터를 수신할 수 있다.

    • SOCK_DGRAM : 비연결 지향형. ==> Packet Switching

      • UDP

      • 전송되는 순서에 상관없이 가장 빠른 전송을 지향한다.

        • 데이터를 일단 보낸 후, 매순간 마다 라우터를 정해서 길이 막힌지 안막힌지 판단후 최적의 라인으로 데이터 전송.

      • 전송되는 데이터는 손실될 수도 있고 에러가 발생할 수도 있다.

      • 전송되는 데이터의 경계가 존재한다.

        • 데이터를 전송하는 호스트가 세 번의 함수 호출을 통해서 데이터를 전송했다면, 수신하는 호스트도 반드시 세 번의 함수 호출을 거쳐야 데이터를 완전히 수신할 수 있음.

      • 한번에 전송되는 데이터의 크기는 제한된다.

  • protocol : 두 호스트간에 통신을 하는데 있어서 특정 프로토콜을 지정하기 위해 사용.

    • 프로토콜을 좀 더 구체화하기 위해서 사용된다.(ex.전송 타입은 같지만 그 안에서도 프로토콜이 또 다시 나뉘는 상황)

    • RAW_SOCKET을 생성하는 경우에는 유용하게 사용되지만, 그렇지 않은 경우에는 그냥 0을 넣으면 된다.

case 

domain 

type 

protocol 

1

PF_INET 

SOCK_STREAM 

IPPROTO_TCP(0) 

PF_INET 

SOCK_DGRAM 

IPPROTO_UDP(0) 



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함