[DCN] Ep 7. Introduction to Data-Link Layer

GLICO·2024년 7월 30일

DCN

목록 보기
6/10

TCP/IP 프로토콜 그룹은 데이터 링크층이나 물리층에 대해서는 규정하지 않았다. 이 두 계층은 인터넷에서 연결을 담당한다. 이들 유선망 또는 무선망은 TCP/IP의 상위 세 계층에게 서비스를 제공한다.
이 챕터에서는 모든 네트워크와 연관성 있는 데이터 링크층에 대한 일반적인 개념과 공통 주제를 소개한다.

처음 절에서는 데이터 링크층을 소개한다. 이 절은 링크와 노드의 기본 개념을 정의하는 것으로 시작된다. 이 절에서는 데이터 링크층에서 제공하는 서비스를 나열하고 간략하게 설명한다. 다음으로 점-대-점 링크와 브로드캐스트 링크와 같은 두 가지 범주의 링크를 정의한다. 마지막으로 데이터 링크층의 두 개의 부계층에 대해 설명한다.

두 번째 절에서는 링크 계층 주소지정에 관해 설명한다. 이 절에서 먼저 데이터 링크층에서 주소 지정 메커니즘을 뒷받짐하는 근거에 관해 설명한다. 링크 계층 프로토콜에서 사용하는 세 가지 유형의 링크 계층 주소에 관해 설명한다. 네트워크 층에서 주소를 데이터 링크층의 주소로 바꿔주는 주소 변환 프로토콜(ARP, Address Resolution Protocol)에 관해 설명한다.

9.1 개요(Introduction)

이 장에서는 데이터 링크층의 통신에 초점을 맞추고 있다. 데이터 링크층의 통신은 데이터 링크층 사이에서 5개로 분리된 논리적인 연결로 구성되어 있다.

발신지나 목적지는 하나의 데이터 링크층이 포함되지만, 라우터는 2개의 데이터 링크층이 포함된다.

데이터 링크층의 통신은 노드-대-노드이다. 인터넷에서 한 지점의 데이터 단위는 다른 지점에 도달하기 위해 LAN과 WAN과 같은 많은 네트워크를 통과하게 된다. 이러한 LAN과 WAN은 라우터를 통해 연결된다. 이것은 2개의 종단 호스트와 라우터를 노드(Node)로 그리고 두 노드 사이의 네트워크를 링크(Link)로 나타내는 것이 일반적이다.

9.1.2 서비스 (Services)

데이터 링크층은 물리층(1)과 네트워크층(3) 사이에 위치한다.
물리층으로부터 서비스를 제공받아서 네트워크층으로 서비스를 제공한다.
데이터 링크층의 책임 범위는 노드-대-노드이다. 패킷이 인터넷에서 전송될 때, 호스트와 라우터와 같은 노드의 데이터 링크층은 경로의 다음 노드까지 데이터그램을 전달해야 하는 책임을 갖는다.

이러한 목적을 위해 전달하는 노드의 데이터 링크층은 네트워크층으로부터 전달받은 데이터그램을 프레임으로 캡슐화해야 한다. 그리고 전달을 받는 노드의 데이터 링크층은 프레임으로부터 데이터 그램을 역캡슐화해야 한다. 다시 말해 발신지 호스트의 데이터 링크층은 캡슐화해야하고, 목적지 호스트의 데이터 링크층은 역캡슐화해야 한다. 하지만 각 중계 노드는 캡슐화와 역캡슐화가 모두 가능해야 한다.

중계노드에서는 각 링크가 서로 다른 프레임 형식을 사용하는 프로토콜을 사용할 수 있기 때문에 캡슐화와 역캡슐화가 필요하다.

프레임짜기 (Framing)

데이터 링크층에서 제공하는 첫 번째 서비스는 프레임 짜기이다. 각 노드에서 데이터 링크층은 다음 노드에게 데이터 그램을 전송하기 전에 네트워크층에서 전달받은 패킷인 데이터그램을 프레임으로 캡슐화해야 한다. 노드는 또한 논리 채널을 통하여 전달받은 프레임으로부터 데이터그램을 역캡슐화해야 한다.

데이터 링크층에서 패킷은 일반적으로 프레임(Frame)이라고 부른다.

흐름제어(Flow control)

프레임 생산률이 소비율보다 높으면, 종단에서 전송 받는 프레임은 소비될 때까지 버퍼에 저장되어야 한다. 수신 쪽에서 버퍼 크기를 무제한으로 가질 수 없다.
첫 번째 선택은 전달받는 데이터 링크층에서 버퍼가 꽉 차 있다면, 프레임을 폐기시키는 것이다.
두 번째 선택은 데이터 링크층으로 전송하는 것을 멈추거나 느리게 하는 피드백(Feedback)을 전송하는 것이다.

