컴퓨터 네트워크 - 4(Network layer)

박승현·2023년 9월 9일

컴퓨터 네트워크

목록 보기
4/6

Network layer

  • network : host to host
  • 모든 호스트와 라우터에 구현되어 있어야 함

forwarding and routing

  • forwarding : 들어온 페킷의 해더를 체크해서 어떤 링크로 보낼지 정하는 것
  • routing : source to destination의 경로를 정하는 것

Data plane and control Plane

  • data plane : 페킷이 input port로 들어오면 output port로 보내는일 -> forwarding기능 수행
  • control plane : 네트워크 전체를 거친 로직 수행(경로를 설정하는 것)

Per-router control plane

  • 각각의 라우터가 알고리즘을 수행, 상호작용
  • 실제로 옮기는 것 : data plane : forwarding
  • 경로를 생성하는 것 : control plane : routing
  • control plane이 각각의 라우터에 존재함

Centralized control plane

  • 중앙의 컨트롤러가 모든 라우터의 포워딩 테이블을 계산하고 라우터의 CA에게 전송
  • 라우터는 전송만 하고 계산은 안하는 방법
  • 장점 : 각각의 순간에 정보를 받아서 모으기 때문에 정보의 일관성이 있음(per-router 방법은 보내는 도중 링크가 끊어져 상태가 달라질수도 있다.)

Network service model

  • individual datagram
    • guranteed delivery : 페킷 전송을 보증
  • flow(페킷들) of datagram
    • in-order datagram delivery : 플로우를 순서대로 전송
    • guaranteed minimum bandwidth to flow : 최소한의 bandwidth 보장
    • restrictions on changes in inter-packet spacing : 페킷 간의 전송 간격을 어느정도로 보장해주는 것

inside a router

  • input port, output port, routing processor, switching fabric 4개의 구성요소
  • routing의 결과는 forwarding 테이블 : 테이블은 input port각각에 써줌

input port

  • 신호를 받아서 bit로 만들고 lonk 레이어로 전송
  • lookup, forwarding : 포워딩 테이블을 참조해서 output port로 보내줌

output port로 보내는 방법

  • destination-based forwarding : 목적지만 중심으로 결정
  • generalized forwarding : 헤더에 있는 모든 필드를 참조해서 결정(desination-based 포워딩은 이 방법중에 하나임)

destination-based forwarding

  • forwarding 테이블 : 주소를 구간을 나누어 각각의 구간마다 목적지가 정해짐
  • Longest prefix matching : 하나의 주소가 여러개의 address range에 매칭되면 와일드카드가 가장 적은곳에 매핑 시킴 = 더 길게 매칭되는 range에 매핑
  • 와일드카드가 ~~~ 00011 *** 적용되면 2개다 매칭 되지만 1번이 더 길게 매칭되기 때문에 1로 보냄
  • range가 굉장히 많기 때문에 TCAMs라는 하드웨어를 사용

Switching fabrics

  • 경로는 정해졌고 그 경로대로 output port로 전송
  • memory : 메모리에서 계산하고 output으로 : bus를 2번 거침 -> 속도가 느림
  • bus : bus를 한번 사용해서 바로 보냄 : 어느 한 순간에 하나의 input만 보낼 수 있음
  • crossbar : 여러개의 input port가 동시에 전송 가능

input port queing : 크로스바에서 같은 output으로 동시에 보내려고 하면 못 보냄

여기서 초록색은 동시에 보내는게 없어서 원래 갈 수 있었는데 앞의 빨간색에 막혀서 못감 : Head-of-the-line-blocking


Output ports

  • buffering : 보내는 속도보다 더 빨리 올 수 있으므로
  • scheduling discipline : 큐에서 맨 앞에서 보낼건지 중요도에 따라서 보낼건지
  • 버퍼의 크기 :
  • 버퍼의 크기가 크면 로스는 잘 안 일어나도 큐잉 딜레이가 길어질 수는 있음

Scheduling mechanisms

  • FIFO : 그냥 기본
  • discard policy : 큐가 꽉차면 뭘 버릴지
    • tail drop : 마지막에 들어온 애를 버림
    • priority drop : 우선도에 따라 버림
    • random drop : 랜덤

priority

  • 우선순위가 높은 큐에서 먼저 보내는 방법
  • 중간에 끊는건 없음

Round Robin

  • 각각의 큐에서 하나씩 보내기

Weighted Fair Queing

  • 한번씩 보내긴 하지만 한번에 weight만큼 보내기

IP : Internet Protocol

IPv4 datagram format

  • 최소가 20바이트 + 옵션
  • TCP + IP의 헤더 = 40바이트 + app layer 크기를 전송함

