[개정판] 어떻게 네트워크를 공부할 것인가?(네트워크 공부 방법에 대하여)
시작하며
제가 전공 신입생 시절 컴퓨터 공학을 어떻게 공부해야 할지 검색을 하면 홍보성 학원 강의만 나왔습니다. 개발자가 되기 위해서 컴퓨터 공학의 기초 과목이 중요하다고 하는데 어떻게 공부해야할지 막연하게 교보문고에서, 해외 자료를 찾아가면서 공부하였습니다. 학부에서 공부 잘하는 분들은 교수님의 설명을 스펀지처럼 흡수하는 분들이기에 부족한 저로서는 막연하게 부러워하고 있었습니다.
아무도 공부자료, 공부방법에 대해서 알려주지 않아서 4학년이 올라가면서 [컴퓨터 공학] 어떻게 네트워크를 공부할 것인가?(네트워크 공부 방법에 대하여) 글을 작성하였고 그간 2만 명 이상의 분들이 글을 읽어주었습니다. 시간이 지나면서 없어진 자료를 제거하고 새로운 자료를 업로드하여 새롭게 글을 작성합니다.
개발자를 꿈꾸는 꼬꼬마친구, 현업 개발자, 기술면접 준비를 앞둔 취준생 각자의 이루고자 하는 목적으로 네트워크를 공부해보려는 분들에게 이 글이 도움이되었으면 좋겠습니다.
저에 대해서 알 수 있는 글을 참고로 남깁니다!
강의
1. KOCW 이석복(한양대학교)
전형적인 7 Layer에 맞추어서 Top down 방식으로 진행되는 대학교 강의입니다. KOCW의 고질적인 화질문제, 강의자료의 부재의 문제가 전혀 없는 강의입니다. 전형적인 대학교 강의를 찾기를 원하신 분들에게 추천합니다. 강의 교재 및 PPT 또한 대학에서 많이 사용하고 아래에서 소개할 '컴퓨터 네트워킹 하향식 접근' 책을 사용합니다. 다만 HTTP 중심으로 보고 싶은 현업 개발자분들이 보기에는 다소 무게가 있는 강의입니다.
2. 모든 개발자를 위한 HTTP 웹 기본 지식 (인프런, 김영한)
인프런에서 Spring 강의로 유명하신 영한님의 강의입니다. 영한님의 강의를 듣고있으면 개발자들이 무엇을 궁금해하고 원하는지를 정확하게 아신다는 생각을 해봅니다. HTTP 중심으로 공부하고 싶은 네트워크가 가물가물한 개발자들, 비전공자 개발자로서 네트워크 뼈대 지식이 필요한 분들에게 좋은 강의입니다.
3. 와이어샤크 유,무료 강의 (인프런, 보안프로젝트)
패킷 분석을 중심으로 보고 싶은 분들에게 보안프로젝트의 강의를 추천해 드립니다. 'IT 보안을 위한 와이어샤크 네트워크 패킷 분석 실전' 무료 강의만 보더라도 학부 수준에서 다룰 그리고 기초적인 와이어샤크 분석은 끝입니다. 네트워크 보안쪽으로 진로를 희망시는 분들에게 '네트워크 패킷 분석 입문 및 악성코드 샘플 분석' 강의를 추천합니다.
4. Youtube. Network Direction Channel
해외 네트워크 Youtube 채널에서 간결하면서 제일 좋은 설명이라고 봅니다. 영어의 장벽을 넘으면 만날 수 있는 좋은 자료입니다. 애니메이션을 통해서 책으로 이해하기 힘든 부분을 쉽게 이해할 수 있습니다.
5. Udemy. Python Network Programming Complete Masterclass
코딩을 정말정말 잘하는 꼬꼬마 친구들, 군 복학하신 분들, 학교에서 네트워크를 쉽게 쉽게 배운분들이 어떻게 재미있게 네트워크를 공부할까 고민 상담을 많이 받았습니다. 그럴 때마다 다시 네트워크 교과서를 펼치거나 C++ Socket으로 채팅구현을 하지 말고 직접 네트워크에 등장하는 개념을 코드로 연관 지어서 개발해보라고 조언합니다. 직접 구현하려면 자료도 없고 막막한데 Udemy의 Masterclass강의를 참고하면 되겠습니다. 강의를 넘어서 추가로 구현하고 자료로 잘 남긴다면 탄탄한 네트워크 지식은 물론이고 훌륭한 포트폴리오가 될 것입니다.
도서 - 입문
비전공자, 개강 전 예습을 위해서 처음 공부하는 분들에게 추천하는 책입니다. 입문 책은 여러 권 가지고 있을 필요는 없으며 한 권이면 충분하다고 생각합니다. 개인적으로 '모두의 네트워크'를 추천합니다.
1. 하루 3분 네트워크 교실
대학교 1학년이 읽어도 될 정도로 쉽게 쓰여있습니다. 중간 중간에 아재 개그가 단점이라고 하는 분도 있는데 제 기준으론 허용 가능 범위에 있는 아재 개그였습니다.
2. 모두의 네트워크
일본 번역으로 '하루 3분 네트워크 교실'이 있으면 국내 도서인 모두의 네트워크 책이 있습니다. 비슷한 성격으로 배경지식이 없는 비전공자, 대학교 1학년 학생들도 읽을 법한 좋은 책입니다.
쉽다고 무시할 수 없는 것은, 책의 삽화가 직관적이고 이해하기 쉽게 되어있다는 것입니다. 면접을 앞둔 취준생들이 화이트보드로 아키텍처를 설명해야 하는 순간에서 복잡한 개념을 쉽게 풀어나갈 수 있는 좋은 아이디어를 제공할 것입니다.
3. 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e
뜬금없는 해킹 책인가 싶겠지만 오동진 저자님의 '모의해킹' 페이스북 페이지에 가입했다가 알게 된 책입니다. TCP/IP 책 중에서 쉽게 설명하는 숨은 진주 같은 책입니다. 또한, 입문 서적 중 보안에 관한 내용이 쉽지만 튼튼하게 나와 있는 흔치 않은 책입니다.
도서 - 중급
학부생 수준에서 중급 정도의 책을 잘 소화면 충분하지 않을까 생각해봅니다.
1. 컴퓨터 네트워킹 하향식 접근
7 Layer를 Top 부터 Bottom까지 차례로 내려옵니다. 대학에서 네트워크 교재로 많이 이용되고 있으며 튼튼한 설명이 되어있습니다. 제가 대학에서 이 책으로 공부할 시절 교수님께서 Top Down으로 설명하면 뒤에 알게된다. 라고 설명할 때가 많아서 안타깝기에 Bottom Up방식이 더 좋지 않는지 고민이라는 말씀을 하셨습니다. 좌우간 Top Down 설명으론 최고의 책입니다. 처음 공부하는 분들이 보시기엔 양에 질릴 수 있습니다.
2. 후니의 쉽게 쓴 시스코 네트워킹
개정 4판 4쇄를 거치는 대학 교재가 아닌 네트워크 책 중에서 BTS와 같은 책입니다. 개인적으로 3판을 본 적이 있는데 처음 공부하는 사람이 보기에 CISCO 내용과 같이 걸러야 할 내용이 많이 있어서 중급으로 뺐습니다. 이 책을 좋아하는 사람은 엄청 좋아하는 그런 책입니다.
심화
라면 받침대로 전략되지 않도록 주의가 필요합니다!
1. TCP/IP 완벽 가이드
책의 두께대로 상세한 설명이 되어있습니다. 국내 번역된 TCP/IP 책 중에서 제일 훌륭한 책이라고 생각합니다.
네트워크 진로를 생각하는 분, 보안 인이라면 필수로 봐야 하는 책입니다. 보안 인의 경우 어설프게 10년 전 PHP로 해킹 공부할 바에는 본 책을 친구들과 함께 스터디하는 것이 앞으로의 커리어에 도움이 됩니다.
2. HTTP 완벽 가이드
웹 개발자라면 필수로 읽어야 하는 책이라고 생각합니다. 본 책이 09년에 출간되었고 14년 번역되기까지 시간이 오래 걸렸지만 HTTP/0.9부터 HTTP/1.0, HTTP/1.1, HTTP/2.0 까지 다룹니다. 현재 개발자들이 HTTP/0.9 호환성을 신경 쓰지는 않지만, 변화의 흐름을 보면서 어떻게 발전해왔는지 볼 수 있습니다.
웹 개발할 때 구글링에 급급해서 해더에 값을 넣거나 이유를 모르고 사용하던 HTTP 지식이 풍성해질 것입니다.
활용편
1. 윤성우의 열혈 TCP/IP 소켓 프로그래밍
처음 네트워크를 공부할 때 윤성우님의 본 책의 강의를 들었습니다. 소켓 프로그래밍 책에서는 아직 좋은 책입니다.(출간 년도가 무려 09년...!)
그러나 소켓은 네트워크의 수많은 부분 중 하나일 뿐이고 C, C++로 소켓 프로그래밍을 하는게 재미없다고 느끼시면 React, Node.js를 통해서 소켓프로그래밍을 해보는 것을 추천합니다. 잘 만들면 훌륭한 포트폴리오로 사용할 수 있습니다.
제가 잘 만드렀다고 생각하는 Web으로 만든 채팅 사이트 프로젝트를 소개합니다. Link. bonfire.io 이 프로젝트를 만드신 분은 19년 공채로 네이버에 입사하였습니다.
2. 와이어샤크 개론 2/e
국내에 다양한 와이어샤크 책이 있지만, 단순히 사용방법만을 나열하지 않고 풍부한 실습자료가 제공되는 좋은 책입니다. 처음 와이어샤크를 사용하는 사람을 위해서 기초적인 것부터 알려줍니다. 본 책보다 좋은 책을 아직까진 보지 못했습니다.
3. 따라하며 배우는 AWS 네트워크 입문
기초적인 네트워크 지식을 설명하고 AWS 서비스를 사용하는 방법을 알려줍니다. AWS를 처음 사용하는 사람들에게 네트워크 배경지식을 균형 있게 설명하는 책입니다.
책으로 강의로 네트워크를 공부하면서 나왔던 서브넷, VPC, 게이트웨이 등등의 용어를 AWS를 이용하면서 이렇게 녹아있구나를 경험할 수 있습니다.
Study Guid
모든 컴퓨터공학 과목이 그러하겠지만 그중에서 네트워크는 더더욱 방대합니다. 각자 목적에 맞는 공부를 해야 할 것입니다.
공부해서 머리르 채우는 것으로 끝나는것이 아니라 이해한 내용을 바탕으로 주위 친구 혹은 블로그를 이용하여 쉽게 설명하는 지식의 Output과정이 특히 필요합니다. 또한, 공부한 내용을 활용하여 네트워크 개발 여의치 않다면 AWS 서비스를 사용해본다면 머릿속에 갇혀있던 네트워크 지식에 생기를 더할 것입니다. 그저 머리만 채우면 지식은 금방 날아갑니다.
순서도를 만드는것을 좋아하지는 않지만 본 글이 장황하게 길어져서 정리 차원에서 쓰는 각 목적별 공부 순서입니다.
- 개발자 꿈나무
- 모두의 네트워크 → 모든 개발자를 위한 HTTP 웹 기본 지식
- 네트워크를 공부하고 싶은 현업 개발자
- 인프런. 모든 개발자를 위한 HTTP 웹 기본 지식
- 군복학생
- 모두의 네트워크 → Network Direction Channel
- 네트워크 수업을 못듣는 학생
- 모두의 네트워크 → KOCW 이석복(한양대학교) + 컴퓨터 네트워킹 하향식 접근
- 미래의 보안인
- 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e → KOCW 이석복(한양대학교) → 와이어샤크 유,무료 강의 → TCP/IP 완벽 가이드 스터디