Thumbnail
BEST
보안 · 네트워크 시스템

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

(5)
14개의 수강평 ∙  992명의 수강생
110,000원

월 22,000원

5개월 할부 시
지식공유자: 널널한 개발자
총 47개 수업 (9시간 37분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

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

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

✍️
이런 걸
배워요!
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분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 들어가기에 앞서
알고 있다고 가정하는 것들 미리보기 11:27 수업의 최종 목표 미리보기 05:12 개발 및 테스트 환경 구축 미리보기 15:33
Win32 작업자 스레드 생성 (예제 포함) 21:16
Win32 작업자 스레드 동기화 (예제 포함) 12:14
섹션 1. TCP 소켓 프로그래밍 입문
소켓의 본질에 대한 이해 미리보기 09:27
TCP 상태 다이어그램과 적절한 상태 전이 (수업자료 포함) 14:36
TCP 에코 서비스 전체 흐름 (인쇄용 강의자료 포함) 11:42
TCP 에코 서버 제작: 서버 접속대기 (예제 포함) 18:17
TCP 에코 서버 제작: 클라이언트 연결 받기 및 통신 13:05
TCP 에코 클라이언트 제작 (예제 포함) 09:33
에코 클라이언트/서버 테스트 및 Wireshark로 확인 18:21
섹션 2. 소켓 옵션과 필수 이론
소켓 입/출력 버퍼 (예제포함) 미리보기 17:06
send()와 recv()는 1:1로 매핑되는가? 14:43
소켓 입/출력 버퍼와 TCP_NODELAY 옵션 (예제포함) 09:02
서버 소켓과 SO_REUSEADDR 옵션 (예제 포함) 17:59
멀티스레드 에코 서버 (예제 포함) 10:06
섹션 3. TCP 채팅 서버 - 기본 이론
멀티스레드 채팅 서버 구조와 이론 12:28
멀티스레드 기반 채팅 서버 (예제 포함) 14:43
멀티스레드 기반 채팅 클라이언트 (예제 포함) 미리보기 09:54
우아하지 않은 비정상 종료 10:42
MFC 채팅 서버와 클라이언트 (예제 포함) 10:27
섹션 4. TCP 채팅 서버 - 성능 개선
I/O 멀티플렉싱 채팅 서버로 개선 - 첫 번째 (예제 포함) 13:41
I/O 멀티플렉싱 채팅 서버로 개선 - 두 번째 05:55
I/O 멀티플렉싱 채팅 서버로 개선 - 세 번째 12:25
Win32 Event select 채팅 서버로 개선 (예제 포함) 08:34
MFC GUI 기반 Async select 채팅 서버 (예제 포함) 08:38
섹션 5. 파일 송/수신
기본 구조에 대한 설명 미리보기 14:18
파일 송신 서버 제작 (예제 포함) 08:54
파일 수신 클라이언트 제작 (예제 포함) 12:13
Win32 API 기반 파일 송/수신 (예제 포함) 11:34
대표적인 TCP 장애 유형과 연결에 대한 정의 27:07
섹션 6. 파일 송/수신과 프로토콜 설계
파일 송/수신 서비스 구조 설계 미리보기 09:08
응용 프로그램 프로토콜 디자인 08:10
프로토콜이 적용된 파일 송신 서버 제작 (예제 포함) 12:51
프로토콜이 적용된 파일 수신 클라이언트 제작 (예제 포함) 08:42
파일 송수신 테스트 09:13
섹션 7. 서버 성능 개선
이벤트 기반 비동기 파일 입/출력 (예제 포함) 미리보기 22:32
Callback 기반 비동기 파일 입/출력 (예제 포함) 23:59
IOCP 모델 19:25
IOCP 기반 채팅 서버 (예제 포함) 21:39
섹션 8. UDP와 브로드캐스트
UDP 프로토콜 특징 미리보기 05:49
UDP 송/수신 (예제 포함) 04:21
UDP 브로드캐스트 송/수신 (예제 포함) 06:54
섹션 9. [부록]
DNS 질의 방법 (예제 포함) 미리보기 05:02
간단한 HTTP, FTP 클라이언트 (예제 포함) 03:32
윈도우에서 어댑터 정보 확인 방법 (예제 포함) 04:34
강의 게시일 : 2023년 02월 15일 (마지막 업데이트일 : 2024년 03월 25일)
수강평 총 14개
수강생분들이 직접 작성하신 수강평입니다.
5
14개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
Seongc좋은ᅵᅵheol Kim thumbnail
5
강사님 수강을 4개째 듣고 있습니다. 강사님 설명도 잘하시고 친철하십니다. 개념을 잡기에는 최고의 강의인거 같습니다. 향후 강사님께서 심화과정도 개설하셨으면 좋겠습니다.
2024-04-18
지식공유자 널널한 개발자
열공모드로 달리시는 군요. 더불어 좋은 평가와 피드백 고맙습니다. 원하시는 심화 과정은 인강대신 다른 형태로 추진해보겠습니다. :)
2024-04-19
jaehyun jo thumbnail
5
TCP/IP 소켓 프로그래밍 책으로 공부하고 있었는데 이해가 안되는 부족한 부분을 채워주시고 팁들을 공유해주셔서 감사합니다.
2024-03-10
지식공유자 널널한 개발자
부족함이 채워졌다는 보람찬 피드백 고맙습니다. 강사로써 큰 기쁨입니다. :)
2024-03-12
GOLD D thumbnail
5
tcp/ip를 잘 알 수 있는 강의, 기회가 되면 소켓 프로그래밍 책을 통해 개념을 면밀히 볼 의향이 생기는 강의. 인프런에서 처음으로 완강했는데, 좋은 강의 제공해주셔서 감사합니다.
2024-01-15
지식공유자 널널한 개발자
생각보다 복잡한 강의인데...완강하셨네요. 대단하십니다! 하시는 일에 이 강의가 조금이라도 도움이 된 것 같아 기쁘네요. 고맙습니다. :)
2024-01-20
hypernagox thumbnail
5
정말 유익합니다. 네트워크 관련 지식이 전무한 상태에서 들어도 별문제가 없었습니다. 다만 운영체제 지식은 필요합니다. 운영체제에 대한 학습이 되어있다면 이해하기 매우 수월합니다.
2023-12-28
지식공유자 널널한 개발자
좋은 평가와 피드백 고맙습니다. 이 수업으로 간단한 서버를 하나 설계하고 만들어보신다면 더 좋은 공부가 될 것 같습니다. 잘 해내시리라 믿습니다. :)
2023-12-28
cjw7823 thumbnail
5
강사님의 다른 기본 강의들을 다 듣고 들으니 화룡점정인 강의네요. 감사합니다!
2024-01-13
지식공유자 널널한 개발자
와우~~! 다른 강의들까지 모두 들으셨군요. 그렇다면 이 강의를 통해 가져가실 수 있는 것이 더 많았을 것 같습니다. 이제 멋진 개발로 성장하시는 일만 남은 것 같습니다. 좋은 평가와 피드백 고맙습니다. :)
2024-01-14