Study/CS 기초

네트워크 - 네트워크 계층

김 도경 2024. 10. 22. 12:46

[2024.10.22] 필수 온라인 강의 Part3 네트워크 CH03 네트워크 계층

- 네트워크간의 통신이 가능하게 해주는 계층
- LAN간의 통신이 가능하게 해주는 계층

IP

- 네트워크계층에서 가장 중요한 프로토콜! -> 네트워크계층 = IP라고 생각하고 학습
- 인터넷 프로토콜의 약자

  • 네트워크 계층
     - 물리 계층과 데이터링크 계층(MAC주소) -> LAN에 국한된 통신
     - LAN을 넘어서기 위한 계층
     - 네트워크 간 통신이 가능한 계층 -> 라우팅 (패킷을 목적지까지 최적의 경로로 찾아가는 과정, 라우터라는 장비사용)
        - IP주소를 바탕으로 네트워크간의 통신이 가능해짐 : 라우팅으로 최적의 경로로 찾아감
     - 단편화가 이루어지는 계층

  • IP주소 사용( 데이터링크 계층의 MAC 주소 있는데 왜 IP주소를 사용하는지?)
     - 도달 경로를 파악하기 어려움 (라우팅 어려움) + 임의의 네트워크에 속한 호스트의 MAC 주소를 기억하기 어려움
         (MAC 주소 ≒ 수취인 개인 정보 (e.g. 주민등록번호) -> 물리 주소 , 주민번호로 택배 보낼 수 없음!)
         (IP 주소 ≒ 수취인 주소 (e.g. 서울특별시 노원구 ...) -> 논리 주소)
          = MAC 주소(수신/발신인) - IP주소(수치인/발신인의 주소)
          - MAC 주소는 일반적으로 변경X,  IP 주소는 쉽게 변경이 가능/한호스트당 여러개 가능

    - MAC 주소(A1:B2:C3:D4:E5:F6, 24bit로 이루어짐)       IP주소(192.168.1.1, IPv4주소)
         - MAC 주소(NIC를 제작할때, 회사에서 만들어줌, 반하드웨어적으로 만들어둠)
         - IP주소(직접 할당 / 자동 할당 (DHCP)) : 비교적 할당이 자유롭다

  • IP의 두 가지 주요 기능
    - IP 공식 문서 : https://datatracker.ietf.org/doc/html/rfc791
    - IP 주소 지정
         - 수신지와 송신지를 특정하기 위해서 IP주소를 주는 것
    - 단편화
         - 패킷을 잘게 쪼개는 것
         - 패킷의 크기를 MTU(Maximum Transmission Unit) 이하로 유지
         - MTU 크기 이하로 단편화된 패킷들은 목적지에서 재조합

  • IP 헤더
    - 오늘날 사용되는 IP버전 : IPv4와 IPv6이 사용된다

  • IPv4 헤더
    - 송신지 IP주소와 목적지 IP 주소 명시
    - 식별자, 플래그, 단편화 오프셋 (단편화에서 주로 사용되는 헤더정보)
          - 식별자: 패킷에 할당된 번호 (재조합 시 사용)
          - 플래그 : 부가 정보 (미사용, Don’t Fragment, More Fragment 비트)
          - 단편화 오프셋: 단편화되기 전 데이터가 얼마나 떨어져 있는가 : 재조합시 몇번째 패킷?
    - TTL, 프로토콜
          - TTL(Time To Live) : 패킷의 수명, 라우터를 거칠 때마다 1감소
              - 무한순환이 생기는 경우, TTL값이 0이 되면 패킷을 폐기하기 위함
          - 프로토콜 : 상위 계층의 프로토콜 : 어떤 프로토콜을 캡슐화했는가 (e.g. TCP==6, UDP==17)

    - IPv4 주소
       (예시) 192.168.0.10 
          - 4바이트 (32비트)로 표현 가능   (-> .을 기준으로 숫자가 4개)
          - 한 옥텟은 0~255 범위의 네 개의 십진수로 표기 (예시) 192 / 168 / ...)
          - 이론적으로 할당 가능한 IPv4 주소 개수 == 2^32개 (IP 주소 부족 문제! : 아직 고갈X)
             - IPv4를 고갈을 막기 위한 여러 방법이 있음(NAT(공인IP->사설IP))


  • IPv6
       - (의외로) 더 단순한 헤더
    - 홉제한 = TTL
    - 목적지/송신지 IP 주소
    - 다음헤더 = 확장헤더, 추가헤더
    - 여러개가 붙을 수 있음. 확장헤더도 또 다른 확장헤더를 가릴 수도 있음

    - IPv6 주소
       (예시) 2001:0230:abcd:ffff:0000:0000:ffff:1111
          - 16바이트 (128비트)로 표현 가능
          - 이론적으로 할당 가능한 IPv4 주소 개수 == 2^128개 ß 사실상 무한
