CS 지식/NTW(네트워크)

[네트워크 6편] Link Layer

정리왕이되자 2023. 7. 26. 21:21

네트워크 6편 링크 계층은 총 6개의 내용으로 구성됩니다.

 

1. Link Layer: Introduction

2. Multiple Access Protocols

3. LAN (Local Area Network)

4. MPLS (Multi Protocol Label Switching)

5. DataCenter Networking

6. 웹 페이지 요청 처리 과정 총 정리!!

 

✔️ Link Layer: Introduction

  • 링크 계층의 패킷은 프레임.
  • 물리적으로 직접 연결되어 있는 노드 간의 reliable transfer. (end to end 가 아닌 물리적 이웃 간)
  • end to end 전달하는 것은 다 다른 타입의 링크.
  • 유선 링크에서는 error dection, correction에 신경을 덜 써도 되지만, 무선에서는 중요함.

  • Link Layer Services
    • frame, link access
      • channel 접근
      • MAC 주소 가지고 src와 dst 확인.
      • datagram에 header와 trailer 붙여서 frame 만들기.
    • Reliable Delivery between Adjacent Node
      • low bit error link.
    • Why link layer and End to End check both?
      • Queueing Loss는 Link Layer에서 확인 불가.
  • Where is the link Layer Implemented?
    • Network Layer 까지는 OS에 구현.
    • Link Layer와 그 아래는 NIC에 구현.

 

✔️ Multiple Access Protocols

  • Multiple Access Link Protocols
    • point to point.
    • broadcast (shared wire or medium) -> 802.11 wireless LAN.
    • 2개 혹은 그 이상의 transmission이 동시에 발생하면 interference이고 collision이 발생.
    • out of band (데이터 전송 채널 != 데이터 제어 채널)
    • in of band (데이터 전송 채널 = 데이터 제어 채널)
  • MAC protocols: taxonomy
    • 종류
      • channel partitioning
        • 작은 공간으로 channel 나누기.
      • random access
        • collision 발생 가능.
        • 다시 transmit 재개 방향의 recover.
      • taking turns.
        • token이 있는 곳이 받도록 함.
    • Channel Partitioning - TDMA, FDMA : Division Multiple Access
      • TDMA: Time Division Multiple Access
        • 순서대로 돌아가며 시간 Slot을 차지하면서 Channel에 Access.
        • unused slot goes idle.
      • FDMA: Frequency Division Multiple Access
        • 주파수 분할해서 해당 주파수 점유, 시간 분할이 아님.
        • unused transmission time in frequency goes idle.
    • !multiple accss problem: 다수의 송,수신 노드들이 공유하는 브로드 캐스트 채널의 접속 문제.
    • !multple access Protocol: 공유되는 브로드캐스트 채널로 보내는 노드들의 전송 조정.
  • Random Access Protocol
    • 최대한 쓸 수 있다면 Full Capacity로 사용.
      • TDMA와 FDMA는 미리 정해진게 있지만, Random Access는 없다.
      • 2개 혹은 그 이상의 노드들이 동시에 전송하면, 충돌!
      • Random Access MAC Protocol은 collision detect and recover!
      • ex) ALOHA, CSMA, CSMA/CD
    • Slotted ALOHA
      • Slot의 시작 부분에서 전송.
      • 충돌이 발생하면, 다음 Slot에서 전송.
      • 확률에 따라 전송할 지 말지 결정.

      • 장점
        • single active node가 full rate로 사용 가능.
        • coordination X, highly decentralized
        • simple.
        • beginning 맞추려면 clock이 존재.
    • unslotted ALOHA
      • simpler, no synchronization.
      • frame이 도착하면 바로 transmit.
      • 나머지는 slotted ALOHA와 같다.
        • Collision이 발생하면 일정시간동안 대기.
      • Slotted는 slot은 아예 안 겹치면 되는데, unSlotted는 앞뒤로 겹치는 게 있으면 안됨.
    • CSMA: Carrier Sense Multiple Access
      • listen before transmit.
      • channel이 idle 하다면, 그때 transmit.
      • 이미 있다면 끼어들지 않기.
    • CSMA/CD: Collision Detection
      • collision detect 시에는 stop! (transmit 멈추기)
      • CD는 유선 링크에서는 쉽지만, 무선 링크에서는 어려울 수 있다.
        • 유선은 energy 측정이 쉽지만, 무선은 distance에 따라 signal strength가 변하기 때문.
      • abort하고 Binary Exponential Backoff 상태로 진입. (기다렸다가 재전송)
      • ALOHA보다 better performance, simple and cheap.
  • Taking Turns MAC Protocols
    • Polling
      • slave와 master 노드 존재.
      • master 노드가 slave 노드를 순서대로 polling 하도록 함.
      • master가 죽으면 아무것도 가능하지 않음.
    • Token Passing
      • token을 서로 넘기기.

 