IP fragmentation and reassembly

  • MTU : 링크별 최대 전송가능 크기
  • 페킷의 크기가 MTU보다 크면 한번에 못 보내고 짤라서 여러번 보냄 : fragmentation
  • 한번 짜르면 짜른 상태로 보내고 마지막에 다 받고 합침 : reassembly(헤더에 다시 붙이기 위한 정보를 보내야함)
  • MTU가 1500일때(헤더 20) 헤더 포함 1500으로 짜르고 나머지에 헤더 붙이기 3980 - (1480 + 1480) = 1020
  • ID는 다 같아야 함, fragflag : 마지막만 0
  • offset : 나눈거의 처음 바이트의 번호를 8로 나눈 걸 적음 -> 처음 : 0~1479바이트 그 다음은 1480부터 시작이라 1480/8인 185를 적고 마지막은 2960/8인 370 8로 나누는 이유는 크기 줄일려고

IPv4 addressing

  • IP address : 32bit의 호스트, 라우터의 인터페이스를 구분
  • interface : 호스트 라우터와 물리적 링크를 연결해주는 장치 -> 각각의 인터페이스마다 주소를 가지고 하나가 여러개를 가질 수도 있음

Subnet

  • 32비트를 subnet과 host로 나눔
  • subnet part가 같으면 물리적으로 바로 무언가를 보낼 수 있음
  • subnet mask : /24 --> 223.1.1.0/24 이런식으로 표현하면 223.1.1이 subnet파트
  • 라우터가 없이 페킷이 전송 가능한 것들
    서브넷이 6개인 예시
  • CIDR : Classless InterDomain Routing : 서브넷의 비트수가 정해져 있지 않은 방법
  • 과거에는 클래스가 정해져 있었고 그에 따른 서브넷의 비트수도 정해져있었음 -> 그래서 남은 비트로만 주소를 할당 가능한데 모자라면 8비트를 더 추가한걸 사야했음 -- 24비트 중 16비트가 서브넷파트이면 2^8개가 주소 할당 가능 개수

how to get IP address

  • DHCP : Dynamic Host Configuration Protocol : host가 서버로부터 자동으로 주소를 얻음
    • 일정시간이 지나면 자동으로 갱신, 시간이 지나도 갱신을 안하면 자동으로 반납
    • 접속하면 자동으로 discover를 보냄 : 구성원 모두가 받는데 받는 애중 서버가 아니면 그냥 무시하면 됨
    • offer : 서버에서 보내는데 이것도 대상자를 모르기 떄문에 모두에게 보냄(transection번호는 같아야함)
    • request : 오퍼 받으면 요청
    • ack : 요청 허가 마지막 2개는 transection번호 다름
  • DHCP : more than IP address : ip주소만 주는 것이 아님
    • 서브넷 이외에 외부로 보내기 위해서는 라우터의 인터페이스 정보를 알아야함
    • DNS서버 이름도 보내줌
    • network mask : 서브넷 파트의 비트 개수

서브넷의 내부를 또 서브넷으로 나누는 느낌

  • 계층적으로 주소를 분류해서 그 아래에 해당하는 모든 경로가 그 위로 가는 식으로 처리
  • IP가 통쨰로 옮겨가면 그것만 위에서 추가하는데 이러면 이전과 옮겨간 곳 두개에서 위의 계층에서 해당되게 되지만 더 많이 매칭된 곳으로 보내기 때문에 옮겨가도 문제가 없다.

NAT : network address translation

  • 내부적으로 내부 호스트에 ip주소를 부여하고 내부끼리는 바로바로 전송가능하게 함
  • 외부는 라우팅 테이블을 생성할 방법이 없기 때문에 1개의 라우터를 통해서 해야함
  • 장점 : 한 개의 외부 ip주소로 여러개의 호스트 연결, 내부에서 주소를 변경 가능(외부와 상관 없음), 내부의 변경 없이 ISP를 자유롭게 변경가능, 해킹에 안전함
  • router의 역할
    • 일단 내부끼리의 통신에는 관여 x
    • outgoing : 외부로 보내는 데이터 : source IP와 PORT번호를 NAT IP addres, 새로운 포트 번호로 치환(기존은 10.0.0의 ip인데 이걸 외부 ip로 바꾸는 거임
    • remember : NAT translation table : 치환 정보를 테이블에 저장 해야함
    • incoming : 데이터가 오면 테이블을 확인해서 매핑정보에 맞게 다시 바꿔서 호스트로 보내줌
  • 라우터에서 포트번호를 바꿔야 하는데 이건 transport레이어 에서 해야한다는 의견도 있음
  • p2p는 NAT내부에 있으면 코드가 굉장히 복잡해 질수 있다.

IPv6

  • 40바이트의 고정된 헤더를 사용
  • no fragmentation allowed : 데이터를 쪼개는걸 없애버림 -> 처음부터 작게 보내기

IPv6 datagram format

changes from IPv4

  • checksum : IPv6에서 사라짐 : 그냥 위에 translation에서만 체크하게
  • ICMPv6 : ICMP의 새로운 버전

Transition IPv4 to IPv6

  • tunneling : IPv4만 이해하는 라우터에 6버전을 보낼때 4버전 포멧 안에 6의 데이터를 통쨰로 보내버림 그래서 사용한 기법
  • 터널로 보내도 IPv4의 라우터를 지나가긴 함
profile
KMU SW

0개의 댓글