컴퓨터 네트워크 - 6(Link layer)

박승현·2023년 9월 9일

컴퓨터 네트워크

목록 보기
6/6

Introduction , services

  • 링크로 연결된 두 개의 노드 사이에서 데이터를 전송 해주는 역할(노드는 라우터 호스트 서버 상관없음)
  • Link : 유선, 무선, LANs
  • 링크 레이어에서 사용하는 페킷 : Frame
  • 각각의 링크가 다른 프로토콜을 사용함
  • services
    • framing : 링크 레이어에서 앞에 header, 끝에 trailer를 붙여 frame으로 만듬
    • reliable : transport레이어에서도 구현되어 있지만 링크 레이어에서 처리하면 더 빨리 복구하기 때문에 제공하는 기능
    • flow control
    • error detection
    • error correction : 한 개 정도의 비트가 오류발생하는 경우 수신자가 재전송 없이 스스로 에러를 복구 가능
    • half-duplex and full-deplux : 두 개의 노드 중 하나만 전송 or 동시에 전송 둘다 가능
  • 각각의 호스트, 라우터에 구현 되어야 함 랜카드에서 구현할 수도 있고 cpu에서 구현 하기도 함

error detection, correction

Error detection

  • 기존의 데이터에 추가적인 정보를 전송, 수신자도 수신 데이터를 통해 추가정보를 계산하고 비교하는 방법 : checksum과 방식은 동일함

single bit parity

  • 데이터에서 전체적으로 1의 비트가 홀수개면 0 짝수면 1로 parity bit를 전송
  • 한 개의 비트만 에러가 났을때 사용가능(3,5,7개도 가능할 것 같긴한데 많아서 못 쓰는거 같음)

two-dimensional bit parity

  • 방식은 동일한데 2차원으로 보내서 싱글비트 에러 탐지 및 위치도 파악 가능

Cyclic redundancy check

  • Data bit : D(보내는 쪽에서만 암)
  • r+1 bit = G(양쪽에서 둘다 알고 있음)
  • 보내는 쪽에서 D와 G를 이용해 R을 만들고 D+R을 보냄 R은 r비트
  • D에R을 이어붙인 비트를 G로 나누었을때 나머지가 없이 정확히 떨어지는 R을 선정
  • 에러가 발생하면 G로 나누어 떨어지지 않는다
  • r+1만큼 연달아 에러가 발생하지만 않는다면 에러의 개수는 몇개가 생겨도 상관 없이 디텍 가능
  • D와 R을 붙인 식
  • R 계산 방법
  • R xor R = 0
  • 나누기 할때 빼기 때신 xor연산

Multiple access protocols(MAC)

  • 링크는 링크 사이에 두 개의 노드만 있는 Point to Point 방식과 여러개의 노드가 링크를 공유하는 broadcast 방식이 있음
  • 2개 이상의 프레임이 동시에 전송되면 충돌이 일어났다고 함(해석 불가) : collision 충돌을 해결하는 방법이 multiple access protoocol

ideal multiple access protocol

  • 노드 1개가 전송을 원하면 채널의 최대 rate로 전송 해야함
  • 노드 M개가 전송을 원하면 (최대rate/M)의 속도로 공평하게 전송 해야함
  • 위의 내용을 특정한 노드가 결정해주거나 각각의 노드에서 싱크를 맞춰서 하는 것이 아닌 분산된 상태에서 해야함
  • 단순해야함
  • 위의 4가지 조건을 모두 만족하는 프로토콜은 현실적으로 없어서 최대한 많이 만족시켜서 개발하려고 함

MAC protocol분류

  • channel partitioning : 하나의 채널을 시간, 주파수, 코드등 특정 방법으로 쪼개고 각각의 조각을 노드에게 할당 할당받은 조각은 공유하지 않고 받은 노드만 사용
  • random access : 채널을 랜덤하게 접속/사용 이 방법은 충돌이 발생하기 때문에 복구하는 기능도 있어야 함
  • taking turns : 각각의 노드가 순서를 정해서 전송하는 방법