✔️ LAN

  • MAC Address and ARP
    • MAC 주소: 물리적으로 연결된 노드에 frame을 보낼 때 쓰는 주소.
      • 48비트 길이의 주소.
      • NIC ROM에 작성되어 있음.
      • Hop을 뛸 때, IP 주소는 바뀌지 않지만, MAC 주소는 계속 변경.
  • ARP: Address Resolution Protocol
    • IP 주소를 알고 있다면, MAC 주소는 어떻게 아는가?
    • ARP Table: IP 주소, MAC 주소, TTL (주소 매핑 시간)
      • 해당 테이블은 호스트와 라우터에 있다.
    • 예시) 같은 LAN 내에서
      • A에서 B로 전송.
      • A는 B의 IP 주소는 알고 있지만, MAC 주소는 알지 못함.
      • A가 ARP query를 broadcasting.
      • B가 알아듣고 reply를 보냄. (= Unicast)
      • A는 B의 IP주소와 MAC 주소를 본인의 ARP 테이블에 저장.
    • 예시) 다른 LAN끼리
      • A에서 B로 전송하고자 함.
      • B의 IP 주소를 알고 있고, Gateway 라우터의 IP주소와 MAC 주소를 알고 있을 경우,
      • A가 IP주소는 B의 IP주소가 담기고 MAC 주소는 Gateway MAC 주소가 담긴 패킷을 만든다.
      • Gateway Router가 그걸 받으면 B의 방향으로 Forwarding 함.
  • Ethernet
    • simple, cheap and multispeed.
    • Ethernet Topology
      • Bus
      • Star, Switch - collision이 없음.
  • Ethernet Frame Structure
    • unreliable, connectionless
    • CSMA/CD with binary backoff
    • preemable | payload | CRC
      • preemable: recvr와 sender 간의 clock rate을 맞추기 위함.
      • CRC는 수신 어댑터로 하여금 프레임에 오류가 생겼는 지 검출하기 위함.
  • Ethernet Switch
    • L2 디바이스
      • store and forward frame.
      • host는 switch가 존재하지 않는 것처럼 느낌. 
      • plug and play, self-learning.
      • selectively forwarding (= unicast)
      • switching: collsion 없이 가능.
        • switching table을 가짐. (MAC 주소, link 주소, 시간)
      • switching table entry는 어떻게 생성되는가?
        • self-learning
        • 스위치 frame이 올 때 link를 기억함.
        • unknown하다면 flood.
        • 알고 있다면, selectively forwarding.
    • Switches and Routers
      • Both Store and Forward.
      • Both Forwarding Table.
        • Switch: MAC 주소, ARP, Flooding, self learning
        • Router: IP 주소, IP, Routing Algorithm(OSPF, BGP)
    • VLANS
      • SW적으로 logically하게 broadcasting domain을 나누기.
        • single broadcasting domain의 경우, LAN으로 flooad.
      • 서로 다른 VLAN 간에는 router를 통해 전송해야함.

 

✔️ MPLS (Multiple Protocol Label Switching)

  • MultipleProtocol Label Switching
    • IP 레이어와 Link 레이어 사이의 레이어 (2.5 Layer)
    • MPLS의 헤더에는 label이 존재.
    • packet switching 시에 IP주소를 보지 않고 label을 보고 forwarding 함.
  • MPLS vs IP routing
    • IP routing: find the shortest path to dst by dst address.
    • MPLS: path to dst can be based on src and dst address.
  • MPLS Signalling
    • flooding 쓰는 프로토콜(OSPF)등을 이용해서 사용.
    • 나가는 쪽의 label을 적어서 전달.

 

