NetWork-소켓(Soket)
- 프로그래밍/NetWork
- 2011. 5. 16. 11:47
* 소켓의 개념
=> 데이터 타입 관점
운영체제가 통신을 위해 관리하는 데이터를 간접적으로 참조할 수 있도록 만든 일종의 핸들
생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데이터 타입
=> 통신 종단점 관점
소켓은 통신을 위해 필요한 여러 요소의 집합체 (ex. 사용할 프로토콜, 송수신측 IP주소 및 포트 번호)
애플리케이션은 자신의 소켓이 상대방의 소켓과 연결된 것으로 생각하고 데이터를 교환
=>네트워크 프로그래밍 인터페이스 관점
애플리케이션과 전송계층 사이에 위치하는 것으로 간주하며 통신 양단이 모두 소켓을 사용할 필요는 없음
* 윈속 라이브러리 추가
* 소켓 주소 구조체(Socket Address Structures)
- 네트워크 프로그램에서 필요로 하는 주소 정보를 담고 있는 구조체
- 다양한 소켓 함수의 인자로 사용
- 주소 체계에 따라 다양한 형태가 존재(TCP/IP => SOCKADDR_IN, lrDA => SOCKADDR_IRDA)
- 기본형은 SOCKADDR 구조체
* SOCKADDR 구조체
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칩 사용으로 주로 리틀엔디안방식)
* 바이트 정렬 함수(유닉스 호환)
* 바이트 정렬 함수(윈속 확장)
* IP 주소변환 함수
문자열 형태로 IP주소를 입력받아 32비트 숫자(네트워크 바이트 정렬)로 리턴
32비트 숫자(네트워크 바이트 정렬)로 IP주소를 입력받아 문자열 형태로 리턴
출저:http://alisa2304.tistory.com/31
이 글을 공유하기