이번에는 컴퓨터 네트워크 링크 계층에 대해서 알아보도록 하겠습니다.
링크 계층의 계요
링크 계층이 구현된 위치
링크 계층 및 물리 계층은 유선 랜카드(=Network interface controller)에 구현되어 있습니다.
유선 랜카드 내부의 링크 계층은 Ethernet 프로토콜을 기반으로 구현 및 동작합니다.
유선 랜카드 동작 과정
- 데이터 준비: 컴퓨터에서 생성된 데이터를 네트워크 계층을 통해 전달받음(IP 패킷 형태)
- 프레임 생성: IP 패킷의 앞쪽에 Ethernet 프로토콜 헤더를 추가하여 프레임으로 캡슐화
- 신호 변환 및 송신: 디지털 데이터(0 or 1)로 표현된 프레임을 아날로그 신호(전기적 신호)로 변환(인코딩)하여 케이블을 통해 전송
- 수신 데이터 처리: 랜카드로 들어오는 데이터를 디코딩, 오류 검사 후 상위 계층으로 전달
이더넷(Ethernet)이란?
이더넷 프로토콜은 네트워크에서 링크 계층에서 작동하는 통신 규약으로, 컴퓨터나 장치들이 네트워크를 통해 서로 데이터를 전송할 수 있도록 합니다.
이더넷 프로토콜의 주요 구성 요소
프레임(Frame): 이더넷에서 데이터는 "프레임"이라고 불리는 단위로 전송된다. 각 프레임에는 전송할 데이터 외에도, 목적지 MAC 주소, 출발지 MAC 주소, 오류 검출을 위한 체크섬 등이 포함됩니다.
MAC 주소(MAC Address): 이더넷 장치들은 고유의 MAC 주소를 가지고 있으며, 이는 네트워크에서 장치들을 구분하는 데 사용된다. MAC 주소는 48비트 길이로, 각 장치의 하드웨어에 고유하게 할당됩니다.
이더넷 프레임 구조
이제 프레임 구조에 대해 알아보도록 하겠습니다.
Preamble(7 bytes)
통신 채널에서 송신된 신호가 수신기에서 안정적으로 해석되기 위해선 송신기와 수신기의 클럭이 일치해야 함. Preamble은 송신기와 수신기 간의 전송 동기화를 맞출 수 있도록 설정된 비트 패턴
Preamble은 10101010으로 된 비트 패턴을 7번 반복하여 구성(총 56비트)되며, 수신기에서 프레임의 시작을 인식하고, 송신기와의 전송 클럭을 동기화 시킴
송신기: 데이터 전송 전에 Preamble(10101010)을 7번 반복하여 보냄
수신기: Preamble의 반복적인 1010 패턴을 수신하면서 자신의 클럭 신호를 조정
즉, 수신기가 클럭 속도를 송신기에 맞추게 됨
Ethernet Type(2 bytes)
상위 계층의 프로토콜을 지정합니다.
0x0800: IPv4
0x86DD: IPv6
0x0806: ARP
Payload(46 - 1500 bytes)
상위 계층 데이터(예: IP 패킷, ARP 메시지)가 포함됨
이더넷 표준에 따라 최소 46바이트에서 최대 1500 바이트까지 허용
데이터 크기가 46 바이트보다 작으면 패딩(padding)을 추가하여 최소 크기를 충족
Frame check sequence(FCS, 4bytes)
오류 검출을 위한 CRC(Cyclic Redundancy Check)값을 포함
송신 장치에서 FCS를 계산하여 프레임에 추가하고, 수신 장치가 이를 다시 계산하여 프레임의 무결성을 확인
오류 발생 시 프레임을 폐기
Destination Address (목적지 주소, 6 bytes)
- 역할: 프레임을 전달할 최종 목적지를 나타냅니다.
- 이 주소는 프레임이 향하는 장치의 MAC 주소를 포함합니다.
- 이 값에 따라 스위치나 브리지 같은 네트워크 장비는 프레임을 올바른 포트로 전달합니다.
- 목적지 주소에는 두 가지 유형이 있습니다:
- Unicast 주소: 특정 단일 장치의 MAC 주소.
- Multicast 주소: 특정 그룹에 속한 여러 장치.
- Broadcast 주소: 네트워크의 모든 장치를 대상으로 하는 FF:FF:FF:FF:FF:FF.
Source Address (출발지 주소, 6 bytes)
- 역할: 프레임을 보낸 장치의 MAC 주소를 나타냅니다.
- 프레임이 어디서 왔는지 추적할 수 있도록 출발지 정보를 제공합니다.
- 스위치는 Source Address를 보고 MAC 주소 테이블을 갱신합니다(프레임이 해당 MAC 주소로부터 어느 포트로 들어왔는지 기록).
링크 계층 주소 체계와 ARP
스위치 근거리 네트워크(Switched Local Area Network)
스위치는 네트워크 장비 중 하나로, *근거리 네트워크(LAN)에서 사용됨
여러 컴퓨터, 서버, 프린터 등의 장치를 서로 연결하여 데이터 통신을 가능하게 함
스위치는 연결된 모든 장치들에 대한 MAC 주소 테이블을 유지/관리하며, 전달받은 프레임 헤더의 목적지 MAC 주소를 기반으로 프레임을 적절한 출력 포트로 포워딩함
*근거리 네트워크: 건물, 사무실, 가정 등 좁은 물리적 영역에 걸친 네트워크
물리 주소(MAC 주소) 체계
MAC 주소는 네트워크 인터페이스 카드(=랜카드)에 부여된 고유 식별자를 의미함
길이: 48 bit (6 bytes)
표현: 16진수로 12자리, 보통 콜론(:) 혹은 대시(–) 로 구분함
예시: 00:1A:2B:3C:4D:5E
구조
- 앞 24비트: 제조사 식별 코드
- 뒤 24비트: 장치 고유 값
데이터(프레임) 전달 과정
- 이더넷 프레임의 목적지 MAC 주소는 최종 목적지의 MAC 주소가 아닌, 프레임이 거쳐가야 하는 다음 장치(홉)의 MAC 주소이다.
- 각 라우터의 네트워크 계층은 IP 패킷 헤더의 목적지 IP 주소와 라우팅 테이블을 매칭하여 패킷이 이동할 출력 포트를 결정한 뒤, 다음 홉 정보(다음 홉의 IP 주소)와 IP 패킷을 링크 계층의 이더넷 프로토콜로 전달한다.
- 이더넷 프로토콜은 프레임 헤더의 목적지 MAC 주소를 다음 홉의 MAC 주소로 설정한다(How?).
- (중요) 패킷이 여러 라우터를 거쳐 전달되기 때문에, IP 패킷이 매 홉을 지나갈 때마다 목적지 MAC는 변경된다.
4번 내용이 중요한 이유!
IP 주소는 고정: 패킷의 IP 헤더에 포함된 목적지 IP 주소는 패킷이 최종 목적지에 도달할 때까지 변경되지 않습니다.
MAC 주소는 변동: 반면, 목적지 MAC 주소는 각 링크(라우터와 라우터 간, 또는 라우터와 최종 장치 간)에서 데이터를 정확히 전달하기 위해 변경됩니다.
이 과정이 없다면, 패킷이 라우터 간 링크를 넘어 정확한 다음 홉 장치로 전달될 수 없습니다.
즉, "목적지 MAC 주소는 매 홉마다 변경된다"는 점이 중요한 이유는 IP 계층의 최종 목적지로 데이터를 전달하기 위해, 링크 계층에서 올바른 MAC 주소를 설정하는 동적 과정이 필수적이기 때문입니다. 이를 통해 데이터는 네트워크 경로를 따라 차례로 전송되고, 최종 목적지에 도달하게 됩니다.
데이터(프레임) 전달 과정 예시
- 라우터 A의 포워딩 결정: 라우터 A는 IP 패킷의 목적지 IP 주소(예:라우터 D)를 확인하고, 포워딩 테이블을 참고하여 패킷을 라우터 B로 향하는 출력 링크로 포워딩하기로 결정한다.
- 다음 홉 정보와 IP 패킷 전달: 라우터 A는 다음 홉 정보(다음 홉의 IP 주소)와 IP 패킷을 링크 계층의 이더넷 프로토콜로 전달한다.
- 이더넷 헤더의 목적지 MAC 주소 설정: 링크 계층의 이더넷 프로토콜은 프레임 헤더의 목적지 MAC 주소를 라우터 B의 MAC 주소로 저장하려고 시도한다.
- 하지만, 라우터 A의 이더넷 프로토콜은 라우터 B의 IP 주소는 알지만 MAC 주소를 모르는 상태이다.
ARP(Addresss Resolution Protocol) 동작 과정
- “IP 주소 192.168.1.10을 가진 장치의 MAC 주소는 무엇입니까?”
- 링크 계층의 브로드캐스트 주소는 FF:FF:FF:FF:FF:FF
- “나의 MAC 주소는 00:1A:2B:3C:4D:5E 입니다"
- 송신기는 응답 받은 MAC 주소를 자신의 ARP 캐시 테이블에 저장하여, 같은 주소로의 반복 요청을 없앰
ARP 메시지 헤더 구조
'컴퓨터 과학 > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 네트워크 최적화 (0) | 2024.12.17 |
---|---|
[컴퓨터 네트워크] 네트워크 계층 (0) | 2024.12.16 |
[컴퓨터 네트워크] 프로토콜이란 무엇인가? (1) | 2024.09.03 |
[컴퓨터 네트워크] 헤더란 무엇인가? (0) | 2024.09.03 |