오류제어(Error control)

전송 측 노드에서 데이터 링크층의 프레임은 비트 형태에서 전자기 신호로 변환되어 전송 매체를 통하여 전송된다. 수신 측 노드는 전자기 신호를 전달 받아 비트 형태로 변환하여 프레임을 생성하기 위해 재좆립한다. 오류를 검출한 후에 송신자 노드에서 이를 수정하거나 오류를 폐기하고, 송신 노드에게 재전송을 요청해야 한다. (오류제어는 10장에서 자세히 알아보자)

혼잡 제어(Congestion control)

링크가 프레임의 혼잡으로 인해 프레임 손실이 발생하더라도, 광역 통신망 이외의 대부분의 데이터 링크층 프로토콜은 혼잡을 완화하기 위해 직접 혼잡 제어를 사용하지 않는다.
일반적으로 혼잡 제어는 종단-대-종단으로 통신하기 때문에, 네트워크 층 또는 전송층의 문제로 생각한다.

데이터 링크층은 전송 매체의 모든 성능을 사용하는 점-대-점(point-to-point)링크가 있고, 링크 성능의 일부를 사용하는 브로드캐스트(broadcast)링크가 있다.
예를 들어, 두 사람의 친구가 대화하기 위해 집전화를 사용할 때, 이들은 점-대-점 링크를 사용한다.
반면에 두 사람의 친구가 휴대폰을 사용한다면 공기를 여러 휴대폰 사용자가 공유하기 때문에 이들은 브로드캐스트 링크를 사용하고 있다.

9.1.4 두 개의 부계층(Two Sublayers)

이 절에서는 데이터 링크층을 데이터 링크 제어(DLC, Data Link Control)와 매체 접근 제어(MAC, Media Access Control)라는 2개의 부계층으로 나누어서 살펴보도록 한다.

인터넷에서 발신지와 목적지 호스트가 연결된 정확한 지점을 나타내기 위해 네트워크층 식별자로서 IP 주소를 사용한다. 하지만 인터넷과 같은 비연결형(connectionless) 네트워크 간 네트워크에서는 IP주소만을 사용하여 데이터그램을 목적지까지 전송할 수 없다.
인터넷에서 각 데이터그램은 같은 발신지 호스트에서 같은 목적지 호스트까지 서로 다른 경로를 선택하기 때문이다.
발신지와 목적지 IP주소는 두 종단을 지정하지만 데이터그램이 경유하는 경로에 대해서는 지정하지 못한다.

데이터그램에서 IP주소는 변경되지 않는다는 점을 기억하자. 만약 데이터그램에서 목적지 IP주소가 변경된다면, 패킷은 목적지까지 전달되지 못할 것이다.
따라서 비연결형 네트워크 간 네트워크(internetwork)에서는 다른 주소 지정 메커니즘이 필요하다.
링크 계층 주소(link-layer address)는 링크 주소(link address), 물리 주소(physical address) 또는 MAC주소(MAC address)라고 불린다.
데이터그램이 네트워크층(3)에서 데이터 링크층(2)으로 전달될 때, 데이터그램은 프레임으로 캡슐화되고 두 데이터 링크 주소는 프레임 헤더에 추가된다. 이 2개의 주소는 프레임이 링크에서 다른 링크로 이동할 때마다 변경된다.

IP 주소의 순서와 링크층 주소의 순서는 서로 다르다는 점을 주의하자.
또한 각 프레임이 같은 발신지와 목적지 주소(N1N_1N8N_8)를 갖는 데이터그램을 포함하고 있지만, 프레임의 링크 계층 주소는 링크에서 링크로 갈 때마다 변경된다.

9.2.1 세 가지 유형의 주소(Three Types of address)

유니캐스트 주소(Unicast Address)

각 호스트나 라우터의 인터페이스는 유니캐스트 주소를 할당받는다. 유니캐스팅은 일-대-일 통신을 의미한다. 유니캐스트 주소를 목적지로 갖는 프레임은 링크에서 하나의 개체에 전달된다.

가장 일반적인 LAN과 이더넷에서 유니캐스트 링크 계층 주소는 48비트(6바이트)이다. 이것을 콜론(:)으로 나누어 16진수로 표현하면 다음과 같다.
A2:34:45:11:92:F1

멀티캐스트 주소(Multicast Address)

어떤 링크 계층 프로토콜은 멀티캐스트 주소를 지정한다. 멀티캐스팅은 일-대-다 통신을 의미한다. 그러나 그 범위는 로컬 링크로 제한한다.

