[네트워크] 7장 네트워크 계층

이효린·2023년 4월 12일
0

Network

목록 보기
5/9
post-thumbnail

7장 네트워크 계층

7.1 네트워크 계층 서비스

  • 네트워크 계층 서비스에는 3가지가 있다.
    • 패킷화
    • 흐름제어, 오류제어, 혼잡제어
    • 포워딩과 라우팅

7.1.1 패킷화

  • 네트워크 층의 첫 번째 의무는 패킷화이다.

    • 출발지(source)에서 네트워크 계층 패킷에서 유료부하(payload)를 캡슐화한다.
    • 목적지(destination)에서 네트워크 계층 패킷으로부터 유료 부하를 역캡슐화한다.

7.1.2 오류제어

  • 오류제어는 네트워크층에서 구현될 수 있지만 인터넷의 네트워크 설계자는 네트워크층에서 전달되는 데이터에 대해 오류 제어 문제를 무시한다.
  • 네트워크층의 패킷이 각 라우터에서 단편화되어있기 때문에 네트워크 계층에서 오류검사는 비효율적이 때문이다.

7.1.3 흐름제어

  • 소스가 수신자의 능력을 초과하지 않고 보낼 수 있는 데이터의 양을 조절한다.
  • 송신 컴퓨터의 상위 계층이 수신 컴퓨터의 상위 계층이 소비할 수 있는 것보다 더 빠르게 데이터를 생성하면 수신자의 능력을 초과하는데이터를 수신하게 된다.
  • 데이터 흐름을 제어하기 위해 수신자는 발신자에게 데이터가 너무 많다는 것을 알리기 위해 피드백을 보낸다.

7.1.4 혼잡제어

  • 인터넷에 너무 많은 데이터그램이 존재하는 상황에서 네트워크 계층의 혼잡이 발생한다.
  • 송신 컴퓨터에서 보낸 데이터그램 수가 네트워크 또는 라우터의 용량을 초과하면 혼잡이 발생할 수 있다.

7.1.5 인터넷 서비스 품질

  • 인터넷이 멀티미디어 통신 (특히 오디오, 비디오의 실시간 통신)과 같은 새로운 애플리케이션을 허용함에 따라 통신 서비스 품질(Qos, Quality of Sevice)이 더욱 중요해지고있다.
  • 인터넷은 이러한 응용 프로그램을 지원하기 위해 더 나은 서비스 품질을 제공함으로써 성장했다.
  • 그러나 네트워크층은 변경하지 않고, Qos 서비스의 대부분 상위 계층에서 구현된다.

7.1.6 보안

  • 인터넷이 처음 설계되었을 때 보안은 대학에서 연구 활동을 위해 소수의 사용자가 사용했기 때문에 문제가 되지 않았다.
  • 네트워크층은 보안 조항업싱 설계되었지만 오늘날은 비연결형 네트워크층에 대한 보안을 제공하기 위해 비연결형 서비스를 연결형 서비스로 변경하는또 다른 가상수준이 필요하다.

7.1.7 라우팅과 포워딩

  • 패킷이 들어왔을 때, 목적지까지 최적의 경로를 찾아 패킷을 보내주는 역할을 한다.

  • 크게 3가지 프로세스가 있다.

    1. 라우팅 프로세스

      라우팅 프로토콜이란 라우터와 라우터 사이의 정보를 주고받는 것이다.

      RIP, OSPF, BGP, IS-IS 등의 라우팅 프로토콜을 동작시키는 프로세스이다.

      이러한 라우팅 프로토콜을 라우터끼리 주고받으면서 라우팅 정보를 주고받는다.

      패킷 전송 결정을 위해 라우팅 테이블 정보 요청을 하는 프로세스이다.

    2. 포워딩 프로세스

  • 라우터는 입력포트와 출력포트들 간에 연결을 제공하는 스위치이다.

    • 전기 스위치는 입력과 출력을 연결시켜 전기를 흐르게 한다.
  • 라우터의 2가지 입출력 방식

    • 데이터그램 방식
    • 가상회선 방식

7.2 패킷 스위칭

