Contents

[Network] 서버로 요청을 보낼 때 일어나는 일

Contents

위 그림은 집에서 와이파이에 접속한 내 컴퓨터가 특정 서버로 요청을 보내는 과정을 그린 그림이다. 위 그림을 토대로, 네트워크를 이용해 통신을 하는 과정에서 DNS / DHCP / NAT / router / gateway / Network Namespace / ISP / OSI 에 대해 알아보고자 합니다.

  1. 컴퓨터가 와이파이에 연결했을 때 일어나는 일

DHCP 로 부터 private IP, subnet mask, default gateway address, DNS 서버 주소등을 제공받습니다.

  • 와이파이에 연결된 컴퓨터는 고유의 ip를 갖게 되는데 이 ip는 외부에서는 알 수 없도록 해야합니다. 그러므로, DHCP 서버는 내부에서 충돌이 일어나지 않을법한 내부 ip를 부여하고 이를 컴퓨터에 할당합니다. 이렇게 함으로써 외부에서 ip를 직접 참조할 수 없기 때문에 보안에 유리합니다. 할당된 내부 ip는 인터넷으로 나가기 위해서 NAT을 통해 인터넷으로 나갈 수 있습니다.

  • 서브넷 마스크를 부여받는 이유는, 내부 ip를 논리적으로 좀 더 세밀하게 나누기 위함입니다. 예를 들어, 어떤 회사에 마케팅팀, 개발팀, 운영팀이 존재할 때, 각각 팀에 ip주소를 구분지어 나눠주고 싶다고 가정해보겠습니다. 네트워크의 기본범위를 192.168.10.0/24 로 설정하고 3개의 서브넷으로 나눠보면 다음과 같습니다.

    1. 마케팅팀 : 192.168.10.00000000 ~ 192.168.10.00111111 (64)

    2. 개발팀 : 192.168.10.01000000 ~ 192.168.10.01111111 (64)

    3. 운영팀 : 192.168.10.10000000 ~ 192.168.10.10111111 (64)

    3개의 서브넷이 구성되었고, 할당된 255개의 ip 중 192.168.19.11000000 ~ 192.168.19.11111111 의 64개 ip는 아직 사용되지 않은 상태입니다. 모든 서브넷에는 255.255.255.192.0 이라는 서브넷마크스가 부여되고, 서브넷마스크를 통해 서브넷이 위치하고 있는 네트워크의 주소를 알 수 있고, 각 서브넷의 broadcast 주소를 알 수 있습니다. broadcast 주소는 서브넷에 포함되어 있는 모든 host에게 요청을 보내는 주소입니다.

  • default gateway 주소를 할당받는 이유는 로컬 네트워크에서 다른 네트워크 (주로 인터넷) 로 가기 위함이다. 주로 라우터나 스위치가 이 역할을 합니다.

위 과정을 통해, 컴퓨터는 인터넷에 연결될 준비가 되었습니다.

  1. 서버로 요청을 보냈을 때 일어나는 일

보통 우리는 ip를 외우고 다니지 않고, google.com, naver.com 같이 도메인 이름을 외우고 그 이름을 주소창에 치게 됩니다. 도메인 이름은 네트워크 상에서 해석될 수 없기 때문에, 이를 ip로 변환해야 하는 과정이 필요합니다. ip로 적절히 변환하기 위해서, 호스트 pc의 hosts 파일을 참조하거나, DNS 서버에서 ip를 반환 받거나, 또는 라우터에 캐시된 정보를 사용하기도 합니다. hosts 파일에 정의한 도메인 이름과, dns서버에서 갖고있는 도메인이름이 중복될 수 있습니다. 이 때는 네트워크 설정에 따라 다르겠지만, 보통은 hosts 파일에서 해당 도메인 읽어 적절한 ip로 변환한 값을 사용합니다.

https://aws.amazon.com/ko/route53/what-is-dns/#:~:text=DNS%EB%8A%94%20%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84%20%EC%9B%B9%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%97%90%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%9D%BC%EC%9A%B0%ED%8C%85%ED%95%A9%EB%8B%88%EA%B9%8C%3F

  1. 요청을 보내고, 라우터로 이동될 때 일어나는 일

브라우저가 HTTP 요청을 생성하는 과정은 응용 계층에서 시작합니다. 이 계층에서, HTTP 헤더와 필요한 경우 페이로드(예: POST 데이터)가 함께 패키징되어 요청을 구성합니다. 그 다음, 전송 계층에서는 이 데이터를 TCP 프로토콜을 사용하여 세그먼트화합니다. 여기서 각 TCP 세그먼트에는 포트 번호와 함께 순서 및 확인 응답 번호가 포함되어 데이터의 정확한 전달을 보장합니다.

네트워크 계층에서는 세그먼트에 IP 헤더가 추가됩니다. 이 헤더에는 소스와 목적지 IP 주소가 포함되어 있으며, 이 정보를 바탕으로 데이터 패킷이 네트워크 내에서 올바른 경로로 라우팅됩니다. 라우터는 라우팅 테이블을 참조하여 최적의 경로를 결정하고, 해당 경로로 패킷을 전달합니다.