✔️ DataCenter Networking

  • DataCenter Networks
    • DataCenter 끼리의 Networking.
    • 서버들의 연결.
    • challenges
      • multiple application, each serving massive numbers of client.
      • managing/loading is important.
    • LoadBalancer: application layer routing.
      • external client request 받음.
      • workload in data center 분배.
      • external client response 하기.
      • NAT 역할 및 보안.
    • Tier 1과 Tier 2의 스위치가 트리 구조의 한계를 벗어나기 위해 interconnected 하게 연결.
    • 스위치와 라우터의 차이
      •  스위치
        • 목적지로 출발한 데이터를 중간에 적합한 경로로 스위칭해주는 역할을 하는 것.
        • 데이터 링크 계층에 속함.
        • MAC 주소 기반 동작.
      • 라우터
        • 목적지로 가는 적합한 경로를 찾아주는 라우팅 기능.
        • 네트워크 계층에 속함.
        • IP 주소 기반 동작.
      • 둘의 차이는?
        • 1. 계층의 차이
        • 2. 브로드캐스트 도메인 구분
          • 스위치는 브로드캐스트 도메인 구분을 하지 못하지만, 라우터는 구분 가능하다.

 

🤩 웹 페이지 요청 처리과정 총정리 🤩

  • 가정
    • 학생이 학교 Ethernet에 연결.
    • 학교 네트워크에는 DNS 서버가 없고, 타 네트워크에 존재.
    • DHCP 서버는 라우터에 붙어 있다.
  • 요청사항

 

1. DHCP

  • Laptop의 OS는 DHCP query를 생성.
    (이는 UDP Segment -> IP datagram (0.0.0.0. 255.255.255.255)로 세팅-> 프레임 으로 캡슐화)
    MAC 주소에는 (Laptop의 MAC 주소, 브로드캐스트 주소)
  • 스위치는 해당 프레임을 브로드캐스트.
  • 라우터에서 해당 프레임을 수신하고, IP datagram을 열어본다.
    • 브로드캐스트 IP는 상위 계층에 의해 처리되어야 함을 의미.
    • UDP로 demux되어 DHCP query를 꺼내봄.
  • DHCP가 Laptop의 IP 주소, 서브넷 마스크, DHCP의 IP 주소,  DNS 서버의 이름과 주소, Gateway IP 주소를 DHCP reply에 담음.
  • 이걸 Laptop에서 받으면, IP forwarding table에 작성. 

2. ARP

  • Laptop의 OS는 DNS query 생성 -> UDP 세그먼트 -> 데이터그램 -> 프레임 생성.
  • Gateway의 IP 주소는 알지만, MAC 주소는 알지 못하는 상태.
  • ARP를 통해 Gateway의 MAC 주소를 알아오는 것을 진행.
  • 스위치로 ARP query를 브로드캐스트. (모든 장치로 전달)
  • ARP query의 IP 주소가 본인의 IP주소와 같은 경우, MAC 주소를 담아 ARP reply 전송.
  • Laptop의 Gateway의 MAC 주소를 알고 ARP table에 저장.
  • 이제 Laptop이 IP 주소는 DNS 서버의 주소로 MAC 주소는 Gateway MAC 주소로 지정해서 전달.

3. DNS and Intra-Domain Routing

  • Gateway Router는 DNS query가 포함된 데이터그램의 IP주소를 forwarding table에서 찾아 출력 인터페이스 결정.
  • DNS 서버가 있는 네트워크 라우터는 데이터그램과 포워딩 테이블을 보고 DNS 서버로 출력 인터페이스 결정.
  • DNS 서버는 IP 데이터그램에서 DNS query 추출해 IP 주소에 해당하는 자원레코드를 검색.
  • 해당 내용을 DNS reply에 넣고 Laptop으로 전송.

 4. TCP and HTTP

  • 이제 Laptop은 HTTP GET을 보내는 것에 사용할 TCP 소켓 생성.
  • 우선, google의 서버에 있는 TCP 소켓과 3-way-handshaking 그리고 포트 80번을 가지는 TCP SYN 세그먼트 생성해 전송.
  • forwarding table에 따라 google 서버로 도착.
  • TCP SYN 패킷은 포트 80번의 welcom socket으로 demux 되고 connection socket은 두 호스트 사이의 TCP 연결을 위해 생성.
  • TCP SYNACK 세그먼트 전달.
  • TCP SYNACK 도착하면 Laptop의 TCP 소켓으로 OS에서 demux.
  • Laptop은 URL이 들어있는 HTTP GET request 메세지 생성해, 소켓으로 보내고 이는 TCP 세그먼트의 payload가 되어 전달됨.
  • google의 HTTP 서버는 GET을 읽고 HTTP 응답을 생성해 콘텐츠를 Body에 넣어 TCP 소켓에 전달.
  • LapTop의 브라우저는 소켓에서 HTTP response 메세지를 읽어 바디에서 html을 추출해 웹페이지 출력.