소켓
▶네트워크 프로그래밍 인터페이스
▶윈도우용 소켓 = 윈도우 소켓(윈속)
▶API 호출을 통해 작동
- 모듈화
- Application layer → Kernel layer
- 커널 레이어의 동작을 알 필요가 없음

소켓의 3가지 관점
1) 데이터 타입
2) 통신 종단점
3) 네트워크 프로그래밍 인터페이스
1. 소켓 데이터 타입
▶파일 디스크립터 or 핸들과 유사한 개념
▶생성과 설정 과정이 끝나면, 운영체제의 통신 관련 정보를 참조해 다양한 작업을 편리하게 할 수 있는 데이터 타입

통신을 위한 요소
▶사용할 프로토콜 (TCP or UDP)
▶송식측 IP와 port
▶수신측 IP와 port
2. 통신 종단점
▶응용 프로그램은 자신의 소켓이 상대편의 소켓과 연결된 것으로 데이터를 주고 받음
= 통신의 종단점은 소켓

3. 소켓 = 네트워크 프로그래밍 인터페이스
▶통신 양단에 모두 소켓을 사용할 필요는 없음
▶TCP/IP 프로토콜에서 일반적으로 응용계층과 전송 계층 사이에 위치

윈도우 소켓 특징
▶DLL(Dynamic-Link Library)을 통해 대부분의 기능이 제공되므로 DLL 초기화와 작업을 위한 함수가 필요
▶윈도우 프로그램은 대부분 GUI를 갖추고 메시지 구동 방식으로 동작하므로, 이를 위한 확장 함수가 존재함
▶윈도우 운영체제 차원에서 멀티스레드를 지원함, 멀티스레드 환경에서 안정적으로 동작하는 구조와 이를 위한 함수가 필요
윈도우 소켓 프로그래밍의 장점
▶유닉스 소켓과 소스 코드 수준에서 호환성이 높음, 기존 코드를 이식하여 활용하기 쉬움
▶가장 널리 사용되는 네트워크 프로그래밍 인터페이스로 여러 운영체제에서 사용가능
▶TCP/IP 외 프로토콜도 지원하므로 최소한의 코드 수정으로 응용프로그램이 사용할 프로토콜 변경 가능
▶비교적 저수준 프로그래밍 인터페이스이므로 세부 제어가 가능, 고성능 네트워크 프로그램 개발 가능
윈도우 소켓 프로그래밍의 단점
▶응용 프로그램 수준의 프로토콜을 프로그래머가 직접 설계해야함
- 주고 받는 데이터 형식이나 전송 절차 등을 고려해 프로그래밍 해야함, 설계 변경 시에는 코드 수정이 필수
▶서로 다른 바이트 정렬 방식(빅엔디아, 리틀엔디아)을 사용하거나 데이터 처리 단위가 서로 다른 호스트끼리 통신할 경우, 응용 프로그램 수준에서 데이터 변환을 처리해야함
'코딩 > Network' 카테고리의 다른 글
[네트워크] 윈속 초기화와 종료 (0) | 2023.04.14 |
---|---|
[네트워크] 윈도우 소켓 오류 처리 (0) | 2023.04.14 |
[네트워크] 클라이언트-서버 (Client-Server) 모델 (0) | 2023.04.13 |
[네트워크] 데이터 전송 원리, 패킷, IP주소, 도메인 (0) | 2023.04.13 |
[네트워크] TCP/IP 프로토콜 구조 (0) | 2023.04.12 |