Clolent

프로토콜이란

- 개념적으로 약속의 의미를 담고 있다.

- 컴퓨터 상호간의 데이터 송수신에 필요한 통신규약

- 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다.


#include <sys/socket.h>


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

성공시 파일 디스크립터, 실패시 -1 반환


domain : 소켓이 사용할 프로토콜 체계 정보 전달

type 소켓의 데이터 전송방식에 대한 정보

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


결국 3가지 모두 프로토콜 정보와 관련있음


프로토콜 체계



소켓의 타입 

- 소켓의 타입 : 데이터 전송 방식을 의미함

- 소켓이 생성될 때 소켓의 타입도 결정되어야 함


두 타입의 소켓

- 연결 지향형 소켓 TCP

중간에 데이터 소멸이 없음

전송 순서대로 데이터 수신

데이터의 경계가 존재하지 않음

소켓대 소켓의 연결은 1대 1 

컨베이어 벹트를 생각하자

int tcp_socket = socket( PE_INET, SOCK_STREAM, IPPROTO_TCP );


- 비 연결지향형 소켓 UDP

전송순서 상관없이 빠른 속도의 전송

데이터 손실 및 파손의 우려

데이터의 경계 존재

한번에 전송할 수 있는 데이터의 크기가 제한

오토바이 퀵 서비스를 생각하자

int udp_socket = socket( PE_IENT, SOCK_DGRAM, IPPROTO_UDP );


※ 첫번째, 두번째 인자로 전달된 정보를 통해서 소켓의 프로토콜이 사실상 결정 되기 때문에 세번 째 인자로 0 을 전달해도 됨



인터넷 주소란

- 4 바이트 주소체계인 IPv4 와 16바이트 주소체계인 IPv6 가 있다

- 인터넷상에서 컴퓨터를 구분하는 목적으로 사용되는 주소.

- 네트워크 주소와 호스트 주소로 나뉨

- 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다.



클래스 구분



PORT 번호

- IP는 컴퓨터를 구분하는용도, PORT 번호는 소켓을 구분하는 용도

- 하나의 프로그램 내에 둘 이상의 소켓이 존재할 수 있으므로, 둘 이상의 PORT가 

  하나의 프로그램에 의해 할당 될 수 있음

- PORT 번호는 16비트, 0 ~ 65535 

- 0 ~ 1023 은 잘 알려진 PORT 라서 이미 용도가 결정되어 있음 


IPv4 구조체


struct sockaddr_in { 

sa_family_t    sin_family ;   주소체계 정보 저장

uint16_6       sin_port ;     PORT 번호

struct in_addr sin_addr ;    32비트 IP 주소

char            sin_zero[8] ;   사용되지 않음, 반드시 0으로 채워야함

}


struct in_addr {

in_addr_t    s_addr ;    32비트 IPv4 인터넷 주소

}


바이트 순서와 네트워크 바이트 순서

- 빅 엔디안

상위바이트의 값을 작은 번지수에 저장

- 리틀 엔디안

상위 바이트의 값을 큰 번지수에 저장

추후 추가 설명

댓글 로드 중…

블로그 정보

Clolent - 커피물조절달인

최근에 게시된 글