ARP
  • ARP
    - IP 주소를 통해 MAC 주소를 알아내기 위한 프로토콜
    - 동일 네트워크 내의 호스트의 MAC 주소를 알아내기 위한 프로토콜
      - 네트워크세상에서는 IP주소와 MAC주소가 함께 이용이 되는데, 통신에서 IP주소를 우선으로 사용
         (IP는 알지만 MAC은 모르는 경우가 다수)

    - ARP 동작 과정
        - 0. IP는 알지만, MAC은 모름
        - 1. ARP 요청 (브로드캐스트 메세지로 전송)
             - ARP 패킷을 주고 받음
             - 특정 IP 주소를 가진 호스트의 MAC 주소를 알아내기 위해 보내는 브로드캐스트 메세지
             - 해당 호스트의 MAC 주소를 모르기 때문에 브로드캐스트 메세지로 전송
                : 호스트의 MAC주소를 알고 싶기에 공지를 하여 찾는 중이라고 생각
        - 2. ARP 응답
             - ARP 패킷을 주고 받음
             - ARP 요청 메세지에 대한 응답. 자신의 MAC 주소 포함
                : 해당 호스트가 공지를 듣고 자신의 MAC주소를 알려줌
        - ARP 패킷
        - 3. ARP 테이블(ARP 캐시) 갱신
             - ARP 테이블(ARP 캐시): MAC 주소와 IP 주소가 매핑된 표 형태의 데이터
             - 일정 시간이 지나면 삭제
             - ARP 테이블에 추가된 호스트는 브로드캐스트로 ARP 요청 보낼 필요 없음
                 - 브로드캐스트 메세지는 적게 보낼 수록 좋음 : 브로드캐스트메세지는 트래픽 발생
        - 4. IP와 MAC주소를 모두 아는 상태

  • 다른 네트워크에 속한 호스트의 MAC 주소 알아내기
      - 라우터에게 패킷을 전달 -> 라우터에 IP와 MAC주소를 전달
         -> 다른 라우터에게 패킷을 보내고 다시 패킷을 전달함 : 라우터를 통해 전달/전달해서 전달하기
ICMP
  • IP의 한계 (***반드시 기억하기***)
    - 비신뢰성 : 패킷이 목적지까지 제대로 전송한다는 보장이 없는 특성 : IP는 비신뢰성 프로토콜의 일종
                -  최선형 전달(best-effort delivery) : 최선은 다하겠지만, 책임은 지지 않는다.
    - 비연결형 : 호스트 간의 사전 연결 수립이 없는 특성 : 패킷교환 네트워크이다(회선교환네트워크가 아님)

    -> 신뢰성 프로토콜, 연결형 프로토콜을 제공하는 계층은 전송 계층 (TCP 프로토콜)

  • ICMP
    - IP의 비신뢰성과 비연결형 특성을 보완하기 위한 네트워크 계층 프로토콜 : 비서같은 프로토콜
    - IP 패킷의 전송 과정에 대한 피드백 메세지 제공
         - 오류 보고
         - 네트워크 진단 정보
    - ICMP 패킷 : ICMP 메시지는 타입과 코드로 정의
    - ICMP 메시지는 타입과 코드로 정의
         - 오류 보고 : Destination Unreachable(목적지 도달불가) / 시간초과를 알려줌
    - ping 명령어, traceroute(tracert) 메세지 : 도달하는데 사용되는 메세지

    -> IP의 한계를 보완할 뿐 완전히 해결하는 것은 아니다
          - 근본적인 해결은 전송 계층에서 이루어짐
          - RFC에 대한 인터넷 표준 공식 문서 : https://www.rfc-editor.org/rfc/rfc792

 

