프로그래밍 일기 — 네트워크

네트워크 기초에 대한 공부를 시작했습니다.

그 동안 소프트웨어 백엔드 개발을 공부하면서, 필연적으로 서버와 클라이언트를 아우르는 네트워크(Network)의 개념을 접하게되었습니다. 사전적 의미로 “여러 사람들이 연결된 관계망“을 뜻하는 이 용어는 인터넷에서는 “하나의 서버에 연결된 여러개의 클라이언트“를 말한다. 현대 사회가 인터넷 중심으로 모든 비즈니스가 움직이는만큼, 네트워크 없이는 그 어떤 업무의 처리도 불가능하다고 할 수 있습니다. 특히 인터넷 서비스의 성능을 끊임없이 개선해야하는 숙명을 가진 소프트웨어 관련 개발 및 기술자들에게는 네트워크는 반드시 이해해야하는 것이라 할 수 있죠.

네트워크에서 가장 기본적인 장비 중 하나가 라우터(Router)라는 것입니다. 이 라우터는 각 클라이언트가 로컬 서버와 공용 인터넷 서버로 연결하게 해주어, 여러 사람들이 각자 로컬 환경에서 작업을 진행하면서도, 실시간으로 필요시 데이터를 공유하거나 커뮤니케이션을 할 수 있도록 해줍니다. 이 장비의 가장 큰 장점은 각 클라이언트마다 각 상황에 맞는 최적의 인터넷 연결의 길(route)을 찾아준다는 것입니다. 이러한 강점들 때문에 오늘날 거의 모든 비즈니스들은 종류는 달라도 라우터를 활용하지 않는 곳이 없을 정도입니다.

라우터 내부에 구현된 로직은 추상화되어 알 수 없지만, 어떻게해서 각 상황마다 최적의 루트를 찾아줄 수 있는지 그 알고리즘이 참 신기하다는 생각이 듭니다. 동시에 그 것을 구현해낸 선배 네트워크 엔지니어들에게 매우 큰 감사함과 경이로움을 느끼게 되었습니다. 우리가 오늘날 아무렇지 않게 쓰는 많은 것들이, 조금 뜯어보면 정말 놀라운 기술의 결정체라는 사실을 다시 한번 상기하게 됩니다.

라우터에 대해 공부하며 정리한 글을 공유합니다.

프로그래밍 일기 — 네트워크 — Part 1

3 Likes