1. 소켓 기본

2013. 6. 17. 15:46스마트콘트롤러/TCP/IP

1-1) 소켓의 정의



 





1-2) 소켓의 생성과 해지


 

 

 int socket(int prorocolFamily, int type, int protocol)


      이것이 소켓을 생성하는 함수의 원형이다

      이 함수는 앞으로 우리가 만들게 될 소켓프로그램에서 소켓을 생성하도록 운영체제에 요청한다


     먼저, 첫번째 인자인 prorocolFamily 는 소켓 개설시 프로토콜 체계를 정의한다

     소켓은 TCP/IP




이것이 소켓을 생성하는 함수의 원형이다.

이 함수는 앞으로 우리가 만들게 될 소켓프로그램에서 소켓을 생성하도록 운영체제에 요청한다.


Socket 생성 (cont.)


  Socket() 함수의 domain 인자


소켓은 TCP/IP, 유닉스 네트워크, XEROX 네트워크 등 임의의 네트워크 프로토


콜에서 사용됨

 그러므로, 소켓 개설시 프로토콜 체계를 정의해야 함


 domain (프로토콜 체계) 인자에 지정할 수 있는 프로토콜 체계


 /usr/include/sys/socket.h 파일


– 즉, TCP/IP만을 위한 네트워크 프로토콜이 아님


– 예) TCP/IP 프로토콜 사용시, domain 인자를 PF(Protocol Family)_INET 으로 지정

domain: PF_INET  (인터넷 프로토콜 체계)

PF_INET6 (IPv6 프로토콜 체계)

PF_UNIX (유닉스 방식의 프로토콜 체계)

PF_NS (XEROX 네네 워트워크 시스템의 시스템의 프로토콜콜 체계체계)

PF_PACKET (리눅스에서 패킷 캡쳐를 위해 사용)


시스템이 내부적으로 데이터를 처리할 때 Big-Edian이나 Little-Endian을 사용할 수 있는데... 우리가 일반적으로 사용하는  Intel x86계열 CPU는 Litten-Endian을 사용하고 있으며, CPU에 따라 순서를 다르게 해석할 수 있으므로 네트워크로 데이터를 전송할 때는 반드시 네트워크 바이트순서(Network Byte Order)에 따라야 한다


TCP기반 서버 프로그램을 만들기 위해서는, 서버소켓 만들기(socket) -> 소켓에 주소할당(bind) -> 연결요청 대기(listen) -> 연결허용(accept) -> 데이터 송수신(read & write) -> 연결종료(close)의 과정을 거친다.

TCP기반 클라이언트 프로그램을 만들기 위해서는, 소켓생성(socket) -> 연결(connect) -> 데이터 송수신(read & write) -> 연결종료(close)의 과정을 거친다.