개발 아티클 스터디 2일차

윤수빈·2024년 6월 21일
0
post-custom-banner

개발자는 꼭 네트워크를 알아야 할까?

이전 직장에서는 서버가 다양한 형태로 형성되어 있었다.

  • 개발한 제품을 운영하는 서버
  • 회사 인프라를 관리하는 서버
  • 본사와 소통하는 서버

네트워크와 회사를 떠올리면서 가장 기억났던건 Locust 라는 로드테스트 툴을 사용하기 위해 제품의 네트워크에 요청 및 응답을 주려고 했을 때였다.

포트포워딩 등 회사 내 네트워크에 접근하는 방법도 알아야 하고, 요청 URL에 맞는 body 데이터들을 찾느라 다양한 방법으로 시도를 했던 기억이 있는데 네트워크에 대한 지식이 부족했던 나는 열심히 공부하면서 간신히 제품의 웹사이트에 일부에 접근하여 부하테스트를 돌려봤던 기억이 있다.

아마 네트워크에 대해 지식과 이해도가 더 높았으면 비교적 쉽게할 수 있지 않았을까?


1. 컴퓨터 네트워크

오늘 읽었던 네트워크에 관련된 글에서는 자세한 내용은 생략하더라도 적어도 네트워크가 어떻게 형성이 되었고, 어떤 의미를 가지고 있는지 이해하는데에는 충분히 도움되었다.

"두 대 이상의 컴퓨터가 연결되어 통신하는 것"처럼 형식적인 정의를 말하는게 아닌 실제 이해를 돕고자 어떤 방식으로 네트워크가 이루어져 있는지 '컴퓨터 마트'라는 가상의 마트가 확장되는 과정을 설명하면서 쉽게 설명한 글이었다.

한 컴퓨터 마트가 1호점, 2호점, 3호점, ... 그리고 더 나아가 세계 곳곳에 있으려면 어떻게 관리를 할까?
어떻게하면 편하게 관리를 할 수 있을까?

  • 데이터(정보)를 공유하기 위해 만들어진 초기 컴퓨터 네트워크
  • 데이터를 주고받는 형식을 규정하기 위한 프로토콜
  • 연결과 데이터 공유를 간단하게 하기 위해 만들어진 허브
  • 허브에서 단순히 데이터를 공유하는 것이 아닌 데이터의 방향 전환이 가능한 스위치
  • 각각의 위치에서 네트워크를 형성하여 LAN (Local Area Network)
  • 이러한 각 지역의 네트워크 경로를 알려주는 라우터

해당 블로그에선 위에처럼 일반적인 정의로는 이해하기 어려운 개념들도 쉽게 이해할 수 있도록 그림과 함께 설명해주었다.


2. 데이터의 생성, 송신과 수신

데이터를 송신하고 수신하는데에 무엇을 보내고 받는지 알아야하므로 프로토콜은 매우 중요하다.
익히 들었던 TCP/IP 라는 것은 우리가 인터넷에서 사용하는 표준 프로토콜이다.

우리가 구글 크롬 주소창에서 네이버 주소를 입력하고 네이버가 화면에 띄워지기까지 모두 TCP/IP 프로토콜의 약속을 따라 진행된 것이다.

구글과 네이버는 다른 도메인이다.
어떻게 구글 크롬에서 네이버 서버에 연결하고 화면이 띄워질 수 있었을까?

TCP/IP 에서는 데이터가 4계층에 걸쳐서 생성되고 전달하는 과정이 일어난다.

  • 응용->전송->인터넷->이더넷(네트웍 액세스)
  • 이더넷->인터넷->전송->응용

TCP/IP TCP/IP 내부의 계층별 프로토콜 (출처: 참고자료 참고)

그리고 전송하는 과정에서 캡슐화 응답하는 과정에서 역캡슐화가 일어나는데 그래야 다음 단계에서 해당 데이터를 읽을 수 있기 때문이다.

해당 블로그에서는 편지를 보내는 과정을 예시로 보여주며 이해를 돕는다.

구글과 네이버는 서로 다른 도메인(LAN)이기 때문에 구글에서 요청한 데이터를 전송하기 위해서는 더 넓은 네트워크가 필요하다.

이때 필요한 네트워크가 WAN (Wide Area Network) 이다.

TCP/IP LAN과 WAN (출처: 참고자료 참고)


3. TCP/IP 4계층

프로토콜에 대해 조금 더 자세하게 설명하면 데이터를 요청하기 위해선 요청에 필요한 양식에 맞아야 한다.
HTTP 같은 경우도 (start-line, header, body)가 존재한다.

Locust를 다뤘을 때에도 HTTP 요청과 응답을 통해 했었는데 입력하는 기기의 정보(body) 요청하려는 주소 URL 등 다양한 양식이 필요했다.

TCP/IP 계층별 의미

  • 응용(애플리케이션) 계층: 응용프로그램에서 데이터가 생성되는 단계
  • 전송 계층: 응용프로그램이 운영체제 데이터를 보내거나 받는 단계
  • 인터넷 계층: 데이터의 주소를 식별하는 단계
  • 네트워크 계층: 네트워크에 접속하고 나가는 단계

이렇듯 각 단계를 거쳐 송신 수신이 이루어지면 마지막 응용계층이 응답하여 결과 및 보여지는 것이다.

데이터 캡슐화는 운영체제가 진행하고, 운영체제는 응용->전송->인터넷 계층 순으로 단계적 캡슐화 한 후, NIC으로 전달하여 NIC에서는 마지막으로 네트워크로 보내기 전 네트워크 액세스 계층으로 캡슐화한다.

이렇게 캡슐화가 완료된 데이터 이름을 프레임 이라고한다.

이러한 데이터는 물리적인 유/무선 매체를 통해 비트(bit) 단위로 전송하게 되는 것.


4. 마무리

오늘은 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기에 대해 알아보았다.

네트워크를 구성하고 관리하게 된다면 데이터가 어디로 어떻게 전송되고 어떤 정보가 필요한지 개념적으로 이해할 수 있는 시간이었고, 앞으로 TCP/IP 주요 프로토콜과 요즘 웹에서 실제로 어떻게 네트워크가 이루어지는지 더 알아볼 예정이다.

클라이언트에서도 서버와 어떤 데이터를 주고 받는지와 로직이 어떻게 처리되는지 알아야하고, 전문 개발자가 아니더라도 내가 어떤 데이터를 보내는지 정도는 알아야 된다고 생각한다.


참고 자료
1. 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기
2. 주니어 개발자를 위한 엄청 쉬운 TCP/IP 4계층 이야기
3. 택배 배송 과정으로 알아보는 엄청 쉬운 컴퓨터 네트워크
4. 네트웍 프로그래밍의 이해

profile
정의로운 사회운동가
post-custom-banner

0개의 댓글