데이터 통신 - 7. Introduction to Data Link Layer

ensalada.de.pollo·2024년 5월 13일
0

Datacommunication

목록 보기
1/1

Data-link layer

같은 네트워크에 속해있는 device끼리의 통신을 다룹니다.

멀리있는 애들 끼리는 network layer protocol만 같아도 됩니다.
아래 것들은 같은 네트워크 내에 있는 애들끼리만 같으면 되기 때문이죠

가운데 놈을 보면 link가 3개가 있습니다.
이 3개의 link를 구분할 수 있는 식별 주소가 필요한데, 이 주소를 data-link layer라고 합니다.
그래서 가운데 놈의 data-link 주소는 3개입니다.
(src, dest는 data-link 주소가 1개가 되겠죠)

하나의 link 안에서 통신할 때에는 IP주소가 필요하지 않고
data-link 주소만 있으면 됩니다.

다른 네트워크로 넘어갈 때 IP주소가 필요한 것이죠. (목적지를 찾는 용도)
이에 대해서 조금 더 자세히 알아보도록 하겠습니다.

a. 다수 b. 일대일

Media access control sublayer?
동시에 보내면 충돌이 발생할 수도 있습니다.
이런 충돌을 막기 위해서 media access control가 존재합니다.
일대일 통신에서는 충돌이 발생할 일이 없으니까, 필요가 없고 broadcast link에서만 이러한 기능을 사용합니다.

조금 더 자세한 내용은 다음 장에서 알아보도록 하겠습니다.

(broadcast link가 아니라고 가정하겠습니다)

N1은 나의 주소이고, N8은 다른 사람의 주소입니다.
이 주소는 절대로 바뀌면 안됩니다.
network address이기 때문에 이건 컴퓨터 네트워크에서 자세히 알아볼 예정입니다.
앞에 있는 L1 L2 주소는 다 다릅니다. 이게 바로 data-link 주소인데요, 하나의 네트워크 안에서 사용하는 주소입니다.

R1을 보면 L2가 있습니다. 여기서 L1과 L2를 이어주는 것이구나 생각하면 될 것 같습니다.

ARP Protocol

link-layer에서 사용하는 주소
Network 주소를 가지고 나의 link 주소를 찾아야 하는 protocol입니다.

Request와 reply로 연결할 수 있습니다.
IP주소는 알고 있다면 <- 이에 해당되는 link주소가 무엇인가요? 라고 물어볼 수 있는 것이죠

Request: broadcast로 모든 애들에게 다 보냅니다
Reply: 해당되는 애만 대답을 하면 됩니다(unicast)

header 각각에 값을 집어넣고 보내게 되면, 받는 쪽에서 이를 보고 어떻게 처리해야 할 지를 정합니다.

Request는 당연히 요청하는 애가 보내고,
source hardware address, source protocol address를 채워서 보내게 됩니다.

destination hardware address(link 주소)를 알아내야 합니다.
destination protocol address(IP)는 물론 알고 있습니다.

Request(1)을 받은 쪽은
destination protocol address를 확인하고 자기 것에 해당하면,
source는 자기 주소로 채우고,
destination은 request를 보낸 애 정보로 채우고,
operation에 reply(2)를 적어서 보냅니다.

Multicast frame이란?

message의 형태는 여러가지입니다.
보통 message를 보낼 때에는 1명이 1명에게 보냅니다.
이를 Unicast라고 합니다.

만약, 1명이 n명에게 보낼 때 Unicast 방식을 사용하면, 메세지를 n번 보내야 합니다.
이런 번거로움을 줄이기 위해서 한 번에 여러 명에게 보낼 수 있게끔 합니다.
이를 Broadcast라고 합니다. (긴급/재난 문자 또는 방송 등)
broadcast 방식을 사용할 때 보내는 주소는 보통 1111... 입니다.

만약 n명 중에서 m명에게만 보내고 싶다... (즉, 모든 이 아닌 특정 어떤에게 보내는)
하는 것을 Multicast라고 합니다.