channel partitioning MAC protocol

  • TDMA
    • time division multiple access
    • 매 라운드 마다 해당 슬롯에서만 사용 사용 안하면 낭비 될 수도 있음
  • FDMA
    • frequency division multiple access(주파수)
    • 이 방법도 낭비가 생길 수 있음
  • 채널 파티셔닝은 충돌은 발생하지 않지만 낭비가 생길 수 있다

Random access protocols

  • 순서 조정 없이 모든 노드가 최대 rate R로 전송

Slotted ALOHA

  • 가정
    • 모든 프레임이 같은 사이즈
    • 시간을 하나의 프레임을 온전히 보낼 수 있는 크기로 짜름 : TIME SLOTS
    • 노드는 slot이 시작될때만 프레임을 전송 가능
    • 모든 노드가 동일하게 slot의 시작 시간을 알아야 함 : synchronized
    • 만약 충돌이 발생하면 다른 모두가 충돌을 감지 가능
  • 과정
    • 새로운 프레임을 만들고
      • 충돌이 없으면 다음 slot에 전송
      • 충돌이 있으면 각각의 노드가 일정 확률 P를 통해 전송하거나 안함
  • C : 충돌 slot, E : empty slot
  • 이 방법은 하나만 보낼 때는 최대 rate를 사용 할 수 있기 때문에 보낼때 낭비는 없음, 간단함
  • 충돌이 일어난 slot은 무조건 낭비 됨, 모든 노드의 clock 싱크가 동일 해야하는데 기술적으로 어려움
  • 최대 효율(사용한 slot과 전송에 성공한 slot의 비율) : 1/e = 0.37로 효율이 좋지 않다.

Pure ALOHA

  • slot을 나누지 않고 그냥 보내는 방법
  • 이거는 한 프레임을 보내는데 1의 시간이 걸린다고 가정 할때 한 프레임을 보내기 시작한 시간을 기준 앞,뒤로 각각 1만큼은 다른 프레임이 들어오지 않아야함
  • 결론적으로 효율이 1/2e = 0.18이 된다
  • 단순하고 동기화 필요없지만 효율이 안좋다

CSMA(carrier sence multiple acces)

  • 보내기 전에 감지를 해서 보내고 있는 신호가 있으면 대기하는 방법
  • propagation 딜레이 떄문에 충돌이 발생할 수 있다.
  • 충돌이 발생해도 일단 끝까지 다 전송함

CSMA/CD(CSMA 개선)

  • 충돌이 감지되면 전송을 중지하는 방법
  • 낭비되는 시간이 줄어듬

Ethernet CSMA/CD 알고리즘

  1. 랜카드가 프레임 생성
  2. 랜카드가 채널을 감지 idle이면 전송 busy(다른 신호가 있음)면 idle이 될 때까지 대기
  3. 보내면서 충돌이 일어나는지 계속 감지
  4. 전송 중 충돌이 발생하면 전송을 중단하고 jam signal을 전송해서 다른쪽에서도 충돌이 일어난 것을 알 수 있도록 함
  5. 충돌이 일어나면 복원을 해야함 : binary backoff사용
  • binary backoff :
  • m번째 일어난 충돌에서 0~2^m-1중 K하나를 고르고 K*512비트를 보낼 수 있는 시간동안 기다림
  • 충돌이 일어나면 날수록 오래 기다리게 됨

CSMA/CD efficiency

  • propagation은 가장 먼 2개의 노드에서 계싼
  • propagation 딜레이가 늘어나거나 trasmission속도가 빨라지면 효율이 나빠짐(시간이 줄어들어서)

Takng turns MAC protocol

  • 앞의 두개의 방법의 장점을 모두 사용하고자 만들어짐
    • channel partitioning은 여러개 한번에 보낼때 장점이고 random access는 한번에 하나만 보낼때 장점

Polling

  • Master에서 polling메시지를 각각의 slave에게 보내고 slave에서 보낼게 있으면 데이터를 보내고 polling메세지를 반납함, 없으면 순서 넘김
    • master가 죽으면 polling 메시지를 보낼 수 없음
    • 순서 넘길때 낭비 발생(polling을 주고 받고 하는 과정)

