Computer Networking

[컴퓨터네트워크] chap6 Link Layer + 총정리

rngPwns 2024. 12. 10. 12:58

 

6.1 링크계층 소개

  • e2e 통신경로를 구성하는 개별 링크를 통해 패킷이 어떻게 전송되는가?
    • source host -> 목적지 host까지 쭉 데이터그램이 가는 일이 이루어짐
    • 네트워크 게층에서는 링크 하나 건너가는 일을 담당해주는 링크계층 서비스 이용해서 목적지-source까지 여러개의 링크를 쭉 건너가서 도달하는 일을 해줌

링크계층 용어

  • 호스트 및 라우터 -> 노드
  • 통신경로를 따라 연결된 노드 -> 링크
    • 유선링크
    • 무선링크
  • layer-2 packet: 데이터그램 링크계층을 캡슐화하는 "frame" - link 계층 PDU, IP datagram -> frame으로 encapsulate.
    • +네트워크 계층의 PDU: datagram
  • 링크계층은 링크를 통해 한 노드에서 물리적으로 인접한 노드로 데이터그램을 전송하는 역할 담당

링크계층: context

  • 서로 다른 링크를 통해 서로 다른 링크 프로토콜에 의해 전송되는 데이터그램:  
    • 예: 첫번쨰링크는 와이파이(이더넷스위치에 연결), 두번째링크는 이더넷
      • ex. firsthope wifi link - access point - ehternet switch
  • 각 링크 프로토콜은 서로 다른 서비스 제공.(물리적 링크가 무엇인가에 따라 달라짐) 예를 들어 링크를 통해 안정적인 데이터 전송(frame이 한 node - 다른 node로 link거쳐 건너옴. receiving node에서 잘 건너왔나 체크, 잘 x -> retransmit하거나 forward 에러 correction)을 제공할 수도 있고 제공하지 않을 수도 있음 

링크계층 서비스

ㄴ오류체크: medium에서 오류없이 어떻게 잘 한 link 건너가게 할 것인가? link 계층 다양, 에러 감지 연결 안하거나 하나만 하는 애들도 있음- 보장(reliability)해주고자 하면 링크계층에 100프로 의존불가 -> e2e로 오류 관리해주는 이유

  • framing: 데이터그램을 프레임으로 캡슐화, 헤더(src/dst MAC addr.) (link에 붙어있는 두 노드의 MAC계층 adress : 링크 하나만 이동), 트레일러 추가(IP데이터그램이 이 링크계층으로 내려오면 header, trailer 둘 다 붙임)
    • 프레임 헤더의 "MAC" 주소는 소스, 목적지를 식별(IP주소와 다름 -e2e로 주소 찾아감)
  • 링크액세스: 공유매체인 경우 채널 액세스 -shared media인 경우 많음
  • 인접노드간 안정적 전송(link계층의 기능)
    • flow control : 송신 및 수신 노드간(물리적으로 붙어있는 두 노드간) 간격조절 - buffer overflow방지 - 모두가 아닌 어떤 링크 계층
    • error control(not all):
      • 수신기는 신호감쇠(거리가 있으니 건너오는동안 발생) , 노이즈(주변의 전자기적인 방해로 인해)로 인한 오류 감지 
      • 재전송을 위해 발신자에게 신호 보내거나 프레임 삭제(경우에 따라)
    • error correction
      • 수신기는 재전송 유무에 관계없이 비트오류 수정
        • 두가지 경우
          • sender측에 신호 보내서 retransmit하게 함 -> 약간의 오버헤드, 오류복구까지 시간 좀 더 걸림
          • forward error correction(스스로) -> 자연적으로, 오버헤드 없이 receiver측에서 오류고침. sender측이 오류 detect, correct할 수 있는 checking data 필요. - frame overhead가 더 커짐. - code 집어넣어놔야 함.
            • receiver가 forwarding error correction 해야해서 프로그램 복잡해질 수 있음

링크계층은 어디에 구현돼있나?

  • 모든 각각의 호스트에서!
  • 네트워크상 모든 노드에 링크계층 들어감. host, router 둘 다 full 버전 들어가있음
  • "어댑터" (일명 네트워크 인터페이스 카드, NIC) 또는 칩에 구현된 링크 레이어
  • 이더넷 또는 WIFI 카드 또는 칩(firm ware) - 하드웨어적 or chip
  • 링크,물리계층 구현
  • 호스트의 시스템 버스에 연결
  • 하드웨어, 소프트웨어, 펌웨어의 조합