IP주소
  • IP 주소란 = 네트워크상에서 기본적으로 사용되는, 호스트를 특정지을 수 있는 논리 주소
      - MAC 주소 : 물리주소

  • IP 주소의 구성: 네트워크 주소, 호스트 주소
    - 네트워크 주소 : 네트워크 식별, 호스트주소 : 호스트 식별
  • MAC 주소의 구성: 제조사 번호, 일련 번호 (비트 수 24/24비트 고정)
    - OUI : 제조사 번호, UAA : 일련번호 
    - 각각의 크기가 정확하게 정해져있음!

  • IP 주소의 호스트주소는 유동적이다
    - 클래스풀 주소체계 : class라는 걔념을 바탕으로 네트워크와 호스트를 나누겠다.
    - 호스트부분이 많으면 더 많은 호스트에 할당이 가능!
    - A 클래스 : 0 비트로 시작, 더 많은 호스트를 할당 가능, 첫번째를 0임.
    - B 클래스 : 10 비트로 시작
    - C 클래스 : 110 비트로 시작, 네트워크를 구분을 많이 할 수 있음

    - 호스트 주소가 모두 0인 경우와 1인 경우 : 특정호스트에게 할당이 불가능
       - 호스트주소가 모두 0인 경우 : 네트워크 주소를 나타냄
             (예시) 172.16.0.0
       - 호스트주소가 모두 1인 경우 : 브로드캐스트 주소를 나타냄
             (예시) 172.16.255.255

  •  클래스리스 주소체계
        - 클래스를 사용하지 않는 주소체계
              : 클래스 주소체계는 큰 공간을 할당받아서 사용하기에 주소 공간 낭비가 심함.
        - 클래스풀 주소 체계보다 더 정교히 네트워크를 나누는 방법
        - 오늘날 주로 사용하는 방식
         - 네트워크와 호스트를 구분하기 위해 서브넷 마스크 이용

    - 서브넷 마스크
       - IP 주소 상에서 네트워크 주소는 1, 호스트 주소는 0으로 이루어진 비트열
            - 클래스 A: 255.0.0.0(11111111.00000000.00000000.00000000)
            - 클래스 B: 255.255.0.0(11111111.11111111.00000000.00000000 )
            - 클래스 C: 255.255.255.0(11111111.11111111.11111111.00000000)

       - 서브넷 마스크와 IP 주소의 비트 AND 연산을 하면, 네트워크 주소가 연산됨

    - CIDR 표기
          - 서브넷 마스크 상의 1의 개수를 IP주소/숫자로 표기
         - 192.168.100.103/30

    - 서브넷 마스크 자동 계산 : https://www.calculator.net/ip-subnet-calculator.html

 

 

- IP 주소의 분류

  • 공인 IP 주소와 사설 IP 주소
     - 공인 IP 주소: 인터넷 사용할 때 사용하는 고유한 주소
              - 인터넷에서 사용될때는 반드시 공인 IP를 사용
              - 네이버 같은 포털에 내 ip라고 치면 나옴 : 검색을 할때도 패킷을 주고 받는데, 공인IP주소로 서로 주고 받음
     - 사설 IP 주소: 사설 네트워크 내에서 사용하는 고유하지 않은 주소
              - 일반적으로 LAN에서는 사용하고, 공유기/라우터등을 통해서 데이터가 나갈때 공인IP로 바뀌어서 나감
              - 사설 IP 주소 대역 (10.0.0.0/8    ,  172.16.0.0/12    ,   192.168.0.0/16)
              - ipconfig을 이용하여 사용중인 IP주소를 알 수 있음 : CMD에서 ipconfig넣기

    - NAT : 공인 IP 주소와 사설 IP 주소 간의 변환 기능
        - 공유기라고 생각하면 편함
            - 공유기 : 여러개의 네트워크장비의 기능이 하나로 되어있는 네트워크 장비종합세트(라우터, 나트, 서버로의 기능 등을 모두 함)
        - 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유 가능
        - IP 주소 부족 문제 해결

  • 정적 IP 주소와 동적 IP 주소
      - IP 주소의 할당 방법: 정적 할당과 동적 할당
      - 정적 IP 주소: 정적 할당된 IP 주소 (고정)
           - IP 주소를 직접 일일히 명시적으로 구성이 가능.
      - 동적 IP 주소: 동적 할당된 IP 주소 (유동적) : 자동으로 할당받은 IP주소
            - DHCP : 동적 IP 주소를 할당하기 위한 프로토콜
              - DHCP 서버에 의해 동적으로 IP 주소 할당 (== IP 주소 임대) 
              - 정해진 임대 시간이 끝날 경우 임대 갱신 (자동 수행, 수동 수행)