7.2.1 데이터그램 방식 : 비연결형

  • 인터넷을 처음 만들 때, 네트워크층의 간소화를 위해 모든 패킷을독립적으로 처리하는 비연결형 서비스(Connectionless Service)를 제공하도록 설계되었다.
  • Source로부터 Destination까지 data를 전달하는데, 이 data의 길이가 길다면 자른형태 (패킷)으로 나눠서 전달한다.
  • 이렇게 전달하는 과정에서 패킷은 서로 독립적으로 처리된다. 즉, 각각의 패킷은 동일 경로, 혹은 다른 경로를 통해 전달될 수 있다.

비연결형 패킷 교환망

  • End to End에서 패킷을 만들고 보내는데, 이는 네트워크층(L3)에서 한다.
  • 상황에 따라 각 패킷을 전달하는 최적의 경로로 패킷을 전달한다. 때문에 source와 destination은 동일해도 각 패킷이 전송되는 경로는 모두 다를 수 있다.
  • 따라서 destination에 도착할땐 순서가 맞지 않게 도착할 수 있다.
  • 비연결형 네트워크에서 라우터의 포워딩 절차
    • 온라인강의참고

7.2.2 가상회선방식 : 연결형

  • 연결지향서비스에서는 하나의 메시지에 속하는 모든 패킷은 서로 연관이 있다.
  • 메시지의 데이터 그램을 보내기 전에 데이터그램 경로를 위한 가상 연결 경로를 설정해야한다 (connection esta blishment)
  • 연결 설정 이후, 데이터그램(패킷)은 동일 경로로 전달한다.
  • 이런 방식으로 데이터를 보내려면 기존 ip 프로토콜은 비연결형이기 때문에 연결을 만든다는 개념이 없다.
  • 가상회선을 통해 데이터를 보내려고 한다면 가상회선식별자같은 흐름 레이블이 필요하다.
미리 회선을 만들어뒀기 때문에 동일한 경로로 각각의 패킷들이 전달된다.

  • 라우터에 들어오면서 Source Address와 Destination Address가 헤더로 붙지만 그거 앞에 Label이 붙는다.
  • 이 Label은 라우터 내에 있는 Forwarding table을 보는 지표가 되는데, Incoming label에 상응하는 Outgoing 포트번호와 Label 보고, outgoing label을 헤더에 붙인 후 그 포트번호로 패킷을 전송하는 역할을 한다.
  • 가상회선방식은 스위치에서 incoming과 outcoming의 레이블을 보고 목적지를 결정한다.

처음에는 어디로 가는 지 A to B 만 정한다. outcoing label은 도착한 라우터가 알려줘야 적을 수 있기 때문에 일단은 적지 않고, 최종 목적지까지 전달이 다 되면 그때 적는다.

  • destination에서 도착 응답을 보내며 outgoing label에 대한 정보를 보내준다.
    도착하게 되면 서버가 잘 도착했다는 응답을 보내게 된다. 그럼 outgoing 포트 4를 보고 서버에서 label 77이라고 보낸다. 이게 연결설정 완료의 과정이다. 한 번 연결 설정이 완료되면 source에서 destination으로 가는 모든 데이터들은 이 길을 통해 간다.

7.3 네트워크 계층 성능

  • 네트워크의 성능은 지연, 수율, 패킷 손실로 측정한다.
  • 혼잡제어는 성능을 개선하는 큰 이슈이다.

7.3.1 Delay, 지연

  • 전송지연 : 패킷을 보내는데 걸리는 시간
    • 전송지연 = 패킷의 길이 / 전송속도
  • 전파지연 : 신호가 목적지까지 가는 시간
    • 전파지연 = 거리 / 전파속도(20만km/초)
  • 처리지연 : 라우터와 목적지에서 처리 시간
  • 큐잉지연 : 시스템에서 처리를 받기 전까지 기다리는 시간 중간에 라우터에선 다양한 소스가 들어오는데, 이를 한번에 처리하는게 아니라 하나하나 처리한다. 그래서 앞의 소스를 처리하는데 걸리는 시간동안 기다려야 한다.

