우리가 스마트폰이나 데스크톱을 활용해 인터넷을 이용하고, 주변의 다른 장치와 정보를 주고받아 볼 수 있는 건 컴퓨터 네트워크가 있기에 가능한 일입니다. 이처럼 컴퓨터 네트워크는 우리 일상을 지탱하는 주요 기반 기술입니다. 

 

그렇다면 컴퓨터 네트워크란 무엇일까요? 우리가 일상적으로 사용하는 데스크톱, 노트북, 스마트폰은 대부분 주변 장치와 유무선으로 연결되어 정보를 주고받을 수 있습니다. 그렇게 연결된 장치 또한 또 다른 주변 장치와 연결되어 정보를 주고받을 수 있지요. 이렇게 여러 개의 장치가 마치 그물처럼 서로 연결되어 정보를 주고받을 수 있는 통신망을 컴퓨터 네트워크 computer network(이하 네트워크)라고 합니다.

 

 

컴퓨터 네트워크란

 

 

 

✅네트워크의 네트워크, 인터넷

여러 장치들이 네트워크를 통해 서로 연결되면 주변의 장치하고만 정보를 주고받는 것이 아니라, 네트워크와 연결된 지구 반대편에 있는 장치와도 정보를 주고받을 수 있습니다. 이를 가능하게 하는 기술이 바로 인터넷입니다. 이처럼 인터넷 internet이란 여러 네트워크를 연결한 ‘네트워크의 네트워크’를 의미합니다.

 

네트워크의 네트워크_인터넷

 

우리가 사용하는 데스크톱이나 노트북에서 실행 가능한 프로그램 중 인터넷 연결 없이도 온전히 이용 가능한 프로그램이 얼마나 되는지 생각해 본 적 있으신가요? 계산기, 시계, 메모장 등 인터넷 연결 없이 사용할 수 있는 프로그램도 있지만, 웹 브라우저, 메일, 온라인 게임 등 인터넷 연결 없이는 사용하기 어려운 프로그램들이 더 많습니다.

스마트폰도 마찬가지입니다. 지금 스마트폰에 설치된 앱 app; application 중에서 인터넷 연결이 필요한 앱과 그렇지 않은 앱을 세어 보세요. 일반적으로 전자가 후자에 비해 더 많을 것입니다. 이렇듯 우리가 일상적으로 실행하는 많은 프로그램들은 하나의 장치 안에서 실행되기보다는 네트워크를 통해 다른 장치와 상호 작용하며 실행되는 경우가 많습니다.

그럼 이제 프로그램을 개발하는 개발자 입장에서 생각해 볼게요. 프로그램이 네트워크를 통해 다른 장치와 상호 작용하며 실행되는 경우가 많다는 것은 그만큼 개발자가 네트워크를 이용하는 프로그램, 즉 다른 장치와 상호 작용하며 실행되는 프로그램을 개발하는 경우가 많다는 것을 의미합니다. 개발 직군이 네트워크를 제대로 이해해야 하는 것도 바로 이러한 이유 때문입니다.

 

 

 

✅개발자가 컴퓨터 네트워크를 알아야 하는 이유

개발자가 네트워크를 이해하면 구체적으로 어떤 점에서 유리할까요?

개발자의 업무는 크게 두 종류로 나뉩니다. 하나는 프로그램을 만드는 업무, 다른 하나는 만들어진 프로그램을 유지 보수하는 업무입니다. 네트워크 지식은 두 가지 업무에 모두 도움을 줄 수 있습니다.

 

 

✔️프로그램을 만드는 업무에서 네트워크 지식을 활용하는 경우

먼저 프로그램을 만드는 업무에서는 어떤 경우에 네트워크 지식이 활용될까요? 프로그래밍 언어나 웹 프레임워크 혹은 라이브러리를 사용할 때 네트워크에 대한 배경지식이 있어야만 활용할 수 있는 기능들이 있습니다. 예를 들어서 TCP/UDP와 같은 네트워크에 대한 지식이 없다면 다음과 같은 스프링 프레임워크의 기능을 제대로 이해하고 활용하기 어렵습니다.

