군만두의 IT 공부 일지

[스터디3] 네트워크 - 01. 네트워크 본문

학습일지/CS 지식

[스터디3] 네트워크 - 01. 네트워크

mandus 2024. 12. 16. 18:07

목차

     



     

      제목: 면접을 위한 CS 전공지식 노트

      저자: 주홍철

      출판사: 길벗

      가격: 24,000원

     

     

    디자인 패턴, 운영체제데이터베이스,
    자료 구조, 네트워크, 개발자 면접
     

     

     

     

     

    면접 대비를 위해서 친구들과 스터디를 진행하기로 했습니다. 위 책으로 매주 학습한 내용을 정리한 후 모의면접을 진행하려고 합니다. 순서는 우선순위를 정해 2장부터 진행할 것이며, 오늘은 2.2 섹션 위주로 정리하려고 합니다.

    2장 네트워크

    2.1 네트워크의 기초

    • 네트워크: 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합
      • 노드: 서버, 라우터, 스위치 등 네트워크 장치
      • 링크: 유선 또는 무선

    2.1.1 처리량과 지연 시간

    • 처리량(throughput): 링크 내에서 성공적으로 전달된 데이터의 양. 보통 얼만큼의 트래픽을 처리했는지를 나타냄.
      • 단위: bps(bits per second) → 초당 전송 또는 수신되는 비트 수.
      • 트래픽: 특정 시점에 링크 내에 흐르는 데이터의 양
        • 예) 서버에 저장된 파일(문서, 이미지, 동영상 등)을 클라이언트(사용자)가 다운로드할 때 발생되는 데이터의 누적량
      • 많은 트래픽을 처리한다. = 많은 처리량을 가진다.
      • 트래픽이 많아졌다. = 흐르는 데이터가 많아졌다.
      • 처리량이 많아졌다. = 처리되는 트래픽이 많아졌다.
    • 지연 시간(latency): 요청이 처리되는 시간. 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간

    2.1.2 네트워크 토폴로지와 병목 현상

    • 네트워크 토폴로지(network topology): 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태

    1. 트리(tree) 토폴로지: 계층형 토폴로지. 트리 형태로 배치한 네트워크 구성
      • 노드의 추가, 삭제가 쉬우며 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음.
    2. 버스(bus) 토폴로지: 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성
      • 근거리 통신망(LAN)에서 사용함.
      • 장점: 설치 비용이 적고, 신뢰성이 우수하며, 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉬움.
      • 단점: 스푸핑(LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것) 문제가 있음.
    3. 스타(star, 성형) 토폴로지: 중앙에 있는 노드에 모두 연결된 네트워크 구성
      • 장점: 노드를 추가하거나 에러를 탐지하기 쉽고, 패킷의 충돌 발생 가능성이 적음. 어떠한 노드에 장애가 발생해도 쉽게 에러를 발견할 수 있으며, 장애 노드가 중앙 노드가 아닐 경우 다른 노드에 영향을 끼치는 것이 적음.
      • 단점: 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고, 설치 비용이 고가임.
    4. 링형(ring) 토폴로지: 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성
      • 장점: 노드 수가 증가되어도 네트워크상의 손실이 거의 없고, 충돌이 발생되는 가능성이 적고, 노드의 고장 발견을 쉽게 찾을 수 있음.
      • 단점: 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼침.
    5. 메시(mesh) 토폴로지: 망형 토폴로지. 그물망처럼 연결되어 있는 구조
      • 장점: 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크를 계속 사용할 수 있고, 트래픽도 분산 처리가 가능함.
      • 단점: 노드의 추가가 어렵고, 구축 비용과 운용 비용이 고가임.
    • 토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문임.
    • 병목(bottleneck) 현상: 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상

    2.1.3 네트워크 분류

    • 네트워크는 규모를 기반으로 분류할 수 있음.
    • LAN (Local Area Network): 근거리 통신망. 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영됨. 전송 속도가 빠르고 혼잡하지 않음.
    • MAN (Metropolitan Area Network): 대도시 지역 네트워크. 도시 같은 넓은 지역에서 운영됨. 전송 속도는 평균이며 LAN보다는 더 많이 혼잡함.
    • WAN (Wide Area Network): 광역 네트워크. 국가 또는 대륙 같은 더 넓은 지역에서 운영됨. 전송 속도는 낮으며 MAN보다 더 혼잡함.

    2.1.4 네트워크 성능 분석 명령어

    • 애플리케이션 코드상에는 전혀 문제가 없는데, 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생되는 경우는 네트워크 병목 현상일 가능성이 있음.
    • 네트워크 병목 현상의 주된 원인
      • 네트워크 대역폭
      • 네트워크 토폴로지
      • 서버 CPU, 메모리 사용량
      • 비효율적인 네트워크 구성
    • 네트워크 성능 분석에 사용되는 명령어
      • ping(Packet INternet Groper): 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
      • netstat: 접속되어 있는 서비스들의 네트워크 상태를 표시하는 명령어
      • nslookup: DNS에 관련된 내용을 확인하기 위해 쓰는 명령어
      • tracert: 윈도우에서는 tracert이고, 리눅스에서는 traceroute로 구동됨. 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어

    2.2 TCP/IP 4계층 모델

    • 인터넷 프로토콜 스위트(internet protocol suite): 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합
    • 책에서는 TCP/IP(Transmission Control Protocol/Internet Protocol) 4계층 모델을 중심으로 설명함. 이 계층 모델은 네트워크에서 사용되는 통신 프로토콜의 집합으로, 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성됨.

    2.2.1 계층 구조

    • TCP/IP 계층은 네 개의 계층을 가지고 있으며, OSI 7계층과 많이 비교함.

    ▲ TCP/IP 4계층과 OSI 7계층 비교

      1. 애플리케이션(application) 계층: FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층. 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층.
        • FTP: 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜
        • SSH: 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
        • HTTP: World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜
        • SMTP: 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
        • DNS: 도메인 이름과 IP 주소를 매핑해주는 서버
      2. 전송(transport) 계층: 송신자와 수신자를 연결하는 통신 서비스를 제공함. 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있음. 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할. 대표적으로 TCP와 UDP가 있음.
        • TCP: 패킷 사이의 순서를 보장하고, 연결지향 프로토콜을 사용해서 연결을 하여, 신뢰성을 구축해서 수신 여부를 확인함. 가상회선 패킷 교환 방식을 사용함.
          • 가상회선 패킷 교환 방식: 각 패킷에는 가상회선 식별자가 포함되며, 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식
          • 데이터그램 패킷 교환 방식: 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 순서가 다를 수 있는 방식
        • UDP: 순서를 보장하지 않고, 수신 여부를 확인하지 않움. 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용함.
        • TCP 연결 성립 과정
          • TCP는 신뢰성을 확보할 때 3-웨이 핸드셰이크(3-way handshake)라는 작업을 진행함.
          • 클라이언트와 서버가 통신할 때 다음과 같은 세 단계의 과정을 거침.
            1. SYN 단계: 클라이언트는 서버에 클라이언트의 ISN(기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호)을 담아 SYN(연결 요청 플래그)을 보냄.
            2. SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고, 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냄.
            3. ACK 단계: 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK(응답 플래그)를 서버에 보냄.
          • 3-웨이 핸드셰이크 과정 이후 신뢰성이 구축되고 데이터 전송을 시작함. TCP는 이 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며, UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층이라고 함.
        • TCP 연결 해제 과정
          • TCP가 연결을 해제할 때는 4-웨이 핸드셰이크(4-way handshake) 과정이 발생함.
          • 1번: 먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보냄. 클라이언트는 FIN_WAIT_1 상태로 들어가고, 서버의 응답을 기다림.
          • 2번: 서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고, CLOSE_WAIT 상태에 들어감. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어감.
          • 3번: 서버는 ACK를 보내고, 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냄.
          • 4번: 클라이언트는 TIME_WAIT 상태가 되고, 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨. 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고, 클라이언트와 서버의 모든 자원의 연결이 해제됨.
            • 일정 시간 뒤에 닫는 이유
              1. 지연 패킷이 발생할 경우를 대비하기 위함. 패킷이 뒤늦게 도달하고, 이를 처리하지 못한다면 데이터 무결성 문제가 발생함. 따라서 TIME_WAIT(소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태)라는 시간이 필요함.
              2. 두 장치가 연결이 닫혔는지 확인하기 위함. 만약 LAST_ACK 상태에서 닫히게 되면, 다시 새로운 연결을 하려고 할 때 장치는 LAST_ACK로 되어 있기 때문에 접속 오류가 나타남.
      3. 인터넷(internet) 계층: 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층. IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달함. 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있음.
      4. 링크 계층: 네트워크 접근 계층. 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층.
        • 물리 계층과 데이터 링크 계층으로 나누기도 함.
        • 물리 계층: 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
        • 데이터 링크 계층: 이더넷 프레임을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층
      • 계층 간 데이터 송수신 과정
        • HTTP를 통해 웹 서버에 있는 데이터를 요청하면 다음과 같은 과정으로 처리됨.
          1. 애플리케이션 계층에서 전송 계층으로 사용자가 보내는 요청(request) 값 들이 캡슐화 과정을 거쳐 전달됨
          2. 다시 링크 계층을 통해 해당 서버와 통신을 함.
          3. 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터가 전송됨.

    ▲ 계층 간 데이터 송수신 과정

    • 캡슐화 과정: 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고, 해당 계층의 헤더를 삽입하는 과정
      • 애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 세그먼트 또는 데이터그램화되며 TCP(L4) 헤더가 붙여짐. 이후 인터넷 계층으로 가면서 IP(L3) 헤더가 붙여지며 패킷화가 됨. 이후 링크 계층으로 전달되면서 프레임 헤더와 프레임 트레일러가 붙어 프레임화가 됨.
    • 비캡슐화 과정: 하위 계층에서 상위 계층으로 가며, 각 계층의 헤더 부분을 제거하는 과정
      • 캡슐화된 데이터를 받게 되면, 링크 계층에서부터 타고 올라오면서 프레임화된 데이터는 다시 패킷화를 거쳐 세그먼트, 데이터그램화를 거쳐 메시지화가 되는 비캡슐화 과정이 일어남. 최종적으로 사용자에게 애플리케이션의 PDU인 메시지로 전달됨.

    ▲ 캡슐화 및 비캡슐화 과정

    추가) OSI 7계층 모델

     

    • OSI(Open Systems Interconnection) 모델: 네트워킹의 이론적인 모델로, 7개의 계층으로 구성됨.
      1. 물리 계층(Physical Layer): 데이터의 물리적 전송을 담당함. 전선, 무선 전송 매체를 통해 데이터를 비트 형태로 전송함.
      2. 데이터 링크 계층(Data Link Layer): 네트워크 장비 간의 데이터 전송을 확인하고 에러를 수정하는 기능을 제공함. 이 계층은 또한 프레임을 통한 데이터의 포장과 주소 지정을 담당함.
      3. 네트워크 계층(Network Layer): 다양한 네트워크를 거쳐 패킷을 전송하는 기능을 제공함. IP 주소를 이용한 라우팅이 이 계층에서 이루어짐.
      4. 전송 계층(Transport Layer): 네트워크 양 끝단의 사용자 간 신뢰성 있는 데이터 전송을 담당함. TCP 및 UDP 프로토콜이 이 계층에서 작동함.
      5. 세션 계층(Session Layer): 양방향 통신을 관리하고 세션을 생성, 관리, 종료하는 기능을 담당함.
      6. 프레젠테이션 계층(Presentation Layer): 데이터 표현에 대한 독립성을 제공하고 암호화와 같은 변환을 담당함.
      7. 애플리케이션 계층(Application Layer): 최종 사용자와 가장 가까운 계층으로, 사용자가 네트워크 서비스에 접근할 수 있게 하는 응용 프로그램을 제공함. FTP, HTTP와 같은 프로토콜이 이 계층에서 작동함.

    2.2.2 PDU

    • PDU(Protocol Data Unit): 네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위
    • PDU는 제어 관련 정보들이 포함된 헤더, 데이터를 의미하는 페이로드로 구성되어 있음. 계층마다 명칭이 다름.
      • 애플리케이션 계층: 메시지
      • 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
      • 인터넷 계층: 패킷
      • 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)

    2.4 IP 주소

    2.4.1 ARP

    • 컴퓨터와 컴퓨터 간의 통신은 IP 주소 기반으로 통신한다.(△)
      • 정확히 말하면, IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신함.
    • ARP(Address Resolution Protocol): IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜
    • ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환함. 반대로 RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 함.
    • ARP의 주소를 찾는 과정
      • 예) 장치 A가 ARP Request 브로드캐스트를 보내서 IP 주소인 120.70.80.3에 해당하는 MAC 주소를 찾음. 해당 주소에 맞는 장치 B가 ARP Reply 유니캐스트를 통해 MAC 주소를 반환하는 과정을 거쳐 IP 주소에 맞는 MAC 주소를 찾게 됨.
      • 브로드캐스트: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
      • 유니캐스트: 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식

    2.4.2 홉바이홉 통신

    • 홉바이홉(hop by hop) 통신: IP 주소를 통해 통신하는 과정
    • 홉(hop): 건너뛰는 모습을 의미함. 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현함.
    • 수많은 서브네트워크 안에 있는 라우터의 라우팅 테이블 IP를 기반으로 패킷을 전달하고 또 전달해나가며 라우팅을 수행하며 최종 목적지까지 패킷을 전달함.
    • 즉, 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 라우팅(IP 주소를 찾아가는 과정) 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신.
      • 라우팅 테이블(routing table): 송신지에서 수신지까지 도달하기 위해 사용되며, 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트. 라우팅 테이블에는 게이트웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 가지고 있음.
      • 게이트웨이(gateway): 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어.
      • 게이트웨이는 라우팅 테이블을 통해 확인할 수 있으며, 이는 윈도우의 명령 프롬프트에서 netstat -r 명령어를 사용함.

    2.4.3 IP 주소 체계

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

    2.4.4 IP 주소를 이용한 위치 정보

    • IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에, 이를 통해 동 또는 구까지 위치 추적이 가능함.
    • IP 주소를 기반으로 위치를 찾는 사이트: https://mylocation.co.kr/

     

    책을 학습하면서 느낀 점은, 정보처리기사를 준비하면서 배운 내용과 비슷한 부분이 많다는 것이었습니다. 오랜만에 네트워크를 공부하니 익숙한 용어도 낯선 용어도 있어서 공부를 많이 해야 할 것 같습니다.

     

    ⭐참고자료

     

    1) AWS, "OSI 모델이란 무엇인가요?", https://aws.amazon.com/ko/what-is/osi-model

    2) coco3o, "신입 개발자 기술면접 질문 정리 - 네트워크", 2022.02.28, https://dev-coco.tistory.com/161

    이 글은 면접을 위한 CS 전공지식 노트 책을 학습한 내용을 정리한 것입니다.
    Comments