7.3.2 Throughput, 수율

  • 그 지점을 초당 통과하는 비트수
  • 그 지점에서의 최고 전송속도보다 낮은 값인 경우가 대부분이다. 그 이유는
    • 에러가 나는 경우 속도가 낮아진다.
    • 여러 링크를 거치는 경우, 만일 링크 3개가 연결되어있는데 각 링크 속도가 100mbps ↔ 10mbps ↔ 100mbps 로 연결되어있다면 중간 링크 속도의 영향을 받아 속도가 저하된다.

7.3.3 패킷 손실

  • 라우터에서 메모리가 많이 있지만 이를 처리할 수 없을 만큼 데이터가 많이 들어오게 된다면
  • 버퍼가 꽉차게 된다.
  • 꽉찬 이후의 패킷은 overflow로 버려지게 된다
  • 버려지면 재전송을 하게 되는데 이는 더 많은 오버플로우를 발생시킬 수 있다.

7.3.4 혼잡제어

  • 인터넷 모델에서 L2, L4에선 혼잡제어가 많이 사용되는데, 네트워크 계층에서의 혼잡제어는 명확히 정의되지 않았다.
  • 네트워크 계층 혼잡 이슈 : 쓰루풋, 지연
  • 혼잡 제어 방식
    • open-loop 혼잡제어 (사전예방) 송신자.수신자가 혼자 제어
    • close-loop 혼잡제어 (발생 후 제거) 상호 교신을 통한 제어
  • 혼잡이 발생하는 경우

일반적으로 최대속도에 다다르기 전에 Delay가 급작스럽게 올라가게 된다.

따라서 트래픽을 어느 한계 이하로 유지해야한다.

이 또한 특정 구간 이전까지는 throughput이 계속 오르다가 급격하게 내려간다.

  • open-loop 혼잡제어 (사전예방)

    송신자, 수신자가 혼자서 제어함

    selective-repeat : 에러 생긴 것만 따로 보낸다.
    수락정책 : 가상회선이 어느정도 차면 그 이후로는 회선을 안만들어준다.

  • close-loop 혼잡제어 (발생 후 제어)

    상호 교신을 통한 제어

  • Backpressure 혼잡이 생긴 노드에서, 이전 노드에게 데이터를 줄이도록 요구하는 방식
  • Choke packet 혼잡이 생긴 노드에서 Source에게 choke packet을 보냄으로서 혼잡제어를 요구

7.4 IPv4 주소

  • 2개 이상의 시스템이 통신을 하는 과정에서 양 끝단에 있는 주소가 IP 주소이다.
  • 주소 : 연결의 양 끝 장치를 식별하는 방식
  • IPv4 주소 : 32비트이며 인터넷에 연결된 통신장치(호스트, 라우터)를 전세계쩍으로 유일하게 정의하는 주소이다

  • IP 주소는 호스트나 라우터의 주소가 아닌, 연결의 끝단 주소이다.
  • 연결이 여려 개인 경우 연결 각각마다 주소가 있다.

7.4.1 IPv4 주소 방식

  • 32비트의 주소를 사용하게 되므로 2^32개의 주소공간을 갖는다.
  • 그러나 최근엔 이가 모자르다 생각해 IPv6의 128비트 주소공간을 사용한다

- Prefix : 컴퓨터가 속한 네트워크 구분하는 식별자
- Suffix : 해당 단말기를 구분하는 식별자

7.4.1 IPv4 주소지정: suv

  • Classful Addressing : fixed-length prefix
    • 네트워크 부분

    • 호스트 부분

      다양한 크기의 네트워크를 수용하기 위해 3개의 고정길이 프리픽스를 고안했다

    • n = 8. n = 16, n = 24

      전체 주소 공간은 5개의 클래스로 분할한다

    • A (n=8) , B (n=16), C (n=24), D, E

- first byte : 123. 456. 789. 012 중 123에 해당하는 부분임

위에서 볼 수 있듯이 prefix의 크기에 따라 suffix의 크기가 달라진다.

prefix가 작으면 작을 수록 큰 네트워크를 형성할 수 있게 되고, 크면 클 수록 작은 네트워크를 형성하게 된다.



