L2 - LAN Adapter(랜카드) 의 동작
LAN Adapter는 송신에 대해서 어떤일을 하는가?
송신하려는 데이터가 랜카드 까지 도착했다면 사실상 통신에 필요한 정보는 완성이 된 상태이다.
물론 IP Header 까지만 넣고, 랜카드에서 MAC Header를 붙이는 것 아닌가 오해할 수 있다.
랜카드가 MAC Address를 가지고, MAC Address가 L2에서 사용되는 주소니까,
L2 Header도 랜카드에서 붙이는 것이 아닌가...? "
생각할수 있겠지만, 그렇지 않다. 랜카드에 도착하기 전 IP Header, MAC Header 세팅을 모두 끝낸다.
Header를 붙이는 것은, OS 내지는 소프트웨어가 하는일이다.
IP Header와 MAC Header는
단지 L3장비와 L2장비가 이해할수 있는 주소체계를 가지고 있는 것이다.
데이터 통신을 위한 소프트웨어는
스위치나 라우터같은 전송장비들이 이해할 수 있도록
이런 Header들을 세팅해서 붙이는 역할을 한다.
LAN Adapter는 이더넷 프레임을 완성한다.
LAN Adapter는 송신요청 패킷에 대해 다음과 같이 세팅한다.
아래의 그림과 같이 완성된 패킷을 이더넷 프레임이라고 부른다.
이더넷 프레임을 완성했다는 것은 패킷의 상태가이제 Wire로 나갈준비가 된 완성상태임을 의미한다.
Preamble 과 SFD(Start Frame Delimeter), 맨뒤의 FCS(Frame Check Sequence)를 랜카드가 붙인 것이다.
각각의 역할은 다음과 같다.
Preamble : 10이 반복되는 비트열로, 총 56비트 7byte로 이루어져있다.
SFD : 8비트 1byte이며, 10이 반복되다가 마지막 두비트만 11이다.
이로 패킷의 실제 내용물의 개시지점을 알리는 역할을 한다.
FCS : 패킷이 운반도중 잡음의 영향으로 파형이 흐트러져 데이터가 변형된 경우
이를 검출하기 위함. 값이 단 1비트라도 변하면 계산식의 결과가 달라져
변형의 유무를 알아낼 수 있다.
CRC와 같은 방식으로 동작한다.
자세한 내용은 아래를 참조
https://en.wikipedia.org/wiki/Frame_check_sequence
LAN Adapter는 패킷을 이루는 디지털데이터를 전기신호로 변환한다.
케이블로 나가기 위해서는 디지털데이터를 전기신호의 형태로 바꾸어야 한다.
디지털 데이터를 어떻게 전기신호로 변환할까?
잘 알려져 있듯이 1이면 높은전압으로, 0이면 낮은 전압.
아주 간단하다.
그런데 1일때 높은 전압을 얼마나 줄지, 0일때 낮은 전압을 얼마나 줄지가 문제다.
일단 마음대로 잘 잘라서 전기신호로 바꿨다고 치자.
문제는 전기신호를 다시 디지털 데이터로 바꾸려고 할때 생긴다.
전기신호는 그냥 전기 신호다. 높은 전압이 되었다가... 다시 낮아졌다가
높아졌다 낮아졌다 이러다가 또 높은 전압으로 유지가 되었다가...
즉, 클럭이 필요하다. 전기 신호가 있다고 하면, 이걸 클럭의 에지에 맞춰서 해당 타이밍에
전압이 높은지 낮은지 보고 이걸 1과 0으로 다시 바꾼다.
일종의 리듬형성과 같은 역할을 한다고 보면 된다.
보통 클럭의 전압이 낮은 전압에서 높은 전압으로 바뀔때, '지금 읽어라' 라는 의미를 가지는 타이밍이 된다.그리고 이것을 상승에지 클럭이라고 부른다.아래의 그림을 보면 이해가 갈것이다.
일정한 Frequency를 가지는 것을 볼수 있다.
이 클럭으로 전기신호를 다시 디지털 데이터로 바꿀수 있다.
헌데, 받을쪽에서의 문제가 걱정된다.
전기신호랑 클럭을 보냈는데, 이 둘이 정확히 같은 타이밍에 도착한다는 것을 보장받을수 없다.
그러면 클럭과 전기신호간 타이밍이 틀어져서, 전기신호로부터 디지털데이터를 정확하게 추출해낼수 없다...
그래서, Ethernet 통신 에서는 맨체스터 인코딩이라는 디지털 인코딩 방식을 사용한다.
또한 클럭의 시작시점 동기화를 위해 preamble을 삽입한다.
Manchester Encoding의 경우 클럭의 전압 자체를 1과 0으로 치환한 다음 이를 데이터와 XOR 시킨 방식을 사용한다.
그리고 인코딩의 결과로 완성된 디지털 데이터를 전기신호로 변환한다.
이렇게 완성된 신호를 받은 주체는
우선 이더넷 프레임의 맨앞에 있는 프리앰블 패턴을 인식한다.
이때 이 프리앰블 패턴인식이 데이터 변환을 위한 클럭동기화의 역할을 한다.
동기화를 마친 클럭으로 신호를 데이터화 시키고
Encoding을 수행했을 때와 마찬가지로 한번더 클럭전압과 XOR하면,
송신지에서 보내고자 했던 디지털데이터를 추출해낼 수 있게 된다.
'네트워크 및 데이터통신 이론' 카테고리의 다른 글
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분 (0) | 2021.12.31 |
---|---|
L3 - ARP(Address Resolution Protocol) (0) | 2021.12.30 |
L4 - TCP Sliding Window (0) | 2021.12.29 |
L4 - TCP Header 구조 (0) | 2021.12.27 |
L4 - TCP의 Connect 과정시 3Way-Hand Shake (0) | 2021.12.23 |
댓글
이 글 공유하기
다른 글
-
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분
2021.12.31 -
L3 - ARP(Address Resolution Protocol)
L3 - ARP(Address Resolution Protocol)
2021.12.30 -
L4 - TCP Sliding Window
L4 - TCP Sliding Window
2021.12.29 -
L4 - TCP Header 구조
L4 - TCP Header 구조
2021.12.27