\(@^0^@)/

[BOOK] 네트워크 기기, IP 주소, HTTP 본문

BOOKS/면접을 위한 CS 전공지식 노트

[BOOK] 네트워크 기기, IP 주소, HTTP

minjuuu 2023. 4. 25. 22:40
728x90

네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다.

  • 네트워크 기기의 처리 범위
    • 네트워크 기기 계층별 처리 범위
      • 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. 
      • 애플리케이션 계층 : L7 스위치
      • 인터넷 계층 : 라우터, L3 스위치
      • 데이터 링크 계층 : L2 스위치, 브리지
      • 물리 계층 : NIC, 리피터, AP

  • 애플리케이션 계층을 처리하는 기기
    • 스위치 : 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비
    • L7 스위치*
      • L7 스위치는 로드밸런서(Load Balancer)라고도 한다.
      • 서버의 부하를 분산하는 기기
      • 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 한다
      • 시스템이 처리할 수 있는 트래픽 증가를 목표로 한다
      • IP, 포트 외에도 URL, HTTP 헤더, 서버, 캐시, 쿠키 등을 기반으로 트래픽을 분산한다.
      • 바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능을 가진다.
      • 응용 프로그램 수준의 트래픽 모니터링도 가능하다.
    • L4 스위치
      • L7 스위치뿐만 아니라 L4 스위치도 로드밸런서이다.
      • L4 스위치는 전송 계층을 처리하는 기기
      • 스트리밍 관련 서비스에서는 사용할 수 없다.
      • 메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로 트래픽을 분산한다.
    • 클라우드 서비스(AWS 등)에서의 로드밸런서
      • L7 스위치를 이용한 로드밸런싱은 ALB(Application Load Balancer) 컴포넌트
      • L4 스위치를 이용한 로드밸런싱은 NLB(Network Load Balancer) 컴포넌트
    • 헬스체크(health check)
      • 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것.
      • L4 스위치 또는 L7 스위치 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판별한다
      • TCP, HTTP 등 다양한 방법으로 요청을 보낸다
    • 로드밸런서를 이용한 서버 이중화
      • 로드밸런서는 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다.
      • 2대 이상의 서버가 필수인 이유 :
        에러가 발생하여 서버 1대가 종료되더라도 서비스는 안정적으로 운용되어야 하기 때문

L7 스위치, 로드밸런싱


  • 인터넷 계층을 처리하는 기기
    • 라우터(router)*
      • 여러 개의 네트워크를 연결, 분할, 구분시켜 주는 역할
      • 라우팅을 하는 장비
      • 라우팅 : 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩
      • 소프트웨어 기반의 라우팅과 하드웨어 기반의 라우팅을 하는 것으로 나눠진다.
    • L3 스위치
      • L2 스위치의 기능과 라우팅 기능을 갖춘 장비
      • L3 스위치를 라우터라고 해도 무방하다.
      • 하드웨어 기반의 라우팅을 담당하는 장치.

라우터


  • 데이터 링크 계층을 처리하는 기기
    • L2 스위치
      • 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리
      • 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당
      • IP 주소를 이해하지 못해 IP 주소를 기반으로 라우팅은 불가능하며
        단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다.
    • 브리지(bridge)
      • 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
      • 포트와 포트 사이의 다리 역할을 하며, 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리.
      • 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 '하나의' 통신망을 구축할 때 쓰인다.

브리지


  • 물리 계층을 처리하는 기기
    • NIC(Nextwork Interface Card)
      • 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
      • 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
    • 리피터(repeater)*
      • 들어오는 약해진 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치
      • 이를 통해 패킷이 더 멀리 갈 수 있다.
      • 광케이블이 보급됨에 따라 현재는 잘 쓰이지 않는 장치
    • AP(Access Point)*
      • 패킷을 복사하는 기기
      • 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술(와이파이 등)을 사용하여 무선 네트워크 연결을 할 수 있다.

리피터
AP


  • ARP(Address Resolution Protocol)
    • IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜
    • 컴퓨터와 컴퓨터 간의 통신은 흔히들 IP 주소 기반으로 통신한다고 알고 있지만,
      정확히 말하면 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신한다.
    • ARP*를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다.
      • RARP*를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 한다.

ARP vs RARP


  • 홉바이홉 통신*
    • IP 주소를 통해 통신하는 과정
    • 홉(hop) : 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것
    • 즉, 통신 장치에 있는 '라우팅 테이블'의 IP를 통해 시작 주소부터 시작하여
      다음 IP로 계속해서 이동하는 '라우팅'과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신 
    • 라우팅 테이블(routing table)
      • 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법들이 들어 있는 리스트 
    • 게이트웨이(gateway)
      • 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어
      • 사용자는 인터넷에 접속하기 위해 수많은 톨게이트인 게이트웨이를 거쳐야 하며
        게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해 주는 역할을 한다.

