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에서 확인 불가.
- frame, link access
- 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
- 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.
- TDMA: Time Division Multiple Access
- !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.
- 최대한 쓸 수 있다면 Full Capacity로 사용.
- Taking Turns MAC Protocols
- Polling
- slave와 master 노드 존재.
- master 노드가 slave 노드를 순서대로 polling 하도록 함.
- master가 죽으면 아무것도 가능하지 않음.
- Token Passing
- token을 서로 넘기기.
- Polling
✔️ LAN
- MAC Address and ARP
- MAC 주소: 물리적으로 연결된 노드에 frame을 보낼 때 쓰는 주소.
- 48비트 길이의 주소.
- NIC ROM에 작성되어 있음.
- Hop을 뛸 때, IP 주소는 바뀌지 않지만, MAC 주소는 계속 변경.
- MAC 주소: 물리적으로 연결된 노드에 frame을 보낼 때 쓰는 주소.
- 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를 통해 전송해야함.
- SW적으로 logically하게 broadcasting domain을 나누기.
- L2 디바이스
✔️ 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 서버는 라우터에 붙어 있다.
- 요청사항
- www.google.com 페이지를 불러와라.
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을 추출해 웹페이지 출력.