코딩/Network

[네트워크] 윈도우 소켓 (윈속)

나야, 웅이 2023. 4. 13. 13:37
728x90
반응형
SMALL

소켓
▶네트워크 프로그래밍 인터페이스
윈도우용 소켓 = 윈도우 소켓(윈속)
▶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 외 프로토콜도 지원하므로 최소한의 코드 수정으로 응용프로그램이 사용할 프로토콜 변경 가능
▶비교적 저수준 프로그래밍 인터페이스이므로 세부 제어가 가능, 고성능 네트워크 프로그램 개발 가능
 
 
 
윈도우 소켓 프로그래밍의 단점
▶응용 프로그램 수준의 프로토콜을 프로그래머가 직접 설계해야함
- 주고 받는 데이터 형식이나 전송 절차 등을 고려해 프로그래밍 해야함, 설계 변경 시에는 코드 수정이 필수
▶서로 다른 바이트 정렬 방식(빅엔디아, 리틀엔디아)을 사용하거나 데이터 처리 단위가 서로 다른 호스트끼리 통신할 경우, 응용 프로그램 수준에서 데이터 변환을 처리해야함

728x90
반응형
LIST