홉바이홉 통신


  • IP 주소 체계
    • IP 주소는 IPv4와 IPv6로 나뉜다.
      • IPv4 : 32비트를 8비트 단위로 점을 찍어 표기
        ex) 123.45.67.89
      • IPv6 : 64비트를 16비트 단위로 점을 찍어 표기
        ex) 2001:db8::ff00:42:8329
      • 추세는 IPv6로 가고 있지만, 현재 가장 많이 쓰이는 주소 체계는 IPv4
    • 클래스 기반 할당 방식(classful network addressing)
      • 처음에는 A, B, C, D, E 다섯 개의 클래스로 구분하는 클래스 기반 할당 방식을 사용.
      • 앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소.
      • 클래스 A, B, C는 일대일 통신 클래스 D는 멀티캐스트 통신, 클래스 E는 예비용으로 사용됨.
      • 네트워크의 첫 번째 주소는 네트워크 주소로 사용되고,
        가장 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용됨.
      • 단점 : 사용하는 주소보다 버리는 주소가 많다.
        해결방안으로 DHCP와 IPv6, NAT가 나옴.
    • DHCP(Dynamic Host Configuration Protocol)
      • IP주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
      • 네트워크 장치의 IP주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다.
      • 많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며,
        이를 통해 대부분의 가정용 네트워크에서 IP 주소를 할당한다.
    • NAT(Network Address Translation)
      •  패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법.
      • IPv4 주소 체계만으로는 많은 주소들을 모두 감당하지 못하는 단점이 있었는데,
        NAT로 공인 IP와 사설 IP로 나눠서 많은 주소를 처리한다.
      • NAT를 가능하게 하는 소프트웨어는 ICS, RRAS, Netfilter.
      • 공유기와 NAT
        • 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함
        • 인터넷 공유기에 NAT 기능이 탑재되어 있을 경우,
          인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용할 수 있다.
      • NAT를 이용한 보안
        • 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다.
      • NAT의 단점
        • 여러 명이 동시에 인터넷을 접속하게 되므로 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다.

네트워크 주소와 브로드캐스트용 주소


  • IP 주소를 이용한 위치 정보
    • IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에
      이를 통해 동 또는 구까지 위치 추적이 가능하다.

  • HTTP
    • 애플리케이션 계층으로, 웹 서비스 통신에 사용된다.
  • HTTP/1.0
    • RTT 증가 
      • HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었는데,
        이는 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문
        RTT가 증가*하는 단점이 있다.
        • RTT : 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간
    • RTT의 증가를 해결하기 위한 방법
      • RTT 증가할 경우 :
        서버에 부담이 많이 가고, 사용자 응답 시간이 길어진다.
      • 해결 방법 :
        이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩이 있다.
      • 이미지 스플리팅
        • 많은 이미지를 다운로드하게 되면 과부하가 걸린다.
        • 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드하고,
          이를 기반으로 background-image의 position을 이용하여 이미지를 표기하는 방법
      • 코드 압축
        • 코드를 압축해서 개행 문자를 최소화한다.
        • 빈칸을 없애서 코드의 크기를 최소화한다.
      • 이미지 Base 64
        • 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법.
        • 장점 : 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없어진다.
        • 단점 : Base64 문자열로 변환할 경우 37% 정도 크기가 더 커진다.

RTT 증가


  • HTTP/1.1
    • HTTP/1.0에서 발전한 것
    • 매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있도록 한다.
      • HTTP/1.0에서도 keep-alive가 있었지만 표준화되어 있지 않았고,
        HTTP/1.1부터 표준화되어 기본 옵션으로 설정되었다.
    • HTTP/1.1*은 한 번 TCP 3-웨이 핸드셰이크가 발생하면 그다음부터 발생하지 않는다.
    • 단점 :문서 안에 포함된 다수의 리소스(이미지, css 파일, script 파일)를 처리하려면
      요청할 리소스 개수에 비례해서 대기 시간이 길어진다.
    • HOL(Head Of Line) Blocking
      • 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
      • 파일을 다운로드할 때 순차적으로 잘 받아지다가 앞의 파일이 느리게 받아진다면,
        그 뒤에 있는 것들이 대기하게 되며 다운로드가 지연되는 상태.
    • 무거운 헤더구조
      • HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무겁다.

HTTP/1.0 vs HTTP/1.1


  • HTTP/2
    • HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있다.
    • 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜 
    • 멀티플렉싱
      • 여러 개의 스트림을 사용하여 송수신하는 것.
      • 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작할 수 있다.
        • 스트림(stream) : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
      • 병렬적인 스트림*들을 통해 데이터를 서빙.
        • 애플리케이션에서 받아온 메시지를 독립된 프레임으로 조각내어 서로 송수신한 이후 다시 조립하여 데이터를 주고받는다.
      • 단일 연결*을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다.
        • HTTP/1.x에서 발생하는 문제일 HOL Blocking을 해결할 수 있다.
    • 헤더 압축
      • HTTP/1.x에 있던 큰 헤더라는 문제를
        HTTP/2에서 허프만 코딩 압축 알고리즘을 사용하여 헤더를 압축해서 해결. 
      • 허프만 코딩(huffman coding)
        • 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현,
          빈도가 낮은 정보는 비트 수를 많이 사용해서 표현하여 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
    • 서버 푸시*
      • HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운로드할 수 있었다면,
        HTTP/2는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다.

