BEST
보안 · 네트워크

/

시스템 · 운영체제

Windows 소켓 프로그래밍 입문에서 고성능 서버까지!

이 강의를 통해 응용 프로그램 수준 프로토콜 설계 기법과 IOCP기반 고성능 서버 개발 방법을 배울 수 있습니다!

(5.0) 수강평 28개

수강생 1,193명

Thumbnail

중급자를 위해 준비한
[시스템 · 운영체제] 강의입니다.

이런 걸
배워요!

  • Windows기반 TCP 소켓 프로그래밍 기법

  • 멀티스레드 서버 제작 기법

  • IOCP 기반 고성능 서버 제작 기법

  • 응용 프로그램 수준 프로토콜 설계 기법

수준 높은 프로그래머로 도약하고 싶다면? 
윈도우 소켓 프로그래밍에 도전하세요!

C/C++ 고성능 서버 구축,
끝은 항상 IOCP입니다! 

Windows 환경에서 TCP/IP 소켓 프로그램을 개발하는 방법을 배웁니다. 최초 소켓을 다루는 입문이론을 비롯해 IOCP(I/O Completion Port)를 다루는 방법과 응용 프로그램 수준 프로토콜 설계 기법까지 다룹니다. 

C/C++ 계열 개발자들이 꼭 알아야 할 지식으로 고성능 서버는 빠지지 않는 주제입니다. 그리고 그 끝에는 늘 IOCP가 있습니다. 사실 IOCP는 어려운 주제가 아닙니다! 운영체제에 대한 어느 정도의 이해(특히 가상 메모리)가 있고 스레드를 다룰 줄 아는 분이라면 누구나 배울 수 있습니다. 다시 말해 기반 이론에 대한 이해가 탄탄하다면 쉽게 이해할 수 있습니다.

그리고 소켓 프로그래밍을 다루는 대부분의 서적과 강의들이 채팅 서비스를 다룹니다. 그 과정에서 몇몇 잘못된 관념이 생겨납니다. 안타깝게도 그 문제는 소켓을 이해하는 데 방해 요소로 작용할 뿐 아니라 프로토콜 설계를 바르게 할 수 없는 원인이 되기도 합니다. 


소켓 프로그래밍을 위한
핵심 솔루션을 알려드립니다.

1️⃣ TCP 소켓 프로그래밍 기초 이론

2️⃣ 응용 프로그램 프로토콜 설계 기법

3️⃣ 장애 상황을 고려한 서버 개발 방법

4️⃣ IOCP 기반 서버 개발 방법

이 강의는 이와 같은 문제들을 해결하기 위해 소켓 프로그래밍 입문 단계에서 겪을 수 있는 문제들을 포함해 바른 해결 방안과 학습 방향을 제시합니다. 무엇보다 Wireshark를 이용해 패킷을 직접 확인하고 자신이 알고 있는 각종 이론과 코드 수준 상황을 연계해 이해할 수 있습니다. 나아가 장애 문제에 대응할 수 있는 방법까지 학습함으로써 고성능 서버를 개발할 수 있는 기반을 확보할 수 있습니다.


혹시 여러분의 고민은 아닌가요?

고성능이 요구되는 서버를 개발해야 하는 C/C++ 계열 개발자를 위한 강의입니다!

Case 1 소켓 프로그래밍을 하고 싶은데 OSI 7 Layer부터 막혔어요.

소켓 프로그래밍을 공부하기 전에 반드시 OSI 7 Layer를 공부할 필요는 없습니다. 물론 알고 있다면 도움이 되는 것이 사실이지만, 필수라 하기는 어렵습니다. 다만 TCP 프로토콜에 대해 한 번이라도 공부를 한 후에 시작하는 것이 좋습니다.

Case 2 소켓 프로그래밍을 배우고 싶은데 너무 어려워요. 시스템 프로그래밍을 꼭 해야 하나요?

시스템 프로그래밍을 이미 알고 있는 사람이라면 TCP에 대한 공부만 열심히 하는 것으로 소켓 프로그래밍을 쉽게 끝낼 수 있습니다. 그만큼 시스템 프로그래밍에 대한 이해는 중요합니다. 그러나 복잡한 것들을 모두 알 필요는 없고 멀티스레딩 및 동기화 방법만 알아도 학습에 문제는 없습니다.

