이 강의를 통해 응용 프로그램 수준 프로토콜 설계 기법과 IOCP기반 고성능 서버 개발 방법을 배울 수 있습니다!
이런 걸
배워요!
Windows기반 TCP 소켓 프로그래밍 기법
멀티스레드 서버 제작 기법
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 소켓 프로그래밍을 배우고 싶은 분
Client/Server 구조 프로토콜 설계 기법을 알고 싶은 분
비동기 파일 입/출력을 이해하고 싶은 분
비동기 입/출력이 높은 성능을 낼 수 있는 이유를 알고 싶은 분
IOCP 기반 고성능 서버를 개발하고 싶은 분
게임 서버 개발자를 희망하는 분
선수 지식,
필요할까요?
강의 “독하게 되새기는 C 프로그래밍”에 해당하는 내용
강의 “외워서 끝내는 네트워크 핵심이론 - 기초”에 해당하는 내용
수강생 수
28,304
수강평 수
1,366
강의 평점
4.9
강의 수
19
널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다. 반갑습니다. ^^
전체
47개 ∙ (9시간 37분)
가 제공되는 강의입니다.
알고 있다고 가정하는 것들
11:27
수업의 최종 목표
05:12
개발 및 테스트 환경 구축
15:33
소켓의 본질에 대한 이해
09:27
소켓 입/출력 버퍼 (예제포함)
17:06
멀티스레드 에코 서버 (예제 포함)
10:06