가장 일반적인 LAN과 이더넷에서 멀티캐스트 링크 계층 주소는 48비트(6바이트)이다. 이것을 콜론(:)으로 나누어 16진수로 표현하면 다음과 같다. 그러나 두번째 수는 16진수로 홀수이어야 한다.
A3:34:45:11:92:F1

브로드캐스트 주소(Broadcast Address)

어떤 링크 계층 프로토콜은 브로드캐스트 주소를 지정한다. 브로드캐스트는 일-대-전체 통신을 의미한다. 목적지로 브로드캐스트 주소를 갖는 프레임은 링크 내의 모든 장치로 전달된다.

가장 일반적인 LAN과 이더넷에서 브로드캐스트 링크 계층 주소는 48비트(6바이트)로 모두 "1"이다. 이것을 콜론(:)으로 나누어 16진수로 표현하면 다음과 같다.
FF:FF:FF:FF:FF:FF

9.2.2 주소 변환 프로토콜(ARP)

다음 노드의 IP 주소는 링크를 통과하는 프레임이 이동하는데 도움이 되지 않는다. 따라서 다음 노드의 링크 계층 주소를 알아야 한다.
이때 주소 변환 프로토콜(ARP, Address Resolution Protocol)이 도움이 된다.
해당 프로토콜은 네트워크층에서 정의한 보조 프로토콜 중 하나이다.
(이 책에서는 이 프로토콜이 IP주소를 지정된 링크 계층 주소에 매핑시키고, 데이터 링크층으로 그것을 전달하기 때문에 해당 챕터에서 설명한다.)

호스트 또는 라우터는 네트워크에서 다른 호스트 또는 라우터의 링크 계층 주소를 찾기 위해 ARP 요청 패킷을 전송한다. 패킷은 전송자의 링크 계층과 IP주소와 수신자의 IP주소를 포함한다.
송신자는 수신자의 링크 계층 주소를 알지 못하기 때문에 질의 메시지는 링크 계층 브로드캐스트 주소를 이용하여 링크에 브로드캐스트된다.

네트워크에서 각 호스트와 라우터는 ARP 요청 패킷을 전달받고 처리한다. 하지만 해당 수신자는 IP주소를 인식하고 ARP 응답 패킷을 전송한다. 응답 패킷은 수신자의 IP와 링크 계층 주소를 포함하고 있다.
패킷은 요청 패킷을 보낸 노드로 직접 유니캐스트된다.

캐싱(Caching)

만약 시스템A가 시스템B의 링크 계층 주소를 찾기 위해 프레임을 브로드캐스트할 수 있다면, 왜 A는 B로 브로드캐스트 프레임을 사용하여 데이터그램을 전달하지 않는가?
이는 효율성 측면에서 고려해보면 알 수 있다.
시스템 A,B를 포함하여 20개의 시스템(링크)이 네트워크에 연결되었다고 가정하자. 시스템 A는 시스템 B에게 초당 10개의 데이터그램을 전송할 수 있다고 가정하자.

  • ARP 미사용
    시스템 A는 10개의 브로드캐스트 프레임을 전송할 수 있다. 각기 다른 18개 시스템은 프레임을 전송받고, 프레임을 역캡슐화하여 데이터그램을 제거하고 이것을 네트워크층으로 전달한다. 이렇게 처리되고 폐기된 프레임이 180개가 된다는 것을 의미한다.
  • ARP 사용
    시스템 A는 하나의 브로드캐스트 프레임을 전송한다. 각기 다른 18개 시스템은 프레임을 전달받고 프레임을 역캡슐화한 다음 데이터그램을 제거하고 네트워크층으로 전달한다. 이것은 단지 18개의 브로트캐스트 프레임만 필요하다는 것을 의미한다. 시스템 B가 자신의 데이터 링크 주소와 함께 응답하면 시스템 A는 자신의 캐시 메모리에 링크 계층 주소를 저장할 수 있다. 나머지 9개 프레임은 단지 유니캐스트된다.

패킷 형식(Packet Format)


해당 그림은 ARP패킷의 형식을 보여준다.

  • Hardware Type : 링크 계층 프로토콜의 유형을 나타낸다.
    이더넷은 1로 주어진다.
  • Protocol Type : 네트워크층 프로토콜을 나타낸다. IPv4 프로토콜은 (0800)16_{16}으로 정의되어 있다.
  • Source hardware & protocol address : 송신자의 링크 계층과 네트워크층 주소가 정의되어 있는 가변 길이 필드이다.
  • Destination hardware & protocol address : 수신자의 링크 계층과 네트워크층 주소를 정의한다.
    ARP패킷은 데이터 링크 프레임에 캡슐화된다. 프레임은 네트워크층 데이터그램이 아닌 ARP를 포함한 페이로드임을 보여주기 위한 필드가 가지고 있어야 한다.

