Node 와 Link
데이터 링크 계층에서 통신은 Node-to-Node라고 표현한다.
둘중에 하나는 분명 데이터를 보내는 쪽을 가리킬거고, 다른 node는 데이터를 받는 쪽을 가리킬것이다.
그리고 데이터는 node들을 연결해주는 link를 통해 전송된다.
Two Categories of Links
데이터 링크 계층은 통신 전달되는 수단(케이블, 공기등의 매체)이 사용되는 방식을 제어한다.
무슨 뜻이냐면, 데이터 링크 계층은 medium이 가진 모든 용량(대역폭)을 다 사용할수도 있꼬, 일부만 사용할 수도 있다는 말이다.
이런 매체를 어떻게 제어하는가에 따라 point-to-point link(1대 1로 연결, 매체의 일부 용량 사용) 나 broadcast link(1 대 전체, 매체의 전체 용량 사용)로 나뉘게 된다.
Two sublayers
데이터 링크 계층은 그 안에서 두 개의 sublayer로 나뉠 수 있다.
하나는 DLC(Data Link Control) 계층, 다른 하나는 MAC(Media Access Control) 계층이다.
각 계층은 다른 데이터 링크 계층과 구별되기 위해서 주소(address)를 사용한다.
위 그림을 보면 broadcast link 둘다 사용하고, point-to-point link는 DLC 계층만 사용한다는 걸 알 수 있다.
Link Layer Address
위에서 Frame이라고 되어있는 것은 통신을 통해 이동되는 데이터이다.
단순히 보내려는 정보(Data)만 담고있지 않다.
Data 왼쪽의 N1, N8은 출발지 node 정보와 도착지 node 정보를 의미한다.
따라서 어떤 node에서라도 출발지 정보와 도착지 정보 그리고 Data는 바뀌지 않는다.
출발지()의 왼쪽을 보면 의 형식으로 회색 박스가 있다.
이건 데이터 링크 계층의 주소(Link Layer Address)를 의미한다.
Frame의 이동은 L1,L2 순서로 데이터 링크 계층을 밟고, 첫 번째 라우터(R1)를 만난다.
이동하면서 라우터를 만나면 달고왔던 L2,L1을 떼어내고 그에 맞는 데이터 링크 계층으로 보내고 L5,L4 순서로 달고 두 번째 라우터인 R2로 간다.
Three types of addressess
Unicast Address
간단하게 말하면 1 대 1 통신을 위한 주소이다.
우리가 사용하는 휴대전화나, 회사들의 서버같이 host라고 불리는 것과 router unicast address를 가진다.
Multicast Address
1 대 다수에 대한 통신을 위해 만들어졌다.
예를 들어, 특정 그룹만 지정해서 메시지를 보내고 싶다면 multicast address 를 사용해서 통신을 시도한다.
Broadcast Address
1 대 전체를 위한 통신을 위해 만들어졌다.
마치 방송을 하는 것처럼 본인과 같은 네트워크에 있는 사람들한테 메시지를 보내고 싶다면 broadcast address를 사용한다.
ARP(Address Resolution Protocol)
어떤 노드가 링크의 다른 노드로 보낼 IP 데이터그램을 가지고 있을 때마다, 그 노드는 수신 노드의 IP 주소를 가지고 있다.
그러나 다음 노드의 IP 주소는 링크를 통해 프레임을 이동하는 데 도움이 되지 않고, 다음 노드의 링크 계층 주소가 필요하다 이때 도움이 되는게 ARP이다.
ARP 요청을 보낼때는 broadcast 주소를 통해 보낸다. (모든 곳에 다 전송)
이 ARP 요청을 받은 node들은 본인의 IP 주소와 비교하는 과정을 거친다.
만약 다르다면 해당 요청은 버려진다.
본인의 IP 주소와 같다면, ARP 답장을 unicast로 보낸다. (ARP요청한 node에게만 전송)
ARP Packet
요청이 보내질 떄 사용되는 데이터(Packet)은 다음과 같다.
Hardware라는 이름이 붙으면, LAN, WAN에서 사용되는 프로토콜이라는 말이고
Protocol 이라는 이름이 붙었으면, Network Layer에서 사용되는 프로토콜이라는 말이다.
ARP요청을 통해 알아내고싶은건, 도착지 node의 MAC주소이므로(데이터 링크 계층의 주소)
이 부분을 비워놓고 요청(Operation type이 1 : Request)을 보낸다.
답장(Operation type이 2 : Reply)을 보낼떄는 답장을 보내는 node에서 데이터가 출발하기 때문에
Source hardware address부분에 우리가 원하는 링크 주소가 들어있게 된다.
A는 B의 IP주소만 알고있는 상태다.
여기서 어떤 링크를 통해 전송되어야 하는 것은 모르므로 ARP요청을 모두(broadcast)에게 보내봐야한다.
위 그림에서 Destination은 M(Broadcast address)가 되어있고, Source는 A로 되어있다.
또한 Data는 위에서 말한대로 ARP Packet이 들어있으며, 그 내부에 도착지에 대한 링크 주소(MAC address)는 0으로 채워져있다.
또한 요청을 보내기 때문에 회색 네모칸으로 되어있는 Operation type 부분은 Request에 해당하는 1이 채워져있다.
답장을 받을때를 보면, 출발지(Source)는 B이고 도착지(Destination)은 A이다.
또한 링크 주소(MAC address)가 L2라는 것이 Packet의 Source hardware address 부분에 채워져서 오게 된다.
더 자세한 예시를 들면
네트워크가 위와같이 구성되어있다고 할 때, 엘리스는 밥에게 데이터를 보내려고 한다.
엘리스는 밥의 IP주소밖에 모르기 때문에 정확하게 어떤 링크를 통해 보내야하는지 모른다.
엘리스는 밥의 MAC 주소를 모르기때문에 우선 Forwarding table이라는 곳에 가서 𝑁𝐵(밥의 IP주소)으로 가기위해 어떤 곳(node, IP 주소를 의미)으로 보내야하는지 물어본다.
Forwarding table은 라우터(𝑅1)의 IP 주소(𝑁1)를 알려준다.
그럼 엘리스는 받은 IP 주소로 보내기 위한 길을 알기 위해 𝑅1 라우터에게 ARP요청을 보낸다.
라우터는 ARP 응답으로 길(링크 주소, 𝐿1)을 알려준다.
그럼 엘리스는 라우터한테 밥에게 보낼 데이터를 담아서 보내게 된다.
이게 저 위의 사진이 의미하는 이야기이다.
𝑅1 라우터도 Forwarding table에게 𝑁𝐵(밥의 IP주소)으로 가기위해 어떤 곳으로 보내야하는지 물어본다.
1. Forwarding table은 라우터(𝑅2)의 IP 주소(𝑁3)를 주고
2. 𝑅1 라우터는 𝑅2 라우터와 ARP 요청을 주고 응답을 받은 다음
3. 𝐿3링크를 통해 엘리스의 데이터를 𝑅2 라우터에게 보내게 된다.
𝑅2 라우터도 Forwarding table에게 𝑁𝐵(밥의 IP주소)으로 가기위해 어떤 곳으로 보내야하는지 물어본다.
근데 이번엔 밥의 IP 주소가 나와서 결국에는 밥의 링크 주소를 알아낸 후, 성공적으로 엘리스의 데이터를 보내게 된다.
ARP 요청은 밥에게 한번에 갔다가, 다시 엘리스로 응답이 돌아오는 구조가 아니라
다음 노드가 어딘지를 계속 물어보면서 데이터를 보내는 과정중 하나라는 것을 알 수 있다.
Caching
매번 ARP로 주변 node들한테 다 요청 보내는게 너무 비효율적이다.
'맨 처음 했을때 기억해놨다가, 나중에 또 쓰면 안되나?' 아이디어를 적용해 생긴 것이 Caching이다.
위에서 제시한 해결책 그대로 MAC주소를 기억해놓는다는 말이다.
근데 이걸 계속 기억해놓지는 않는다.
MAC주소는 사실 어떤 장치(지금은 넘어가자)가 만들어질때 부여되는 식별자다.
따라서 이 장치를 갈아끼거나 하면, 저장된 링크로 보내도 받는 곳이 없어진다.
따라서 20분마다 한번씩 저장한걸 없앤다.
Things to know about ARP
만약 존재하지 않는 목적지에 대해 ARP요청을 보내게 되면 어떡하지?
--> 일정 시간이 지나도 응답이 없으면, 그냥 포기한다..
만약 본인한테 ARP요청을 보내면 어떡하지?
--> 정상적인 요청으로 응답도 잘 온다. IP 주소를 잘 받았는지 확인하는 용도로 쓰인다.
만약 요청하지도 않은 ARP응답을 받으면 어떡하지?
--> Caching된 정보를 덮어씌운다(!!). 이를 ARP poisioning이라고 하고, static ARP를 사용하거나, 암호화를 해서 피할 수 있다.
Reference
https://ideadummy.tistory.com/111
'🖥️ Computer Science > Data communication' 카테고리의 다른 글
[데이터 통신] Media Access Control (0) | 2024.05.22 |
---|---|
[데이터 통신] Data Link Control (2) | 2024.05.21 |
[데이터 통신] Error Detection and Correction - 2 (0) | 2024.05.07 |
[데이터 통신] Error Detection 과 Correction (0) | 2024.04.16 |
[데이터 통신] 아날로그 전송 (1) | 2024.04.13 |