RTO care

socket

관련기술2016. 10. 24. 15:44

소켓의 개념

=> 데이터 타입 관점

     운영체제가 통신을 위해 관리하는 데이터를 간접적으로 참조할 수 있도록 만든 일종의 핸들

     생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데이터 타입

   

=> 통신 종단점 관점

     소켓은 통신을 위해 필요한 여러 요소의 집합체 (ex. 사용할 프로토콜, 송수신측 IP주소 및 포트 번호)

     애플리케이션은 자신의 소켓이 상대방의 소켓과 연결된 것으로 생각하고 데이터를 교환

   

=>네트워크 프로그래밍 인터페이스 관점

    애플리케이션과 전송계층 사이에 위치하는 것으로 간주하며 통신 양단이 모두 소켓을 사용할 필요는 없음

   

   

* 윈속 라이브러리 추가

   

* 소켓 주소 구조체(Socket Address Structures)

- 네트워크 프로그램에서 필요로 하는 주소 정보를 담고 있는 구조체

- 다양한 소켓 함수의 인자로 사용

- 주소 체계에 따라 다양한 형태가 존재(TCP/IP => SOCKADDR_IN,  lrDA => SOCKADDR_IRDA)

- 기본형은 SOCKADDR 구조체

   

   

* SOCKADDR 구조체

- sa_family : 주소 체계를 나타내는 상수 값

                  ex) TCP/IP 프로토콜 => AF_INET

   

- sa_data : 해당 주소 체계에서 사용하는 주소 정보

                 ex) TCP/IP 프로토콜 => IP주소와 포트번호

   

   

* 소켓구조체의 특이한 케이스들 (다양한 형태중 많이 쓰는것들만 정리)

1) SOCKADDR_IN 구조체

- sin_addr : 32비트

- in_addr 구조체

   

2) IN_ADDR 구조

   

   

   

* 소켓 주소 구조체 비교

   

   

* 바이트 정렬(byte ordering)

   

ex) 예전글을 참조한다.

[프로그래밍/운영체제] - 빅엔디안,리틀엔디안 정리 

   

- 빅 엔디안 방식(Big-Endian) : 대소비교가 빠름, 슈퍼컴퓨터나 네트워크 등에 사용

- 리틀 엔디안 방식(Little-Endian) : 산술 연산이 빠름, Intel칩이나 호스트 등에 사용

  ex) 원 데이터가 0x12345678이라면...

   

   

   

   

   

   

   

   

   

* 네트워크 애플리케이션에서 바이트 정렬 방식을 고려해야 하는 경우

- 프로토콜 구현을 위해 필요한 정보

  : IP주소 => 빅 엔디안

  : 포트번호 => 빅 엔디안

   

- 애플리케이션이 주고 받는 데이터

  : 빅 엔디안 또는 리틀 엔디안으로 통일

      

* 네트워크 바이트 정렬 => 빅 엔디안 방식을 사용한다.

* 호스트 바이트 정렬 => 시스템이 사용하는 고유한 바이트 정렬 방식(Intel칩 사용으로 주로 리틀엔디안방식)

   

   

* 바이트 정렬 함수(유닉스 호환)

 * 바이트 정렬 함수(윈속 확장)

   

* SOCKADDR_IN 구조체의 바이트 정렬 방식

   

* IP 주소변환 함수

   

 문자열 형태로 IP주소를 입력받아 32비트 숫자(네트워크 바이트 정렬)로 리턴

   

   

 32비트 숫자(네트워크 바이트 정렬)로 IP주소를 입력받아 문자열 형태로 리턴 

   

   

   

   

출저:http://alisa2304.tistory.com/31

   

출처: <http://skmagic.tistory.com/entry/소켓>

'관련기술' 카테고리의 다른 글

ipv4, ipv6  (0) 2016.10.24
Socket Option  (0) 2016.10.24
TCP/IP  (0) 2016.10.24
콘크리트  (0) 2016.10.24
드라이크리닝  (0) 2016.10.24