데이터 링크 계층에서는 데이터에 MAC 헤더와 프레임 체크 시퀀스(FCS)가 추가되어 프레임을 형성합니다. 이 계층에서의 에러 체크와 프레임 관리는 네트워크의 신뢰성을 높이는 데 기여합니다. 물리 계층에서는 이 프레임이 전기적 신호나 무선 신호로 변환되어 실제 네트워크 매체를 통해 전송됩니다. 이 과정에서 데이터는 비트 스트림으로 인코딩되어 물리적 링크를 통해 이동하게 됩니다.

이렇게 데이터 패킷은 로컬 네트워크에서 라우터를 거쳐 최종 목적지로 전송되는 복잡한 과정을 거치며, 각 OSI 계층은 이 과정에서 중요한 역할을 수행하여 데이터의 원활한 흐름을 보장합니다.

  1. 라우터에서 ISP로 데이터 패킷이 이동하는 과정은 네트워크의 효율적인 연결 및 인터넷 접속을 위해 중요한 단계입니다. 이 과정에서는 여러 네트워크 기술과 프로토콜이 함께 작용하여 패킷이 최종 목적지인 웹 서버나 다른 네트워크 서비스로 올바르게 전달될 수 있도록 합니다.

라우터에서 ISP로의 데이터 이동 과정:

    1. 네트워크 계층 (Layer 3)의 라우팅 라우터는 네트워크 계층에서 작동하며, 내부 네트워크에서 수신한 패킷의 IP 헤더를 분석하여 다음 목적지를 결정합니다. 이 때, 라우터는 자신의 라우팅 테이블을 참조하여 패킷을 어디로 보낼지 결정합니다. 라우팅 테이블에는 다양한 네트워크 경로와 해당 경로를 통해 패킷을 전달할 다음 홉(next hop)의 주소가 포함되어 있습니다. 만약 패킷의 목적지 주소가 외부 네트워크(인터넷)에 속한다면, 라우터는 해당 패킷을 ISP로 전달하기 위해 설정된 기본 게이트웨이(default gateway) 또는 특정 외부 네트워크로의 경로를 사용합니다.
    1. NAT (Network Address Translation) 대부분의 가정이나 소규모 사무실 환경에서는 사설 IP 주소가 사용됩니다. 인터넷에 접속하기 위해서는 이 사설 IP 주소를 공용 IP 주소로 변환해야 하는데, 이 과정을 NAT이라고 합니다. 라우터는 NAT 테이블을 사용하여 내부 IP 주소와 외부 IP 주소 간의 매핑을 관리합니다. 이를 통해 외부 네트워크와의 통신에서 패킷의 출발지와 목적지 주소를 적절히 변환합니다.
  1. ISP 에서 데이터 센터로 이동하는 과정에서 일어나는 일

클라우드 데이터 센터에서의 패킷 처리 및 라우팅은 고도로 구조화된 네트워크와 가상화 기술을 활용합니다. 특히, 네트워크 네임스페이스(Network Namespace)는 클라우드 환경에서 중요한 역할을 하며, 각각의 서비스나 애플리케이션에 독립적인 네트워크 환경을 제공합니다. 이러한 기술은 서버가 서로 다른 네트워크 설정, 정책, 그리고 보안 수준을 갖도록 하여, 멀티테넌시(Multi-tenancy)와 서비스의 격리를 가능하게 합니다.

클라우드 데이터 센터에서의 패킷 처리 및 라우팅

  1. 패킷의 도착 클라우드 데이터 센터의 경계 네트워크 장비(예: 로드 밸런서, 방화벽)를 통해 외부에서 오는 패킷이 처음 처리됩니다. 이 장비들은 초기 보안 검사, 트래픽 분석 및 라우팅 결정을 수행하여 패킷을 적절한 내부 네트워크로 전달합니다.
  2. 네트워크 네임스페이스 사용 클라우드 환경에서 각각의 서버나 서비스는 독립적인 네트워크 네임스페이스를 할당받을 수 있습니다. 네임스페이스는 그 안에 독립된 IP 주소, 라우팅 테이블, 포트, 방화벽 규칙 등을 갖습니다. 네트워크 네임스페이스는 특히 컨테이너화된 환경(예: Docker, Kubernetes)에서 유용하게 사용됩니다. 각 컨테이너 또는 서비스 그룹은 자신만의 네트워크 네임스페이스를 갖고, 서로 다른 네임스페이스의 리소스는 기본적으로 격리되어 있습니다.
  3. 라우팅 및 서비스 발견 클라우드 데이터 센터 내부에서는 서비스 발견 메커니즘이 중요합니다. 예를 들어, Kubernetes와 같은 오케스트레이션 시스템은 서비스 발견을 자동화하여 요청을 받은 서비스의 현재 실행 중인 인스턴스로 트래픽을 정확히 라우팅합니다. 네임스페이스를 사용함으로써, 클라우드 플랫폼은 각 서비스 요청을 해당 서비스 인스턴스가 실행 중인 특정 네임스페이스로 정확히 라우팅할 수 있습니다.
  4. 데이터 및 요청 처리 요청을 받은 서버 또는 컨테이너는 해당 API 요청을 처리합니다. 처리 결과는 다시 클라이언트로 응답되며, 이 과정에서도 네임스페이스의 네트워크 설정에 따라 외부로 나가는 트래픽이 관리됩니다.

위 과정을 거치고, 서버는 요청을 적절히 처리 후, 요청을 호출한 호스트에게 응답을 보내줍니다.