익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Data Link Layer 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Data Link Layer
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[컴퓨터 네트워크]] ==개요== Data-link layer<ref>약칭은 link layer이다.</ref>는 한 노드에서 물리적으로 인접한 노드로 데이터그램을 전송하는 계층이다. 이때 link layer는 각 링크에 따라 개별적으로 구현되므로, 데이터그램은 각기 다른 링크들에서 각기 다른 link layer의 프로토콜을 통해 전송된다. 예를 들어 첫 링크는 Ethernet 프로토콜을, 중간 링크들은 frame relay 프로토콜을, 마지막 링크는 802.11 프로토콜을 활용할 수 있다. 이때 각각의 링크 프로토콜들은 서로 다른 서비스를 제공한다. 예를 들어, 어떤 프로토콜은 reliable data transfer(RDT)를 지원할 수도 있고, 안 할 수도 있다. ==용어 정리== 노드(node)란 해당 문서와 그 하위 문서에서는 link layer을 실행하는 모든 장치를 의미한다. 노드에는 호스트, 라우터, 스위치, WiFi 액세스 포인트 등이 포함된다. 또한 링크(link): 통신 경로를 따라 인접한 노드들을 연결하는 통신 채널(channel)들을 의미한다. 따라서 데이터그램이 송신 호스트로부터 수신 호스트로 전달되기 위해서는, 그 종단 간(end-to-end) 경로를 구성하는 각 개별 링크들을 통해 이동되어야 한다. 이때 각 링크에서 송신 노드는 데이터그램을 link layer의 데이터 단위인 프레임으로 캡슐화하고 이를 링크로 전송한다. ==The Services Provided by the Link Layer== Link layer의 기본적인 서비스는 하나의 통신 링크를 통해 데이터그램을 한 노드에서 인접한 다른 노드로 전송하는 것이다. 하지만 실제로 제공되는 서비스의 세부 사항은 각 link layer의 프로토콜마다 다를 수 있다. 이때, link layer가 제공할 수 있는 가능한 서비스들은 다음과 같다: * Framing: 거의 모든 link layer의 프로토콜들은 각각의 데이터그램들을 link layer의 데이터 단위인 프레임(frame)으로 캡슐화한 후 이를 링크를 통해 전송한다. ** 프레임은 데이터 필드와 여러 헤더 필드로 구성된다. 이때, 프레임의 세부적인 구조는 해당 프레임을 전송하는 link layer 프로토콜에 의해서 결정된다. * Link access: 네트워크에서 두 장치가 데이터를 주고 받을 때, 같은 통신 링크를 여러 장치가 공유할 수 있으며, 이 경우 충돌(collision)이 일어날 수 있고 그로 인해 통신이 실패할 수 있다. ** 이를 해결하기 위해 MAC<ref>Medium Access Control의 약자이다.</ref> 프로토콜이 사용된다. MAC 프로토콜이란 누가, 언제, 어떻게 링크를 사용할지를 정하는 규칙을 의미한다. 이를 통해 여러 노드가 한 통신 매체(medium)를 사용할 때 충돌 없이 데이터를 전송하게 조율하는 역할을 한다.<ref>통신 링크의 양 끝에 각각 하나의 송신자와 수신자만 존재하는 point-to-point 링크의 경우에는 MAC 프로토콜이 필요 없다. </ref> * Reliable delivery: 어떤 링크 계층 프로토콜은 [[Principles of reliable data transfer|(RDT)reliable data transfer]]를 제공하는데, 이는 각 데이터그램을 오류 없이 링크를 통해 전송할 것을 보장한다. ** 이는 무선 링크(wireless link)와 같이 오류가 많이 일어나는 링크에서 주로 사용된다. 하지만 대부분의 유선 링크(wired link)와 같이 오류가 잘 일어나지 않는 링크에서는 해당 서비스가 불필요한 오버헤드로 간주될 수 있으므로 잘 사용되지 않는다. * Error detection: 수신 노드의 link layer 하드웨어는 프레임 내의 비트가 원래는 1이었지만, 오류로 인해 0이라는 잘못된 비트를 수신할 수 있다. 이러한 비트 오류를 가지고 있는 데이터그램은 전송할 가치가 없으므로, 많은 link layer의 프로토콜은 비트 오류를 검출할 수 있는 메커니즘을 제공한다. ** 이는 송신 노드가 오류 검출용 비트(error-detection bits)를 프레임에 포함시키고, 수신 노드가 오류 검사를 수행하는 방식으로 이루어진다. ** Transport/Network layer도 [[UDP#UDP checksum|internet checksum]]을 통해 제한적인 형태의 오류 검출을 제공하지만, link layer에서의 오류 검출은 더욱 정교하며, 하드웨어를 통해 구현된다. * Error correction: Error correction은 error detection과 유사하지만, 비트 오류를 검출하는 것 뿐만 아니라, 프레임 내의 정확히 어떤 위치에서 오류가 발생했는지 식별하고, 이를 수정하기까지 한다. * Half-duplex vs Full-duplex ** Half-duplex: 양 끝 노드가 서로에게 데이터그램을 전송할 수 있지만, 동시에는 전송할 수 없는 구조이다. ** Full-duplex: 양 끝 노드가 서로에게 동시에 데이터그램을 전송할 수 있는 구조이다. ==Where is the link layer implemented?== Link layer는 라우터에서는 기본적으로, [[Router#Input port function|입력 포트(input port)]] 내에 구현되어 있다. 하지만 이는 라우터 내에서의 구현 방식일 뿐, 호스트에서 구현된 방식과 일치하지는 않는다. Figure 1은 전형적인 호스트의 아키텍쳐를 보여준다. 대부분의 경우 link layer는 네트워크 어댑터(network adapter)<ref>이는 네트워크 인터페이스 카드(NIC, Network Interface Card)라고도 불린다,</ref>에 구현된다. 네트워크 어탭터에는 link-layer controller가 존재하며, 이는 특수 목적의 단일 칩으로, 프레이밍, 링크 접근, 오류 검출 등과 같은 많은 링크 계층 서비스를 구현한다. 즉, link-layer controller의 대부분의 기능은 하드웨어적으로 구현되어 있다. 예를 들어, Intel의 710 어뎁터는 이더넷(Ethernet) 프로토콜을 구현하며, Atheros AR5006 컨트롤러는 802.11 WiFi 프로토콜을 구현한다. 송신측에서 controller는 호스트 메모리에 저장된 데이터그램을 가져와, link layer 프레임으로 캡슐화하고, link access 프로토콜을 따르면서 프레임을 통신 링크로 전송한다. 수신 측에서 controller는 프레임을 수신하고, 그 안에서 데이터그램을 추출한다. 또한 해당 link layer의 프로토콜이 error detection 기능을 수행한다면, 송신 컨트롤러는 프레임 헤더에 오류 검출 비트를 설정하고, 수신 컨트롤러는 오류 검출을 수행한다. ==각주==
Data Link Layer
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록