멀티 플렉싱 - 병렬적인 스트림
멀티 플렉싱 - 단일 연결
서버 푸시


  • HTTPS
    • 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청
    • 이를 통해 '통신을 암호화' 한다.
    • HTTP/2는 HTTPS 위에서 동작한다.
    • SSL(Secure Socket Layer)/TLS(Transport Layer Security Protocol)
      • SSL/TLS은 전송 계층에서 보안을 제공하는 프로토콜
      • 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제삼자가 메시지를 도청하거나 변조하지 못하도록 한다.
        • 공격자가 서버인 척하며 사용자 정보를 가로채는 네트워크 상의 '인터셉터'를 방지할 수 있다.
        •  보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
      • 보안 세션
        • 보안이 시작되고 끝나는 동안 유지되는 세션
        • SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유한다.
          • 세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간
            즉, 사용자는 일정 시간 동안 응용 프로그램, 자원 등을 사용할 수 있다.
        • 클라이언트와 서버가 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는
          단 한 번의 1-RTT가 생긴 후 데이터를 송수신한다.
        • 클라이언트에서 사이퍼 슈트를 서버에 전달해서 암호화 알고리즘 리스트를 제공할 수 있는지 확인한다.
           제공할 수 있다면 서버에서 클라이언트로 인증서를 보내는 인증 메커니즘이 시작되고,
          이후 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작된다.
          • 사이퍼 슈트(cypher suites) : 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약
          • AEAD 사이퍼 모드(Authenticated Encryption with Associated Data) :데이터 암호화 알고리즘
          • 암호화 알고리즘
            • 디피-헬만 키 교환 암호화 알고리즘 : 암호키를 교환하는 하나의 방법
          • 해싱 알고리즘 :데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘 
            • SHA-256 알고리즘 : 해시 함수의 결괏값이 256비트인 알고리즘.
              비트 코인을 비롯한 많은 블록체인 시스템에서 사용
            • 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
      • 인증 메커니즘
        • 인증 메커니즘은 CA에서 발급한 인증서를 기반으로 이루어진다.
        • CA에서 발급한 인증서는 안전한 연결을 시작하는 데 있어 필요한 '공개키'를 클라이언트에게 제공하고,
          사용자가 접속한 '서버가 신뢰'할 수 있는 서버임을 보장한다.
        • CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만 참여할 수 있다.
          ex) Comodo, GoDaddy, GlobalSign, Amazon 
      • SEO(Search Engine Optimization)에도 도움이 되는 HTTPS
        • SEO : 검색엔진 최적화
          • 사용자들이 구글, 네이버 같은 검색엔진으로 웹 사이트를 검색했을 때 그 결과를 페이지 상단에 노출시켜 많은 사람이 볼 수 있도록 최적화하는 방법
          • 구글이 사이트 내 모든 요소가 동일하다면 HTTPS 서비스를 하는 사이트가 그렇지 않은 사이트보다 SEO 순위가 높다고 밝힘.
        • 메타 설정
        • 페이지 속도 개선
        • 사이트맵 관리
    • HTTPS 구축 방법
      1.  직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스를 구축
      2. 서버 앞단의 HTTPS를 제공하는 로드밸런서 구축
      3. 서버 앞단에 HTTPS를 제공하는 CDN 구축

  • HTTP/3
    • TCP 위에서 돌아가는 HTTP/2와는 달리
      HTTP/3은 QUIC라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반*이다.
    • HTTP/2에서 장점이었던 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점이 있다.
    • 초기 연결 설정 시 지연 시간 감소*
      • QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3-웨이 핸드셰이크 과정을 거치지 않아도 된다.
        • QUIC은 첫 연결 설정에 1-RTT만 소요된다.
        • 클라이언트가 서버에 어떤 신호를 한 번 주고, 서버도 거기에 응답하기만 하면 바로 본 통신을 시작할 수 있다.
        • QUIC은 순방향 오류 수정 메커니즘(FEC, Forward Error Correction)이 적용되었다.
          • 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식
          • 열악한 네트워크 환경에서도 낮은 패킷 손실률을 자랑한다.

HTTP/2 vs HTTP/3
QUIC를 이용한 HTTPS


네트워크 챕터를 두 번에 나눠서 포스팅하였는데, 첫 번째에 공부했던 것보다 지금이 더 수월하게 읽혔다.
아무래도 단어들이 눈에 좀 익어서 그렇지 않을까?
단 한 번 보고서 외울 수도, 이해할 수도 없는 부분이라고 생각 되기에 무리하지 않고, '네트워크가 이렇게 구축되는구나~' 하면서 자연스럽게 넘어가려 한다.
꾸준하게 3 - 4 회독하다 보면 자연스럽게 흐름이 파악될 것 같다!


출처 : 면접을 위한 CS 전공지식 노트

728x90