프로토콜 체계와 소켓 타입(TCP/UDP)
네트워크 프로그램을 할 때 가장 핵심이 되는 것이 소켓이다.
수년 전에도 지금도 socket을 이용하여 컴퓨터, 각종 디바이스( 핸드폰, 테블릿 등)와 데이터를 송수신을 한다.
이런 socket을 생성할 때 2가지 중요한 정보를 입력 하는데 그것이 바로 프로토콜 체계와 소켓을 타입이다.
오늘은 두 가지 중요한 정보에 대해 설명 하도록 하겠다.
프로토콜 체계 |
포로토콜(protocol)이란 컴퓨터 간에 데이터를 주고 받는 방식이다.
즉 각 컴퓨터 간 서로 데이터를 주고 받기 위해서 정의해 놓는 약속을 뜻한다.
이러한 규약을 정해 놓지 않으면 내가 의도한 것과 다르게 상대 컴퓨터에서 이해를 다르게 할 수 있다.
소켓 통신을 할 때 사용하는 프로토콜 부류가 몇가지 있다.
이러한 부류를 프로토콜 체계라고 하며 c에서 소켓을 생성 할 때 다음과 같이 함수를 호출 할 때 첫 번째 인자에 프로토콜 부류를 넣는다.
#include <sys/socket.h> int socket ( int domain, int type, int protocol ); |
이름 |
프로토콜 체계(Protocol Family) |
PF_INET | IPv4 인터넷 프로토콜 체계 |
PF_INET6 |
IPv6 인터넷 프로토콜 체계 |
PF_LOCAL |
로컬 통신을 위한 UNIX 프로토콜 체계 |
PF_PACKET |
Low Level 소켓을 위한 프로토콜 체계 |
PF_IPX |
IPX 노벨 프로토콜 체계 |
주소 체계 |
C에서는 소켓을 생성 후 bind나 connect 할 때 주소 구조체에 주소 체계를 넣어 준다.
Python에서는 프로토콜 체계를 넣지 않고 아래 처럼 주소 체계만 넣어 준다.
serverSocket = socket(AF_INET, SOCK_STREAM) |
이름 | 주소 체계(Address Family) |
AF_INET | IPv4 인터넷 프로토콜 체계 |
AF_INET6 | IPv6 인터넷 프로토콜 체계 |
AF_LOCAL | 로컬 통신을 위한 UNIX 프로토콜 체계 |
소켓 타입(TCP/UDP) |
소켓 타입은 데이터 전송 방식을 의미 하며 socket 함수 호출 시 2번 째 인자에 값을 넣는다.
[C 예제] #include <sys/socket.h> int socket ( int domain, int type, int protocol ); [Python 예제] serverSocket = socket(AF_INET, SOCK_STREAM) |
대표적인 소켓의 타입은 아래와 같다.
TCP |
UDP |
연결 지향형 소켓 |
비 연결 지향형 소켓 |
SOCK_STREM |
SOCK_DGRAM |
데이터 손실 없이 목적지로 전송 |
데이터 손실 우려가 있다. |
전송 순서대로 데이터가 수신 된다. |
전송된 순서에 상관없이 가장 빠른 전송 지향 |
데이터 경계 없음 |
데이터 경계 존재 |
'프로그램 > Network' 카테고리의 다른 글
[네트워크] 바이트 순서 빅 엔디안, 리틀 엔디안) (0) | 2017.12.17 |
---|---|
[Network] Python을 이용한 네트워크 프로그래밍 (2) | 2016.12.28 |
[네트워크] 네트워크 프로그래밍의 이해 2 (0) | 2016.12.25 |
[네트워크] 네트워크 프로그래밍의 이해 1 (0) | 2016.12.24 |