Case 3 IOCP 서버가 고성능인 건 알겠는데 공부하기가 너무 어려워요.

많은 분들이 IOCP가 어렵다고 생각합니다. 이는 내부 흐름이 눈에 보이지 않고 비동기 파일 입/출력 기법 중 Callback 구조를 이용한 방법에 대해 경험이 부족하기 때문입니다. 소켓의 본질이 파일인 만큼 비동기 입/출력 기법을 제대로 배운다면 쉽게 IOCP도 이해할 수 있습니다. 본 강의는 그러한 문제에 대응할 수 있도록 커리큘럼을 구성했습니다.

Case 4 Client/Server 구조를 사용하고 있는데 적용된 프로토콜이 적절한지, 이렇게 코드를 작성하는 게 맞는지 모르겠어요.

프로토콜 설계라는 말에서 많은 분들이 지레 겁을 먹습니다. 하지만 알고 나면 별 것 아니라는 생각을 하게 됩니다. 특히 송/수신 구조를 코드 수준에서 경험해보면 더욱 그렇습니다. 

Case 5 게임 서버 개발자가 되고 싶어요. 무엇을 공부하면 좋을까요?

게임서버는 고성능, 고가용성이 필수입니다. TCP/IP 프로토콜에 대한 깊은 이해시스템 프로그래밍 능력 그리고 프로토콜 설계 능력이 특히 중요합니다. IOCP같은 고속 입/출력 기법을 아는 것은 필수라 하겠습니다.


학습 내용을 
확인해보세요.

  • TCP/IP 소켓 프로그램을 작성할 수 있습니다. (에코, 채팅)
  • ICOP 기반 고성능 C/C++ 서버를 제작할 수 있습니다.
  • 응용 프로그램 수준 프로토콜 설계 및 관련 코드를 작성하는 기법을 알 수 있습니다.
  • 내가 작성한 응용 프로그램을 운영하는 데 발생할 수 있는 장애 상황을 분석하고 대응할 수 있습니다.
  1. TCP 소켓 프로그래밍 기초 이론
  2. TCP 에코 서버 (멀티스레드 기반)
  3. TCP 채팅 서버 (멀티스레드, I/O 멀티플렉싱, Event select, IOCP)
  1. 파일 송/수신 기법 및 장애 대응
  2. 응용 프로그램 수준 프로토콜 설계, 코드 작성 기법
  3. 비동기 입/출력 원리와 IOCP
  4. UDP 소켓 프로그래밍 기법

선수 지식 및 추천 수강 과정

이 강의를 학습하기 위해서는 아래 강의 커리큘럼에서 다루는 내용에 대한 이해가 필요합니다. 

💾 수강 전 확인해주세요.

  • 실습을 위해 Windows 10 이상 운영체제가 필요합니다. (Linux 및 macOS에서는 실습이 불가능합니다.)
  • 실습에는 Visual Studio 2022 Community 버전을 사용하며, Visual Studio가 실행될 수 있는 수준의 PC 사양이 요구됩니다. (MFC, Windows SDK 포함)
  • 강의에 사용된 장표 PDF 파일과 수업별 예제를 제공합니다. 

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • TCP/IP 소켓 프로그래밍을 배우고 싶은 분

  • Client/Server 구조 프로토콜 설계 기법을 알고 싶은 분

  • 비동기 파일 입/출력을 이해하고 싶은 분

  • 비동기 입/출력이 높은 성능을 낼 수 있는 이유를 알고 싶은 분

  • IOCP 기반 고성능 서버를 개발하고 싶은 분

  • 게임 서버 개발자를 희망하는 분

선수 지식,
필요할까요?

  • 강의 “독하게 되새기는 C 프로그래밍”에 해당하는 내용

  • 강의 “외워서 끝내는 네트워크 핵심이론 - 기초”에 해당하는 내용

널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다.  반갑습니다. ^^

 

커리큘럼

전체

47개 ∙ (9시간 37분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!