- 네트워크 주소란 네트워크를 대표하는 주소이다.
- 라우터가 있다면 라우터에서 또다른 네트워크들이 많이 연결되어있는데, 그 각각의 네트워크들을 대표하는 주소이다.
- 패킷이 들어오면 패킷이 가는 목적지의 네트워크 주소를 포워딩테이블에서 찾아 다시 보내준다.

  • Classless Addressing
    • 주소 부족을 완화하는 방식이다

    • 그러나 근본적인 해결책은 IPv6이다

    • A, B, C 클래스를 무시한다

      클래스에 따라 네트워크를 부분 고정하는데 이를 무시한다

      네트워크 프리픽스 크기에 따라서 네트워크 부분이 달라지는 것

    • CIDR표기 방식이 따로 있다

      전제 주소 / n (prefix의 bit 수)

      예) 123.345.565.349 / 8라고 한다면

      앞에 8비트가 네트워크 주소이다. 나머지 24비트는 호스트 부분이다.

      [예시 1]

      167.199.170.82/27에 대해서 네트워크 내의 총 주소수는 32개이다. (2^32-n개인데 여기서 n이 27이기 때문에)

      첫 주소는 앞의 27비트를 유지하고 나머지는 모두 0인 주소이다.

      마지막 주소소는 앞의 27비트를 유지하고 나머지는 모두 1인 주소이다.

[예시 2]
classless 주소에서 하나의 주소를 가지고 그 주소가 속한 블록을 알 수 없다.

  • 네트워크 주소

    • 라우팅 테이블을 보면 네트워크 주소의 개념이 있다.
    • 패킷을 보면 패킷의 목적지주소를 보고 이게 어느 네트워크를 향해 가는 것인가를 알아야 한다.
    • 이 라우팅테이블의 주소는 각 네트워크를 대표하는 주소이다.
    • 그래서 패킷이 들어왔을 때, 패킷의 목적지 주소를 이용해서 네트워크를 찾는 것이 아니라 그 패킷이 가는 목적지의 네트워크 주소를 테이블에서 찾아서 해당 interface를 찾아서 목적지로 보내주는 것이다.
  • Address Aggregation

    • 작은 주소를 묶어서 하나의 더 큰 주소를 만드는 것이다
    • summarization, supernet이 그 예이다
    • 이는 라우팅 테이블을 간소화할수 있고, 라우팅 정보교환의 양이 줄어들기 때문에 속도가 빨라지고 성능이 향상된다
  • DHCP

    • DHCP서버를 통해 컴퓨터가 켜지면 자동적으로 주소를 받아와서 사용하게 된다
    • 작동 방식
      • 클라 켜짐
      • DHCP : 너 이 주소 사용할래?
      • 클라 : ㅇㅇ
      • DHCP : 오키 너 이거 할당 ~

  • NAT
    • 보통 작은 네트워크에서의 인터넷의 동시 접속은 많지 않다.
    • 사설 주소와 공인 주소를 매핑하여 제공하고, 가상의 사설주소를 지원하는 시스템이다
    • 이 기술은 사이트 내부에서 사설 주소를 이용해 내부 통신을 하고, 인터넷의 컴퓨터와 통신을 할 때 공인주소를 통해 통신을 가능하게 한다.
    • 보통 공유기에 있는 기능이다.