인터페이스 커뮤니케이팅

  • 보내는쪽: 
    • 프레임에 데이터그램 캡슐화
    • 오류검사비트, 안정적 데이터 전송, 흐름제어 등 추가
  • 받는쪽:
    • 오류, 안정적 데이터전송(signaling or 다시받기), 흐름제어(자기가 링크 헤더 갖고 할 작업 끝-> 링크계층 뜯어내고 데이터그램을 네트워크 계층으로 올려줌) 등 찾음
    • 데이터그램 추출하여 수신 측 상위계층으로 전달

6.2 다중 접속 링크와 프로토콜

Multiple access links: 2 types of link

  • point to point 네트워크(일반적으로 WAN)
    • 호스트(또는 라우터)쌍이 직접 연결-2개의 호스트 직접적으로 연결
    • 네트워크 코어쪽에서 많이 사용
      • 예시네트워크: 전화접속(corex) 또는 DSL(독점하는 link) 액세스 네트워크, 고속 P2P 링크로 연결된 라우터, 이더넷 스위치와 호스트간의 P2P링크(DSL access 네트워크에서도 사용, traditional, first 버전 x, 현재쓰이는 ehternet switch -> 거의 p2p로 연결(코어에 있는 라우터 대부분 -> high speed P2P 링크)
      • 예시 프로토콜: SLIP, PPP, HDLC
  • broadcast networks(일반적으로 LAN)
    • 모든 호스트(또는 라우터)가 단일 통신채널 공유
    • LAN쪽에서 많이 사용
      • 예시네트워크: 구식이더넷(최초의 상용 LAN)(transmission medium의 tap으로 host들이 다 연결, 전달 이더넷 링크에 연결된 모든 호스트들이 링크 공유= shared medium), 무선LAN(와이파이-share, broadcast 네트워크: 공유하기 때문에 느려짐), 위성네트워크, 하이브리드 광섬유-동축 케이블(HFC)(케이블 회사들이 케이블 갖고 인터넷 access 제공, 여러 home이 같은 내용 받아야 함 -> 하나의 링크에 같은 내용 내보내는 게 유리-link에 붙어있는 홈들이 공통으로 받아볼 수 있게-shared medium), 토큰링, FDDI(토큰 발달)
        • 위성네트워크 제외하고 다 LAN측에서 사용.
        • 이더넷 링크에 연결된 모든 애들이 공유됨
      • Transmission medium: 컴퓨터 네트워크에서 데이터가 전송되는 물리적인 경로
      • 예시 프로토콜(프로토콜가족): IEEE 802.3/4/5/11
        • 802.4 -> 토큰
        • 802.11-> 와이파이
          • 802시리즈: LAN 사이드의 브로드캐스트 네트워크 위한 프로토콜

Multiple access protocals

  • 단일 공유 브로드캐스트 채널
  • 노드에 의한 2개 이상의 동시 전송(shared medium): 간섭
    • 노드가 동시에 2개 이상의 신호를 수신하는 경우 충돌 다중 액세스 프로토콜
  • multiple access protocol(충돌피함)
    • 공유채널을 결정하는 분산 알고리즘(아닌경우도 있긴함), 즉 노드가 전송할 수 있는 시기를 결정하는 분산 알고리즘, 어떤 노드가 다음에 차지할 건가 정함 - control하려면 control위에서도 시그널 주고받아야 함.
    • 채널 공유에 대한 통신은 반드시 채널 자체로 이루어져야 한다!
      • 조정을 위한 대역외 채널 없음 - 사용자 데이터로 전송하는 채널과는 분리된 다른 채널(medium access: 대부분 out of bound 채널 x. access control 위한 cordination해야함 -> medium access control 위해 낭비되는 채널 가능성 o
    • 채널 partitioning(circuit switching방법 사용, shared 채널 multiple access를 위한 한 가지 방법, 분산 x, 액세스 위한 제어 x), by time(TDMA: 타임슬롯 나눔-> 싱크로나이즈 위한 overhead 발생), frequency(FDMA: 동시사용, band-band 사이 구분 작은 band-overhead), code(CDMA: code 나눔 멀티플 액세스)
    • random access(동적)
      • 보낸 데이터가 있는 사용자가 동적으로 채널 그루핑해서 사용 
      • 충돌 해결방식
        • ALOHA(인공위성 사용), CSMA(wifi, 이더넷에서 사용-딴 사람이 채널 쓰는지 체크 -> 채널 조용해질떄까지hold) 
        • 충돌감지(CD): 인터넷에서 사용되는 CSMA/CD  - 충돌 발생 여지 남겨놓음
          • 채널 조용하다는 거 동시에 감지 but 두개 이상의 노드가 발견 -> 둘이 동시에 채널 업데이트 -> 충돌발생-> 충돌한 둘 중 하나 고!
        • 충돌회피(CA): 802.11에서 사용되는 CSMA/CA, 그냥 충돌 아예 피함
    • taking turns(교대: 장점만을 합쳐서.): (폴링, 토큰 패싱-시간별로 돌아가면서 사용), 블루투스, FDDI, 토큰 링
      • 접근 컨트롤을 분산된 방법으로 하기위한 컨트롤 오버헤드 아님. time, frequency 나누기, 다양한 코드 위한 오버헤드임!

"taking turns" MAC 프로토콜

  • 채널 분배 맥 프로토콜
    • 부하가 높을 떄 효율적이고 공평하게 채널 공유
    • 저부하 시 비효율적: 채널 액세스 지연(높은 확률의 상태), 1/N 대역폭 활성 노드가 1개만 있어도 할당. 낭비 있음. 굉장히 부하 높으면 여러 사용자들이 한 채널을 다 사용하려 함( 이미 나눠놓은 쉐어를 사용할 게 없는 사람들도 모두 HOLD함 )-> 내 순서에 내 프리퀀시만, 내 코드만 사용해서 채널 액세스
  • 랜덤 액세스 MAC 프로토콜-위보다 신호 오버헤드 더 심함
    • 저부하에서 효율적: 단일 노드가 채널을 충분히 활용할 수 있음(다른 사용자가 별로 없는 경우)
    • 고부하: 충돌 오버헤드 발생- 서로 경쟁 ,이걸 deserve하기 위한 충돌 오버헤드 굉장히 커짐 
  • "교대"프로토콜
    • 두 가지의 장점을 모두 찾아보자~

"Taking turns" MAC 프로토콜

  • 폴링:
    • 마스터노드가 다른 노드를 차례로 전송하도록 초대함(돌아가며 slave polling->보낼 게 있으면 대답, 없으면 대답x. EX 블루투스
    • 일반적으로 덤 장치와 함께 사용
    • 우려
      • 폴링 오버헤드-폴하기 위해서도 shared medium해야함(partitioning보다는 오버헤드 적음)
      • 지연시간
      • 단일장애지점(마스터): 마스터가 fail -> 전부에게 데이터 보낼 수 없음

  • 토큰 패싱:
    • 제어 토큰이 한 노드에서 다음으로 순차적으로 전달됨(노드에서 노드로)
    • 토큰 메시지-자기에게 토큰이 오기를 기다렸다가 보낼 거 있으면 보내고 없으면 토큰패스
    • 우려
      • 토큰전달 오버헤드
      • 지연시간
      • 단일장애지점(토큰)

6.3 MAC주소와 ARP (address resolution protocal)

IEEE 802 STANDARDS

  • IEEE 802= 다음을 정의하는 LAN용 표준 제품군
    • 논리적 링크 제어(LLC)
    • 여러 MAC(미디어액세스 제어)하위계층
  • 링크계층서비스는 '어댑터"(예: 이더넷카드)에서 구현

MAC 주소(or LAN 주소)

  • 한 링크 건너갈 떄 사용, 물리적으로 링크 하나 건너가기 위해 필요(e2e로 FRAME 실어나름)
  • 32비트 IPv4주소(or 128비트 IPv6 갖고 네트워크->목적지 갈 수 있음)
    • 인터페이스용 네트워크 계층 주소
    • 레이어 3(네트워크계층) 포워딩에 사용
  • MAC(또는 LAN또는 물리적 또는 이더넷)주소: 
    • 기능: 한 인터페이스에서 물리적으로 연결된 다른 인터페이스로 프레임 가져오는데 "로컬"로 사용됨(IP주소 지정 의미에서 동일한 서브넷)
    • 48비트 MAC주소(대부분의 LAN(프로토콜-IEEE에서 만듦)의 경우)NIC ROM에 레코딩(여기에서 관리, 제조할 때 MAC adress 실림), 떄로는 소프트웨어 설정 가능(영구적으로 심겨져있음. )네트워크 인터페이스 만들때 사용, 지금까지 사용했던 주소 사용하면 안됨
      • 고유: IEEE에서 MAC주소 공간 관리
      • 2^48 개의 가능한 MAC주소-고유식별자 ex 주민등록번호-어딜가든 동일하게 남아있음. *ip주소는 정말 adress(다른 포트에 가서 내 노트북 물리면 내 노트북의 아이피주소 달라짐. 집에서는 집을 인터넷에 연결해주는 ISP가 동적으로 IP주소 할당. 학교-> 학교DHCP가 "할당 -> location에 연관돼서 달라짐
      • 계층적 구조 없음(컴퓨터가 어디에 있든 동일한 MAC주소 사용할 수 있음)
        • EX. IA-2F-BB-76-09-AD,broadcast MAC addr.: FF-FF-FF-FF-FF-FF(shared medium에 이거 달면 medium에 연결돼있는 모든 호스트들이 다 볼 수 있게 됨.)
          • 12개의 헥사데시멀숫자, 2개씩 dash로 연결.