예를 들어서 TCP/UDP와 같은 네트워크에 대한 지식이 없다면 다음과 같은 스프링 프레임워크의 기능을 제대로 이해하고 활용하기 어렵습니다.

 

[스프링(Spring) 프레임워크 문서 예시]

스프링(Spring) 프레임워크 문서 예시

 

 

HTTP와 쿠키에 대한 이해가 없어도 다음과 같은 기능을 활용하기 어렵습니다.

[파이썬(Python) 문서 예시]

파이썬(Python) 문서 예시

 

열심히 개발한 웹사이트를 사용자에게 선보이기 위해 배포할 때도 DNS, HTTP/HTTPS, 포트 번호 등 다양한 네트워크 배경지식들이 필요합니다. 또 프로그램의 안전성과 안정성을 높이고 싶을 때도 네트워크 지식은 유용하게 활용됩니다.

 

 

✔️프로그램을 유지 보수하는 업무에서 네트워크 지식을 활용하는 경우

프로그램을 유지 보수하는 업무에서도 마찬가지입니다. 사소하게는 갑자기 인터넷 연결이 안 되는 문제부터, 크게는 아래의 화면처럼 잘 동작하던 웹 서버가 동작하지 않는 문제까지, 네트워크 지식은 문제 발생 시 해결의 큰 실마리가 됩니다.

 

[웹 서버 관련 404 에러]

웹 서버 관련 404 에러

 

프로그램을 유지 보수할 때 자주 사용하는 도구나 명령어 중에는 네트워크 지식이 있어야만 이해할 수 있는 것들이 많습니다. 다음은 그 예시입니다. 네트워크에 대한 지식 없이는 이를 온전히 이해할 수도, 더 나아가 유지 보수를 하기도 어렵겠죠?

 

[공유기 설정 화면 예시]

공유기 설정 화면 예시

 

 

많은 기업이 채용 공고에서 네트워크 지식을 요구하거나 각종 기술 면접을 통해 네트워크에 대한 지식을 검증하는 것도 이러한 이유 때문입니다.

 

[AWS 채용 공고]

aws 채용 공고

 

[카카오 채용 공고]

카카오 채용 공고

 

다음은 실제 출제되었던 네트워크 관련 기술 면접 문항의 예시입니다. 마음 속으로 세 가지 질문에 답변을 해 보세요.

① DNS의 정의와 동작 과정에 관해 설명하세요.
② TCP와 UDP의 차이는 무엇인가요?
③ HTTP와 HTTPS의 차이는 무엇인가요?

 

 

정리해보면,

  • 컴퓨터 네트워크란 여러 장치가 연결되어 정보를 주고받을 수 있는 통신망을 의미합니다. 많은 프로그램이 네트워크를 통해 다른 장치와 상호 작용하며 실행됩니다.
  • 인터넷은 여러 네트워크를 연결한 ‘네트워크의 네트워크’를 의미합니다.

 

 

 


혼자 공부하는 네트워크 평면 표지

컴퓨터 네트워크는 백엔드, 프런트엔드, 앱 개발 등 현재 국내 대다수 개발 분야와 직·간접적으로 연관되어 있습니다. 너무 쉽거나 어렵지 않도록 다수의 네트워크 전공 서적들을 면밀히 분석하고, 방대한 컴퓨터 네트워크 이론 중에서도 핵심만 담아 입문을 돕는 적정 난이도로 구성했습니다.

혼자서도 쉽게 네트워크에 입문하고 싶다면, 전공의 문턱을 넘기 위한 전공 요약서 <혼자 공부하는 네트워크>를 펼쳐보세요!

👀 도서 자세히 보기
✍️ 유튜브 강의
🙋 강민철 저자님께 질문하기