7.4.2 IP 패킷의 포워딩

  • 포워딩은 패킷을 목적지로 가는 경로로 위치시키는 것이다
  • 목적지 주소 기반 방식 (기존 방식)
    • 포워딩 테이블이 필요하다
    • 목적지 주소와 해당 포트번호가 있어서 테이블을 보고 목적지로 가는 포트를 찾는다.

  • Address aggregation
    • 작은 네트워크를 하나로 모아서 하나의 항목으로 묶은 것
    • 라우팅 테이블이 작아진다
  • Longest Mask Matching
    • prefix의 길이가 가장 긴 것을 먼저 매칭한다.
  • 계층적 라우팅
    • Internet : backbone > 국가 ISP > 지역 ISP > 단말 ISP
    • 네트워크를 계층적으로 배치하면 보다 효율적으로 라우팅이 가능하다.

  • Forwading based on Label
    • 1980년대에 IP 라우팅을 스위칭으로 변경하여 연결지향형의 프로토콜처럼 동작하는 노력을 시도했다
    • 연결지향형의 네트워크에서, 스위치는 패킷의 레이블을 보고 포워딩을 한다
    • 라우팅은 라우팅 테이블을 검색한다
    • 스위칭은 테이블을 인덱스처럼 엑세스한다. 때문에 훨씬 빠르게 엑세스 가능하다
    • MPLS (Multi-Protocol Label Switching) : 다양한 프로토콜을 레이블을 통해 스위칭 해주겠다.
    • MPLS 라우터는 라우터 및 스위치로 동작하게 된다
      • 라우터로 동작 시 목적지 주소 기반으로 포워딩
      • 스위치로 동작 시 레이블에 근거하여 포워딩
    • 레이블 스택 (레이블에 레이블을 또 추가)
      • 계층형 네트워크 지원

    • 라우터 : 네트워크 계층에서 사용되는 패킷 스위치
    • 라우터는 2가지로 설정 가능하다
      • 데이터그램스위치 : IP 주소를 보고 전달
      • 가상회선 스위치 : 미리 길을 만들어 둠

7.5 IPv6

  • 주소공간이 부족했기에 IPv6가 만들어졌따
  • IPv6의 주소는 128비트로 IPv4의 4배이다
  • 크기가 너무 크기 때문에 인간이 다루기 힘들다.
  • 아래 사진처럼 두 가지의 표기 방식이 있다.

7.5.1 IPv6 주소공간할당

  • 글로벌 유니캐스트 주소 (2000::/3)

앞 부분이 할당하는 주소. interface identifier은 컴퓨터 자체적으로 만들어지는 주소이다.

Global routing prefix : 큰 네트워크 구분 주소, Subnet identifier : 큰 네트워크 내의 작은 네트워크 구분 주소

7.5.3 IPv6 특징

  • 더 좋은 헤더 형식
    • 선택사항이 기본 헫에서 분리되어 필요할 경우에는 기본 헤더와 상의 계층 데이터 사이에 삽입되는 새로운 헤더 형식을 사용한다
  • 새로운 선택사항
    • IPv6은 추가적인 기능성을 허용하는 새로운 선택사항을 가지고 있다
  • 확장허용
    • IPv6은 새로운 기술이나 응용에서 요구된다면 프로토콜의 확장을 허용하도록 설계되었다
  • 자원 할당을 위한 지원
    • IPv6에서 서비스 유형 필드는 제외되었으나 발신지가 패킷의 특별한 처리를 요청 가능하게 만드는 다른 방식이 추가되었다. 이 방식은 실시간 오디오나 비디오와 같은 트래픽을 지원하는 데 사용될 수 있다.
  • 더 높은 보안을 위한 지원
    • IPv6의 암호화 인증 선택사항은 패킷의 기밀성과 무결성을 제공한다.

7.5.4 IPv6 프로토콜 : 패킷 형식

  • 각 패킷은 필수적인 기본 헤더와 페이로드로 구성된다
  • 기본 헤더는 40바이트를 차지하며, 유료부하 (payload) (= 확장헤더 + 상위 계층 데이터)는 65535바이트까지의 정보를 포함할 수 있다.
    • version : 6 (4 bits), traffic Class : 8 bits, ****label**** : 24 bits, payload length : 16 bits
    • Next header : 8 bits, Hop Limit : 8bits, Source addres : 128 bits
    • Destination address : 128 bits

