[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
Network 프로그램
✦ Socket Library 사용
✦ 각 Socket별로 Port 할당
✧ Port는 Socket 식별자가 됨
Network 통신 프로그램 구현
✦ H/W 신호 처리, 장치 Driver의 H/W 제어, OS의 Protocol 구현 등의 여러 계층 협력 필요
Socket Programming
✦ 다양한 Platform에 널리 사용중인 Network 프로그램 제작 기반의 Programming
✦ Network Programming Interface
✧ File Descriptor나 Handle과 유사 개념
✧ 내부 통신 과정을 몰라도 Data 초기화 및 정해진 절차에 따른 함수 호출 작업만으로 위의 것들을 구현
→ 따라서 파일 I/O Code와 비슷
파일 I/O 프로그램과 Network Socket 프로그램의 Code 간 유사성
int fd = open("myfile", ...);
(...)
read(fd, ...);
write(fd, ...);
(...)
Plain Text
복사
SOCKET sock = socket(...);
(...)
recv(sock, ...);
send(sock, ...);
(...)
Plain Text
복사
Winsock 2.2
✦ Windows Sockets의 줄임말
✧ "윈속"이라 발음
✦ Unix Socket 기반
✧ Windows-Unix 간 높은 호환성/이식성
✦ WS2_32.dll
✧ 해당 .dll의 API 사용
→ .dll 초기화/종료 Code 작성
✦ GUI 및 Event Driven 방식의 Message 구동 확장 함수 존재
✦ Multi-Thread 환경에 맞는 구조 및 함수 필요
✦ Winsock 지원 Protocol
✧ TCP/IP, IPv6, IrDA, Bluetooth 등
✦ 장점
✧ Unix Socket과의 높은 이식성
✧ 가장 널리 사용하는 Network Programming Interface이므로 여러 Flatform에서 유용
✧ 다양한 지원 Protocol
✧ 비교적 저수준이므로 세부 제어 가능
✦ 단점
✧ 설계 변경 시 Code 수정
→ 응용 수준의 Protocol을 직접 설계 // Data 형식, 절차 등 고려하며 Programming
✧ Data 변환 처리
→ 서로 다른 Byte Ordering 혹은 Data 처리 단위(32bit, 64 bit)가 다른 Host 간 통신 시 응용 수준에서 Data 변환 필요
Dev-CPP에서 Winsock 사용
✦ WS2_32.DLL Import
✧ 프로젝트 > 프로젝트 옵션 > [매개변수들] 탭 > Linker 칸에 libws2_32.a 추가
✦ 경로
✧ C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libws_2_32.a
✧ 32 bit xp의 경우 lib32에 libws_2_32.a 존재
Visual Studio에서 Winsock 사용
✦ WS2_32.DLL Import
✧ 프로젝트를 선택한 상태에서 프로젝트 > 속성 > 구성 속성 > 링커 > 입력 > 추가 종속성 칸에 ws2_32.lib 추가
✦ Source Code에 #pragma comment(lib, “ws2_32”)를 추가하여 Winsock을 사용할 수 있는 방법도 있음



