도입
Internet
- 인터넷은 라우터나 스위치와 같은 장치들로 연결되는 네트워크 조합이다.
- 만약 패킷이 호스트에서 다른 호스트로 전달되면, 이러한 네트워크들을 통과하는 경로가 필요하다.
![](https://velog.velcdn.com/images/jyj1206/post/ff0e7b97-cb8f-4d98-aa2d-d34c123905ea/image.png)
노드와 링크
- 한 호스트의 프레임은 다른 지점에 도달하기 위해 LAN과 WAN과 같은 많은 네트워크를 통해 전달된다.
- 호스트와 라우터를 노드
- 그 사이의 네트워크를 링크
- data-link layer에서의 통신은 node-to-node로 이루어진다.
- network layer에서의 통신은 end-to-end
![](https://velog.velcdn.com/images/jyj1206/post/ff7003e1-9b5e-41a7-9279-76e553428a12/image.png)
서비스
data-link layer가 제공하는 서비스
- Framing : frame에 datagrame을 encapsulation
- Flow Control : 소비되는 frame의 속도에 따라 생산되는 frame 속도 제어
- 네트워크마다 다른 속도를 파악해서 데이터를 보내는 속도 조절
- Error Control : error 발생 여부를 알아내고 폐기(discard)하거나 재전송(retransmit)
- Congestion Control : 링크가 frame에 의해 혼잡해 질 수 있다. 이를 제어
- 대부분의 data-link layer에서는 congestion control을 직접 사용하지 않음
![](https://velog.velcdn.com/images/jyj1206/post/b561f369-a43b-428b-86ff-2b180f5acec1/image.png)
링크의 두 가지 유형
- Point to Point Link : 서로 연결된 2개의 장치가 전용으로 사용
![](https://velog.velcdn.com/images/jyj1206/post/ad2d19a0-ff1e-458c-a484-219aa6387826/image.png)
- Broadcast Link : 링크의 용량 중 일부만을 사용
![](https://velog.velcdn.com/images/jyj1206/post/c3a5f067-db41-4e32-9d8d-fc35c9462bce/image.png)
1) bus형 - 케이블을 공유해서 사용
- Tap : 데이터를 보내주고 받음, transeive라고도 부름
2) star형 : 허브에 연결
3) 기지국 : 무선으로 연결
Data-Link Layer의 두 부계층
- Data Link Control(DLC)
- Media Access Control(MAC) : broadcast에서만 필요
![](https://velog.velcdn.com/images/jyj1206/post/d1592939-29d7-46ea-94d5-61aade39c4f8/image.png)
Data-Link Layer의 Addressing
![](https://velog.velcdn.com/images/jyj1206/post/25c49995-d179-46f4-8d1a-e6c94784e84d/image.png)
IP와 link-layer address
- frame이 한 link에서 다른 link로 갈때마다 link layer의 주소가 변경된다.
![](https://velog.velcdn.com/images/jyj1206/post/827974a4-b25a-4b0d-8a5d-620adad36cb7/image.png)
- 주소 순서
- IP 주소 : 송신측-수신측
- link-layer 주소 : 수신측-송신측
주소의 세가지 유형
link-layer 프로토콜은 3가지 유형의 주소를 정의한다.
1) Unicast Address : one-to-one 통신
- 2번쨰 자리가 짝수
- 라우터의 각 호스트 또는 각 인터페이스에는 unicast 주소가 할당됨
![](https://velog.velcdn.com/images/jyj1206/post/c1513241-9060-46bf-b4ea-6cdf4162daa7/image.png)
2) Multicast Address : one-to-many 통신 (group)
![](https://velog.velcdn.com/images/jyj1206/post/0cedbb9e-3b00-4dcd-8862-5deb4a307376/image.png)
3) Broadcast Address : one-to-all 통신
- 48비트의 모든자리가 1
- frame은 link 내에 모든 entity에게 전달된다.
![](https://velog.velcdn.com/images/jyj1206/post/e7265e61-0ba9-43cc-aef5-0a253eb80047/image.png)
Address Resolution Protoccol (ARP)
- IP 주소는 frame을 다음 link로 이동하는데 도움이되지 않는다.
- 다음 노드에 link-layer 주소가 필요하다.
![](https://velog.velcdn.com/images/jyj1206/post/c942d3a8-2ef4-42a7-baef-65b06b8e6d02/image.png)
- Address Resolution Protocol
- 중간 노드의 link-layer의 주소를 알려준다.
- ARP는 IP 주소를 해당 link-layer의 주소로 매핑하여 data-link layer에 전달
- network layer에 속한다.
![](https://velog.velcdn.com/images/jyj1206/post/c7f79e25-984f-4bdd-85f4-7e90c7e77709/image.png)
![](https://velog.velcdn.com/images/jyj1206/post/c8b94b62-4ae8-43d4-ac43-e1dfe0d5e69a/image.png)
-
Request
- A는 B의 ip주소를 알고 있음
- link-layer의 주소를 알아내야함
- 누군지 모르니 broadcast를 함
-
Reply
- B의 link-layer 주소를 unicast로 답변
-
ARP packet : 28 바이트
![](https://velog.velcdn.com/images/jyj1206/post/28a3201b-b306-4c1c-bc44-25dd537f284e/image.png)
- ARP packet은 data-link layer에서 frame으로 encapsulation된다.
- Eternet frame
- Eternet frame 길이는 64 바이트 (512 bit)
- 데이터에 최소 길이는 46바이트, 최대 1500바이트
- 만약 데이터가 46바이트보다 작으면 0을 채워줌
![](https://velog.velcdn.com/images/jyj1206/post/9d7aebed-d775-44e1-996b-805ebf54651a/image.png)
ARP requst와 response message 예시
- A host
- Ip 주소 N1
- physical MAC 주소 L1
- B host
- IP 주소 N2
- physical MAC 주소 L2 (A host는 모름)
![](https://velog.velcdn.com/images/jyj1206/post/18c3ae17-c8dd-4b8d-bcaa-251d2e2f20c1/image.png)
![](https://velog.velcdn.com/images/jyj1206/post/3423ed9b-b90d-433f-8ee7-85c79d949536/image.png)
- ARP caching
- A가 ARP를 사용하여 시스템 B의 link-layer 주소를 얻으면, A는 해당 주소를 캐시 메모리에 저장한다.
- A의 ARP 캐시에는 20분 동안 저장된다.
- A는 이 캐시 정보를 사용하여 B에게 프레임을 보낸다.
통신 예제
- data-link lyaer에서 어떻게 통신이 일어나고, 어떻게 link-layer 주소를 찾는가?
![](https://velog.velcdn.com/images/jyj1206/post/9bc656a3-ff03-4a4c-a9f7-0ac68e48483e/image.png)
1) Alice → R1
![](https://velog.velcdn.com/images/jyj1206/post/b00b18f8-2dc7-4cc2-a4b5-92d15179998b/image.png)
- forwarding table을 조사해서 다음 목적지의 IP 주소를 찾음
- 해당 IP 주소를 통해 ARP를 가지고 다음 목적지의 MAC 주소를 받아옴
2) R1 → R2
![](https://velog.velcdn.com/images/jyj1206/post/3842376d-af1f-4072-9ab9-5160588bd195/image.png)
3) R2 → Bob
![](https://velog.velcdn.com/images/jyj1206/post/53375add-cb81-4239-adff-9d4465a5eea4/image.png)
4) Bob
![](https://velog.velcdn.com/images/jyj1206/post/3047d0f6-0eba-4d2c-b253-3ce0633b5816/image.png)