7.5.5 IPv6 주소 : 확장 헤더(Extension Header)

  • IPv6 패킷은 기본 헤더와 일부 확장 헤더로 구성된다. 기본 헤더의 길이는 40바이트로 고정되어있다
  • 그러나 IP 데이터그램에 더 큰 기능을 제공하기 위해 기본 헤더 뒤에 6개까지 확장 헤더들을 둘 수 있다.
  • 이 헤더들은 많은 경우 IPv4의 옵션이다,
  • 여러 가지 유형의 확장 헤더가 정의되어 있다.
  • 이것들은 매 홉 선택사항, 발신지 경로 지정, 단편화, 인증, 암호화된 보안 페이로드, 그리고 목적지 선택사항이 있다.
    • Hop-by-hop hop은 각 서버를 의미한다. 홉은 특정 두 서버 간에만 영향을 미치고 다른 서버간에는 영향을 미치지 않는다. 라우터를 거칠때마다 처리하는 내용
    • Destination 목적지를 알려주는 헤더
    • Source routing 라우팅을 하는 특수한 방식
    • Fragmentation 데이터의 메시지가 길 땐 fragment 단위로 잘라야하는데 몇 번째 fragment인지 설명해주는 헤더
    • Authentication 보안
    • ESP 보안

7.5.6 ICMPv6

  • ICMPv6은 ICMPv4보다 복잡하다. ARP, IGMP의 기능을 흡수한 것이다.
  • 새로운 메시지가 추가된 것이다

  • ICMPv6 메시지 범주

    전체적으론 ICMP 프로토콜에서 사용하는 메시지들이지만, neighbor discovery message를 통해서 주고받는 메시지와 프로토콜을 따로 ND 프로토콜로 분류하기도 하고, group 프로토콜을 따로 MLD 프로토콜이라고 분류하기도 한다.
  • Error-Reporting Messages (4가지)
    • destination unreachable
    • packet too big
    • time exceeded
    • parameter problems
  • Source-quenched 메시지는 제외 됨
    • IPv4에서 혼잡 제어 용도
    • IPv6에서는 헤더의 priority, flow label 필드를 활용하여 혼잡제어
  • InformationalMessages
    • echo request 메시지
    • echo reply 메시지
    • request를 보내서 reply가 오면 목적지가 잘 동작하고 있고, 목적지까지 가는 데에 문제가 없다는 것을 알 수 있다
    • 인터넷에서 통신가능 상태 체크
  • Neighbor-Discovery 메시지
    • 새로운 2개의 프로토콜 지원
    • Neighbor-Discovery (ND) 프로토콜
    • Inverse-Neighbor-Discovery (IND) 프로토콜
  • Goup Membership Message
    • 해당 네트워크 안에 그룹 멤버가 있나 없나 체크하는 프로토콜이다.
    • IPv4에서 그룹 통신을 다루는 프로토콜은 IGMPv3 프로토콜
    • IPv6에서는 Multicast Listener Delivery 프로토콜이 담당한다.
      • MLDv1이 IGMPv2의 IPv6 버전
      • MLDv2가 IGMPv3의 IPv6 버전
    • MLDv2의 두 메시지 유형
      • membership-query 메시지 (router가 보냄)
      • membership-report 메시지 (host가 보냄)

7.6 IPv4에서 IPv6으로의 전환

  • IPv4와 IPv6 시스템 사이에 문제가 없도록 프로토콜 버전의 변경은 매끄럽게 진행되어야 한다.

  • 3가지의 전환 전략이 있다

    • Dual stack

      컴퓨터에서 두 버전의 프로토콜을 모두 사용한다. 그래서 v4 시스템을 사용하는 경우에는 v4, v6을 사용하는 경우에는 v6을 사용해 통신한다.

    • Tunneling strategy

      v6간의 통신 중 중간에 v4를 이용하는 구간이 있는 경우 v6데이터에 v4헤더를 씌워서 터널처럼 통과시킨다.

    • 헤더 변환 전략

      라우터를 기준으로 왼쪽이 v6이고 오른쪽이 v4이면,

      왼쪽에서 오른쪽으로 메시지를 전달할 때 중간에 라우터가 v4로 변환해주고, 반대일 경우 v4에서 v6으로 변환시켜서 보내준다.

  • IP 주소의 사용

    • 전환기간 동안에는 IPv4, IPv6 두 방식의 주소 모두 사용한다
    • 전환 완료 시 IPv4 주소는 없어질 것이다
    • DNS 서버가 호스트 이름으로부터 두 방식의 주소를 모두 매핑해줄 것이고, 전세계의 모든 호스트가 IPv6으로 전환되면 IPv4의 디렉토리는 없어질 것이다.

0개의 댓글