DHCP Discover : IP주소를 빌려달라고 브로드캐스트메세지를 보내주는 것
DHCP Offer : 할당 IP, 임대기간등을 답변
DHCP Request : 어떤 걸 쓸 것인지 정하여 실제 요청
DHCP Acknowlegement : 할당

 

라우팅

- 네트워크 계층의 목적 : 네트워크간의 통신

  • 라우터
      - 네트워크 계층 장비 , 라우팅을 수행
    - 라우팅: 패킷이 이동할 최적 경로 설정, 해당 경로로 패킷 이동
    - 라우팅 프로토콜: 라우팅을 수행하는 방법


  •    : 라우터와 라우터 간의 패킷 이동 과정
        - 홉 바이 홉 라우팅 : 여러개의 라우터를 깡총깡총 건너듯이 패킷을 전달하면서 최종까지 가는 것
          - 홉을 거쳐가는 라우팅 방식
          - 어떤 라우터를 거쳐야 최적의 경로인지 항상 계산할 수 있어야한다. 문제가 있는 라우터가 있다면, 우회도 해야한다.

  • 라우팅 테이블 (routing table)
      - 특정 목적지까지 도달하기 위한 정보를 명시하는 표와 같은 정보
      - 대표적인 정보: 목적지 주소, 서브넷 마스크, 게이트웨이, 인터페이스, 메트릭
    - 목적지 주소+서브넷 마스크 : 어디로 전달되어야하는지에 대한 정보
    - 게이트 웨이 : 다음에 거치는 라우터/홉
    - 인터페이스 :  이 패킷을 어떤 인터페이스로 내보내야하는지
    - 메트릭스 : 다양한 경로 중 이 경로를 선택했을 때의 비용(낮을수록 좋음)

    - 롱기스트 프리픽스 매치(longest prefix match)
        여러 라우팅 테이블 항목과 일치할 경우 가장 길게 일치하는 항목 선택 후 패킷 전송
        (예시) 192.168.2.20
    - 디폴트 라우트 (default route)
       - 합치되는 경로가 없을 경우 기본으로 내보낼 경로 (0.0.0.0/0)
    - 라우팅 테이블이 만들어지는 방법
        - 정적 라우팅: 수동으로 라우팅 테이블 항목 채워넣기
               - 라우팅의 부하가 적음, 대신 라우터에 문제가 생기면 패킷에 문제가 생김
               - 라우팅 이동경로에 유동성이 없음
        - 동적 라우팅: 자동으로 라우팅 테이블 항목 채워넣기 (라우팅 프로토콜)
                - 경로 우회 가능

         - 라우팅 프로토콜
              - AS 내부 라우팅 프로토콜(IGP): RIP, OSPF
              - AS 외부 라우팅 프로토콜(EGP): BGP
              * AS == 동일한 라우팅 정책으로 운영되는 라우터들의 집단 네트워크

    - AS 번호 사용자 조회(라우터의 집단을 명명) : https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/business/management/asList.jsp

 

 

 

'Study > CS 기초' 카테고리의 다른 글

네트워크 - 응용 계층  (2) 2024.10.22
네트워크 - 전송 계층  (4) 2024.10.22
네트워크 - 네트워크 엑세스 계층  (2) 2024.10.22
네트워크 거시적으로 보기  (6) 2024.10.21
운영체제 - 파일 시스템  (4) 2024.10.21