Example 9.4

IP주소가 N1이고 MAC 주소가 L1인 호스트는 IP 주소 N2와 물리 주소 L2(처음 호스트에게 알려지지 않은)를 가진 다른 호스트로 전송할 패킷을 가지고 있다. 두 호스트는 같은 네트워크에 있다.


해당 ARP패킷이 프레임으로 캡슐화 되었음을 볼 수 있다.
1번은 브로드캐스트이고 목적지의 MAC주소가 0으로 비어져 있다.
2번은 유니캐스트이고 시스템B의 MAC주소인 L2가 기록되어 보내짐을 알 수 있다.

9.2.3 통신 예제(An Example of Communication)

앨리스가 데이터그램을 인터넷에서 세 노드 건너에 있는 밥에게 전송한다고 가정하자. 어떻게 앨리스는 밥의 네트워크층 주소를 찾을 수 있는가? 이것은 DNS(Domain Name System)를 통하여 알 수 있다.
우선은, 앨리스가 밥의 네트워크층(IP) 주소를 알고 있다고 가정하자. 다시 말해, 각 호스트는 서로의 IP 주소를 알고 있기 때문에 앨리스의 호스트는 전송할 데이터에 밥의 IP주소와 앨리스 호스트의 IP 주소를 포함한다.

앨리스 측의 동작(Activities at Alice's Site)


네트워크층은 자신에게 주어진 NA,NBN_A, N_B와 패킷을 알고 있다.
하지만, 다음 노드의 링크 계층 주소를 찾아야 한다.
네트워크층은 자신의 라우팅 테이블을 참고하여 어느 라우터가 목적지 NBN_B를 위한 다음 라우터인지 찾으려 한다. 라우팅 테이블은 N1N_1을 제공한다. 하지만 네트워크층은 라우터 R1의 링크 계층 주소를 찾아야 한다. 링크 계층 주소 L1L_1을 찾기 위해 ARP를 사용한다. 네트워크층은 이제 링크 계층 주소를 가진 데이터그램을 데이터 링크층으로 전달할 수 있다.
데이터 링크층은 자신의 링크 계층 주소 LAL_A를 알고 있다. 그서은 프레임을 생성하고 프레임을 물리층으로 전달한다. 물리층에서 주소는 신호를 바뀌어 매체를 통해 전달된다.

라우터 R1에서 동작 (Activities at Router R1)

R1은 단지 3개의 하위 계층을 가지고 있다. 전달받은 패킷은 이 세 하위 계층을 하부에서 위로 통과하여 다시 아래로 내려간다.

패킷이 도착하면, 역캡슐화를 진행하고 결국 네트워크층으로 전달된다.
네트워크층은 데이터그램을 NBN_B의 주소를 갖는 장치로 전달해야 된다는 것을 알게 된다.
자신의 라우팅 테이블을 차고하여 N3N_3의 주소를 얻게 되고 위와 마찬가지로 ARP 패킷을 통해 L3L_3의 주소를 알아낸다.

링크 계층은 데이터그램을 L3L_3와 자신의 링크 계층 주소인 L2L_2에 더하여 캡슐화한다. 그리고 프레임을 물리층으로 전송한다.
물리층은 비트를 신호로 바꾸어 전송 매체를 통하여 R2에게 전달한다.

라우터 R2에서 동작(Activities at Router R2)

라우터 R2에서 동작은 그림 9.13과 같이 R1과 거의 동일하다.

밥 측의 동작(Activities at Bob's Site)

밥 측에서는 더 이상 주소 지정과 주소 매핑은 필요하지 않다. 링크로부터 전달된 신호는 프레임으로 변경된다. 프레임은 데이터 링크층으로 전달된다. 거기에서 데이터그램을 역캡슐화하고 네트워크층으로 전송한다. 네트워크층에서는 메시지를 역캡슐화하고 전송층으로 전송한다.

주소의 변화 (Changes in Address)

이 예제를 통해 발신지와 목적지 네트워크층 주소인 NA,NBN_A, N_B가 데이터 전송 도중에 변경되지 않는 것을 보았다. 그러나 라우터 R1과 R2의 네트워크층 주소(N1,N2,N3,N4N_1, N_2, N_3, N_4)는 앨리스의 컴퓨터에서 밥의 컴퓨터로 데이터그램을 전송해야 한다.

profile
Its me Glico

0개의 댓글