Alice가 Bob한테 ARP를 날린다?
ARP는 같은 네트워크 내에서 link주소를 획득하기 위해 사용하는 것입니다.
같은 네트워크가 아니기 때문에 bob한테 ARP를 날리게 되면 받아올 수가 없는데, 이때 ARP는 link에게 날립니다.

Alice -> R1 에게 ARP
R1 -> R2 에게 ARP
R2 -> Bob 에게 ARP
이런 식으로 ARP를 날리게 되는 것인데,
이에 대해서 알아보고자 합니다.

Alice의 layer

Bob이 다른 네트워크에 있다고 판단했다?
자기랑 연결되어 있는 Router에게 ARP를 날린다.
여기서 Router의 Link 주소를 얻게 된다.

R1의 layer

R2에게 ARP를 날립니다. 여기서 R2에게서 Link 주소를 얻습니다.

R2의 layer

Bob이 내 밑에 있다는 걸 알았으니까 Bob에게 unicast로 message를 날립니다.

Bob의 상황

Caching

Broadcast로 보냈을 때, 내 것이 아니면 discard하는 방식은 왜 안 되는가?

boradcast는 매번 데이터를 보냅니다.

20개의 node가 존재하면, 매번 20개에 해당하는 node에게 message를 전송해야 하고, 이는 매우 비효율적입니다...

ARP로 보내고 주소를 얻어서 unicast로 보내는 것이 더 효율적이겠죠

만약 보내야 되는게 여러 명이면 broadcast 방식이 효율적일 수는 있습니다.

ARP Cache

router에게 내가 매번 ARP를 보내야 되는 것인가?
-> 굳이 그럴 필요는 없습니다! 한 번만 날리고 받은 것을 저장하면 됩니다.

근데 link 주소가 변할 수도 있는가?
-> hardware address는 router의 network card에 저장이 되어 고정이 되어 있습니다. 그렇기 때문에 network card가 변경되면 바뀔 수도 있습니다.

cache 방식으로 table에 mapping이 되는데, 보통 20분이 지나면 expire 됩니다.
table에 주소가 있으면 가져오면 되는 것이고, 없으면 ARP를 날리면 됩니다!

Things to know about ARP

존재하지 않는 host에게 ARP를 날리면?

당연히 답이 오지 않습니다.
이 주소는 누가 사용하고 있지 않은 주소라고 생각할 수 있습니다.

그러니까, 어떤 주소를 누가 사용하고 있는 지를 알기 위해서 ARP를 날릴 수도 있는 것입니다.

또 다른 답이 오지 않는 경우는 error라고 생각을 하는 것일 수 있습니다.

나에게 해당되는 message가 아니면 discard하므로?
-> 이런 경우를 생각할 수도 있는 것입니다.

ARP를 보내고 답이 없으면 시간을 조금 두고 다시 ARP를 보냅니다.
이를 몇 번 반복하고 없으면 포기하는 것입니다.

나 자신에게 ARP를 보내면?

다른 놈이 내 주소를 쓰고 있다는 의미일 수도 있습니다.

Unsolicited ARP Reply

프로토콜의 취약점?

N1이라는 주소를 가진 친구야 대답해줘
-> 다른 주소를 가진 애가 대답하면?
얘한테 Message가 전송이 될 것이고 ARP Cache 때문에 이제 얘한테 message가 갈 것입니다.

누가 써먹으면 좋을까?
-> 악의적으로 데이터를 쌔비려고 하는 사람!

이런 경우를 막아야 되는데, 지금 original로 가장 간단한 scenario를 가정하면 이런 일이 발생할 수 있다는 것입니다.

Static ARP를 사용하는 것으로 해결할 수 있습니다.
-> 지금 ARP를 물어보는 것이 문제이므로, link 주소를 고정시키면 됩니다. 근데 이 경우 아까 말한 network card를 변경하는 경우 문제가 발생할 수도 있을 것입니다..

0개의 댓글