token passing

  • 토큰을 가지고 있을때 데이터를 일정시간동안 보내고 보낼게 없으면 토큰을 다른 노드에게 전해줌
    • 토큰이 중간에 에러로 못받으면 토큰이 사라짐

LANS

MAC address and ARP

  • 인터페이스 카드(랜카드)에 할당된 고유한 주소 일반적으로 IP주소와는 다르게 변하지 않음 중복된 MAC주소가 발생하면 오류
  • 48비트로 구성됨, 8비트씩 끊어서 구분
  • MAC 주소와 IP주소를 mapping해야함 : ARP를 사용

ARP : address resolution protocol

  • ARP table : 같은 LAN에서 IP/MAC 주소 mapping한 정보와 TTL이 존재(매핑 정보는 계속 유지되지 않기 때문)
  • ARP table작성
    • A -> B를 보낼때 A의 테이블에 B의 MAC 주소가 없음
    • A가 모든 노드에게 쿼리를 보냄(링크 레이어 수준, MAC 주소 : ff-ff-ff-ff-ff-ff, B가 쿼리를 받았을때 본인의 IP주소가 포함됨
    • B가 받고 A에게 A의 MAC주소를 사용해서 보냄
  • ARP table : plug and play = 처음에는 아무 내용이 없다 점차 채워짐

routing to another LAN

  • 라우터를 거치면서 라우터의 IP, MAC을 사용
  • 라우터에서는 IP를 네트워크 레이어에서 변환하고 링크 레이어로 전달

Ethernet

  • 다양한 속도 제공
  • 처음 널리 퍼진 LAN 기술임
  • 간단하고 저렴함
  • 성능 측면에서도 떨어지지 않음

Ethernet : physical topology

  • bus는 하나의 선을 이용하기 때문에 한번에 하나만 전송 가능함
  • Star는 각각의 링크가 ethernet기능을 구현

Ethernet frame structure

  • preamble : 송,수신자의 동기화를 위한 8바이트
  • address : 각각 6바이트씩 MAC주소
  • type : 네트워크 레이어의 프로토콜 타입
  • CRC : 앞에서 했던 Cyclic redundancy check
    (에러 체크)

Ethernet : unreliable, connectionless

  • 커넥션 없음
  • unreliable인데 복구는 상위 레이어에서 함
  • csma/cd 방식을 사용 하지만 링크 하나에 호스트가 하나가 열결 되있어서 항상 프리한 상태가 됨

Switch

  • store and forwarding
  • 모두에게 보내는 허브와는 다르게 목적지를 보고 선택적으로 전송 가능
  • transparent : 각각의 노드는 중간에 스위치가 있는지 모름
  • plug and play, self learning : 라우터는 라우팅 알고리즘을 수행시키고 주소를 부여하고 그런 기능들을 해줘야 하는데 스위치는 바로 동작함

switch : multiple transmission

  • 각각의 호스트는 고립되어 있으면서 스위치와 연결됨
  • 스위치는 페킷을 버퍼에 저장하고 보냄
  • 각각의 링크는 ethernet 프로토콜을 사용
  • 충돌이 발생하지 않는다

Switch table : self-learning

  • 스위치에
    • 프레임을 받으면 보낸 노드의 MAC주소와 그 노드로 연결되는 링크를 매핑
    • 그 프레임의 목적 MAC주소를 확인
      • 주소가 테이블에 있으면 전송(만약 전송자와 목적지의 링크가 같으면 drop)
      • 주소가 테이블에 없으면 다른 모든 링크로 보내줌(flood)

  • A -> G로 처음 보낼때 flood가 총 4번 일어남(모든 스위치)
  • 그러면 A에 대한 정보를 모든 스위치가 가지게 됨
  • 그 후 G에서 A로 보낼땐 flood없이 바로 보낼 수 있음

Switch vs router

  • 두개 모두 store and forward
  • router : 네트워크 레이어, IP주소를 사용해 라우팅 알고리즘으로 테이블 작성
  • switch : 링크 레이어, MAC주소 사용 self-learning으로 테이블 작성
  • 호스트가 많으면 스위치는 처음에 모든 스위치에게 flood하기 떄문에 효율이 떨어 질 수 있음

VLANs

port_based VLAN : 포트번호를 기준으로 나누어서 ARP를 보내는 방법

  • 하나의 물리적인 스위치를 통해 논리적으로 별개의 LAN을 구성할 수 있게 하는 것
  • 트레픽이 분리됨
  • 논리적으로 나눠둔 것을 자유롭게 변경 가능(원래 하나의 LAN이기 때문)
  • VLAN 간의 통신에는 라우터가 필요함(보통 스위치 안에 라우터 기능도 들어가게 만듬)
  • 서로 다른 스위치의 호스트 일부를 합쳐 하나의 VLAN을 만들 수 있음 : trunk port가 필요
  • trunk port를 사용해 보낼떄는 802.1q의 프레임 포멧을 사용(다른 스위치에서 전해져 왔기 때문에 구분 해주기 위함)
  • VLANs은 802.1q를 사용한다.

Multiprotocol label swiching(MPLS)

  • 처음 목표 : IP 포워딩을 더 빨리 하는 것
    • 고정된 길이의 LABEL 사용(1:1매칭)
    • MPLS를 사용하는 네트워크에서 MPLS헤더를 끼워서 IP헤더를 사용 안하다가 다른 네트워크로 가면 지우는 방법
  • 라우터들이 MPLS 기능을 이해해야 가능함(MPLS capable 라우터)
    • 1:1 매칭의 MPLS 테이블이 필요
    • 20비트의 레이블만을 가지고 경로를 결정하기 때문에 속도가 빠름
    • 유연함(ip는 목적지의 주소만 사용하지만 여기서는 두개다 사용)
    • RSVP-TE 프로토콜을 사용

MPLS and IP paths

  • IP 라우팅 :
    • 목적지가 같으면 경로가 항상 같음(목적지 기반 라우팅)
  • MPLS :
    • 같은 목적지와 라우터를 거쳐도 출발지에 따라서 경로가 다를 수 있음
    • 트레픽 분산 가능
    • MPLS 내부에서는 IP주소를 사용하지 않는다.
    • fast reroute : 링크에 문제 생겼을때 대안을 미리 작성해놔서 알고리즘을 재수행 할 필요 없이 빠른 대처가 가능

MPLS forwarding table

  • R1에서 A로 보내고 싶으면 6번으로 보내라고 함
  • R2에선 8번으로 보내면 6번으로 보내준다고 알려줌
  • 목적지 기준에서 보는게 편함

Data center network

  • 가까운 거리에 수많은 호스트를 모아놓은 형태(서버 같은 곳)
  • 트리 구조로 되어있음
  • load balancer 가 호스트의 정보를 가지고 있다가 요청이 들어오면 한가한 호스트를 골라 일을 시킴, 요청을 받고 결과를 보내주는 역할을 함
  • 호스트간에 정보를 교환해야 하는 경우가 많이 생김
    • 여러 링크를 구성해서 트래픽 집중을 줄이고 어떤 링크에 문제가 생겨도 다른 링크를 통해 전송 가능(안정성)
    • 경로가 여러개이기 때문에 목적지에 대한 총 rate가 높아지는 효과
    • ARP전송할때는 모든 호스트에 전송해야할 수도 있음

a day in the life of a web request

-> 웹 리퀘스트 과정 종합

  • 시나리오 : 노트북 하나로 google.com 웹페이지 요청
    • DHCP를 사용해서 노트북의 IP 주소와 첫 라우터의 IP 주소, DNS정보를 얻음, 이 과정에서 스위치는 self-leaning으로 MAC/IP 매핑
    • 먼저 라우터로 보내야 하는데 아직 라우터의 MAC 주소를 모름 -> ARP 사용
      • 라우터로 프레임 만들어서 보냄
    • 라우터에서 DNS로 보냄
      • DNS는 프레임을 분석해서 클라이언트에게 IP주소를 보내줌
    • 클라이언트는 받은 IP주소를 활용하기 위해 TCP커넥션을 만들어야 함
      • SYN페킷, SYN ACK로 연결
    • TCP 커넥션이 만들어지면 HTTP request/reply
  • HTTP response받으면 끝

profile
KMU SW

0개의 댓글