네트워크는 흡사 C언어와 같음.

내용이 산만하고 추상적이여서 처음에만 어렵지.

받아들이고나면 존나 쉬움.


그래서 네트워크의 철학과 기본적인 설계원칙을 이해하면

세세한 지식들이 하나의 큰 줄기로 엮어져서 클리어하게 자연스럽게 암기됨.

동시에 각 네트워크 아키텍쳐들이 왜 굳이 저렇게 만들어졌는지 보이기 시작함. 

구체적으로 어떻게 동작하는지까지 알면 좋지만, 

네트워크를 피지컬하게 다루는 하드웨어쪽이아니라면, 거기까지는 몰라됨. 


그리고 나서 분산시스템 (웹 서비스같은 미들웨어나 클라우드 OS등)마저 공부하면,

우리가 실제 지금 사용하고 있는 서비스들이 어떻게 동작하는지 시스템적으로 보이기 시작함.


개인적으로 한국 여러 대학교 강의들을 잠깐 봤는데,

대부분 네트워크가 어떻게 동작하는지 추상적인 개념과 원리가 구체적으로 학생들에게 와닿을 수있도록 탑다운방식으로 가르침.

(ex. app layer 가르칠땐 밑에 전부 블랙박스로 가정.

다 가르친 후에 블랙박스 하나 열어서 TCP/UDP가르침. 그 밑은 전부 블랙박스 ..)

이런 식으로 양파껍질벗기듯이 배우는데. 

이런 방식으로 공부하는 것은 처음 배울때 추천하긴하지만

어느정도 궤도에 돌아서면 펀더멘탈적으로 시스템적으로 공부할 필요가 있음.

개념이나 작동 원리, 이런 피상적인 지식들이 아니라, 그 의미를 이해할 필요가 있음.

근데 찾아보면 외국 대학 강의에 많더라. 


그리고 간단하게 커널 만들어서,

그 위에 각종 프로토콜 소프트웨어들을 직접 간단하게 기능적으로만 구현해보는 방식을 추천함.



정리하면

1. 탑다운방식으로 네트워크 공부

2. 이렇게 겉핥기식으로 공부한 다음, 외국 대학강의들을 참고해서 네트워크의 철학과 설계 원칙을 이해. 

3. 그 다음 바텀업 방식으로 적당히 세세하게 공부

4. 프로토콜 소프트웨어를 간단하게 구현 (시간 없으면 TCP/IP -Forouzan 책 참조해서 구현 방법만 간단하게 공부)

5. 분산시스템(미들웨어, 클라우드 등등) 공부