본문 바로가기
Network

이더넷(Ethernet)

by neohtux 2019. 10. 2.
728x90

이더넷(Ethernet)이라는 '명칭'은 빛의 매질로 여겨졌던 에테르(ether)에서 유래되었습니다.

 

LAN 구간 에서 사용되는 네트워킹 방식 중 하나이구요.

 

대다수 우리가 쓰는 네트워크 방식의 90%는 Ethernet(기타 : ATM,FDDI,AppleTalk(맥),토큰링 등) 방식이라 보면됩니다.

 

IEEE802.3 표준 발표(CSMA/CD)

 

※ CSMA/CD 란

(Carrcarrier Sense Multiple Access with Collision Detection)

 - 요약하자면, 대충 알아서 눈치껏 통신하자 이다. 

이 말의 상세를 좀 살펴보면,

이미지 출처 : lynda.com

이더넷 환경에서 통신을 하고 싶은 PC나 서버는 먼저 지금 네트워크 상에 통신이 일어나고 있는지 확인을 합니다.

즉, 네트워크 자원을 쓰고 있는 PC나 서버가 있는지를 확인하는것, (Carrier : 네트워크 신호) 캐리어가 있는지 감지.

 

이부분이 CSMA/CD의 CS앞의 두글자 Carrier 감지(Sense)이라고 합니다.

 

이때 만약 캐리어가 감지되면(위 그림에서 어떤 컴퓨터가 네트워크 상에서 통신을 하고 있으니,

다른 컴퓨터는 자기가 보낼 데이터를 기다리고 있다가 캐리어가 감지 되지 않으면(눈치봄) 자기 데이터를 

네트워크 상에(위 그림의 파란색 버스) 실어 보냅니다.

 

하지만, 만약 저렇게 눈치를보고 데이터를 실은 PC가 여러대(Multiple Access)라고 하면 그 데이터는 같은 버스내에서

충돌(Collision)이 발생하게 됩니다. 여기서 이더넷에서는 데이터를 네트워크에 실어서 보내고 나서도 다른PC 때문에

충돌이 발생했는지 검사를 해야합니다. 이 부분이 Collision Detection (충돌 감지) 라는 말입니다.

 - > 충돌이 발생하게되면 충돌된 데이터를 보낸 PC들은 임의(Random)시간 동안 기다린다음 다시 데이터를
전송하게 됩니다.(그 시간을 사람이 느끼긴 어렵습니다...)

 

하지만 CSMA/CD 는 초기 공유매체 접근방식입니다. 그 말은 현재는 사용하지 않습니다.

근데 왜 안쓰는거 설명해주냐고요?.. (알아두면 쓸데없지만, 잡학지식입니다...)

 

현재는 전용 포트 위주의 이더넷 스위치화 및 고속화 지향  너무 말이 어렵네요.

쉽게 말하면 이더넷 스위치 즉 네트워크 선로를 받는 장비의 요구사항이 바뀌어서 그래요!.

바뀐거는 기존의 효율이 떨어지니 더 개선되게 바꾼거겠죠?

 

그리고 눈치 있는분들은 아셨을 수도 있는데, CSMA/CD는 버스형 구조지만

현재는 스타형으로 발전했어요.

(이건 버스 토폴로지, 스타형 토폴로지, 링토폴로지 라고해서 검색하면 쉽게찾을수있어요)

쉽게말해 1차선에 자전거(A네트워크) , 경차(B네트워크), 중형(C네트워크), 대형(D네트워크)

가 가야한다면 지금은 자전거도로 경차 전용도로, 버스전용 도로를 사용한다고 쉽게 이해하면 조금 도움은

될겁니다.

(조금 추가적인 설명을 달자면, CSMA/CD 는 반이중 통신 (Half-Duplex) , 지금은 전이중(Fuul-Duplex)를 쓰는데

이말은 쉽게 전깃줄 한가닥으로 송신하면 송신, 수신하면 수신만할거냐, 전깃줄 두개로 송,수신 같이 할꺼냐 차이에요
이것도 검색하면 쉽게 찾아볼수있습니다...) 

 

잠깐 CSMA/CD  802.3 표준을 얘기하는데 말이 길어졌네요.

 

다시 이더넷 설명으로 넘어가면,

 

Ethernet은 네트워크에 연결된 각 기기( PC를 예로들면 과거 랜카드, 현재 메인보드내장)들이 48비트 길이의 고유의 MAC 주소를 가지고 있고, 이 주소를 이용해 상호간에 데이터 통신을 합니다.

 

이 48비트 MAC 주소는 CMD 에 ipconfig 를 치시면 물리 주소로 나옵니다.

각 6등분했을때  한 등분씩 16진수로 이루어져있으니 8비트가 x 6 해서 48비트인거 아시겠죠?

 

여기서 저 물리적 주소를 간단히 살펴보면

앞의 24비트 OUI는 조직 고유 식별자라고하여 식별자를 발행한 조직을 식별합니다.

뒤의 24비트 (그림에서 왼쪽 3옥텟 이라고 나온부분)는 네트워크 인터페이스 컨트롤러(NIC)의 제조업체가 할당합니다.

(각 OUI와 NIC의 두번째비트 는 지역적으로 관리되냐 :1  전역적으로 관리 되는 주소냐 : 0 어떻게 주소가 관리될지 식별합니다.)

 

첫 비트0으로 설정하면 유니캐스트, 1로설정하면 멀티캐스트인데

데이터 덩어리(프레임)을 하나의 NIC 즉 그냥 하나의 랜카드로 보내냐 다른 기준에의해 10명중 5명한테만 보낼꺼냐)

이렇게 이해하시면 조금 편합니다. 유니캐스트와 멀티캐스트 브로드캐스트에 대한건 다음에 올리도록할게요.

 

 

여기서 이더넷은 이더넷 프레임(Ethernet-Frame)이라고하는 데이터 묶음을 가지고 통신을 합니다.

 

이 묶음이 어떻게 되어있는지한번 살펴보겠습니다.

Premable:앞의 7바이트는 Frame 전송의 시작을 나타내는 필드입니다. 수신측에 Frame이 전송되는것을 알리고 0과 1을

구분짓게 하는 동기신호를 제공하는 역할을합니다.

 

SFD는 Frame의 시작을 알리는데 사용됩니다.

 

그리고 목적지 주소 6바이트 출발지 주소6바이트는 우리가 좀 전에 알아본 48비트의 MAC주소에요!

타입길이는 3계층 (IP) 네트워크 계층(계층이 뭔지는 바로 뒤에 설명드릴게요)

의 데이터필드의 길이나 MAC클라이언트의 프로토콜 종류를 표시합니다.

 

데이터는 최하 46~1500이라고 되어있지만 지금은 9000 그 이상 까지도 된다고 들었습니다.

 

FCS는 CRC 체크섬 이라고 들어보신분도 계실수 있습니다. 이더넷 Frame의 목적지 MAC주소부터 데이터 필드까지

에러발생 여부 확인을 하기위한 필드에요

 

여기서 말을하다보니 3계층 네트워크 계층이란 말이나오고 하는데 여기서 말한 계층은

OSI-7 Layer 계층을 말합니다.

사실 OSI-7 Layer의 설명을 일일이 써가면 하루의 시간 가지고는 힘들것 같습니다.

그래서 간단히만 알아볼게요.

OSI - 7 레이어를 나눈 이유는 편하게 각 계층의 디버깅의 편리함을 위해  즉, 어디가 문제인지 파악하기 쉽다는겁니다.

이건 제가 만든게 아니라 통신에 관한 국제 표준기구인 International Organization for Standarization 이라고하는

ISO...ISO표준을 많이 들어보셨을겁니다. 

 

지금까지 말한 이더넷은 데이터 링크 계층이라고 하는 2계층에서 사용하는 방식입니다.

우리가 흔히아는 IP주소는 2계층의 MAC 주소를 3계층장비인 라우터란 곳에서 RARP(Reverse Address Resolution Protocol)을 거쳐 IP주소로 바인딩(Bind) 해줍니다.  허브,스위치,라우터, 3계층 스위치 등 장비에 대해 들어보신분도 계실r겁니다.

또한 예전 스타크래프트를 할때 멀티플레이어를 누르고 다음 화면을 보면 첫줄에 베틀넷 접속이있고,

그 밑에 IPX라고해서 같은 컴퓨터 실이나 PC방에서 친구들과 해보셨던 경험이 있으신분들도 있습니다.

거기서 말한 IPX는 3계층 의 IPX가 맞습니다.

그리고 위에가면 TCP/IP 통신이다, UDP 통신이다해서 전송계층에서 들어보셧던분들도 있고,

화상 회의 같은 곳에서 접속 IP마다 고유 세션번호를 부여받아 세션별로 영상을 전송하고, 그 영상의 압축 방식은

H.264니, MPEG니  그걸 또 HTTP에서 웹에서 하니 RTSP 니 하는 말도 들어보셨던 분도 있을겁니다. 

그 속에 모두 고유 계층들이 존재합니다. 

 

저는 여기서 이더넷을 설명하면서 물리 계층데이터링크 계층에대해서만 조금만 더 부연해서 다루려고 합니다.

 

(왜냐하면 너무 많기 때문입니다. 아까 설명한거처럼.. 그리고 사실 당장 중요한 개발에 필요한 부분이

하드웨어단의 이더넷 카메라와 뒷단의 윗계층인데 윗계층은 추후 정리해서 적겠습니다.)

 

먼저 물리 계층입니다.

 

물리계층(Physical Layer) 

 - 네 물리 계층은 말그대로 물리적인 부분 우리가 흔히 쓰는 전깃줄, RJ45커넥터라는 전화선같은 랜케이블 끝에

투명한 껍데기에 UTP 케이블들이 있을겁니다. 그걸 말하는 부분이에요, 그리고 PHY라고하는 부분도 물리계층이고

허브라는 장비도 물리계층인데 여기서는 간단히 케이블과 PHY 쪽만 알아볼거에요

 

먼저 케이블입니다.

 

아까 말한 RJ45커넥터는 위의 투명한 케이블을 감싸고 있는 연결단자입니다. 위 사진은 우리가 흔히 아는 UTP 케이블

(Unshield Twisted Pair) 의 약자로 비차폐 꼬임 선 이라고하는건데, 비차폐는 케이블 끼리 전기적인 노이즈에 차폐 기능이 없다는 것입니다. STP케이블이나 다른 케이블을 보면 뭔가로 케이블을 쌓아 놓은 것들을 볼 수 있습니다.

흔히 쉴드, 좀더 노이즈에 강한 케이블이고 UTP보다 그만큼 비싸다고 볼 수 있습니다.

 

우리 가정이나 사무실에서 쓰는건 대부분 UTP일거에요, 아 참 그리고 최근들어 많이쓰는 광케이블들도 물리계층에 속합니다. 두번째 그림에서 파란색 갈색 선들은 안쓰냐고 의문이 들수있습니다. 아뇨 경우에 따라 쓰입니다가 맞습니다.

위에서 4가닥만 쓰는경우는 100-Base라고해서 전송 속도가 100Mbps인경우에 4가닥이 쓰이고

기가비트 이더넷이라고해서 1000-Base 종류는 8가닥 모두 쓰입니다. 

10Base T

10Base FL

10Base 2

10Base 5

100 Base TX

100 Base T2

100 Base T4

1000 Base SX

1000 Base T 

이 외에도 다양하게 구분되는데  앞의 숫자는 속도를 뜻합니다. 저기서 100이나 1000은 BPS 입니다. Byte/S 로 잘못 알고 계신 분들도 많습니다. BPS와 Byte/S 속도는 엄연히 다릅니다.

 

저는 여기서 100Base-T1 을 가지고 그림과 함께 설명 드린겁니다.

그 이유는 100Base-T1이 100MBps 차량용 이더넷 표준이기 때문입니다.

 

자 케이블에 대한 설명은 간단히 여기서 마치고 추후에 차량용 이더넷 케이블이나 뭔가 새로 정리되면

게시하겠습니다.

 

PHY로 넘어가볼까요

흔히 파이라고 많이 말하는 파이가 네 그파이입니다.  (원주율 파이, 라즈베리 파이 이런거 아니에욧)

 

PHY에대해 알아보겠습니다.

PHY의 역할은 쉽게말해 전기적인 물리 신호를 논리신호(1,0,1,0,0,0,0,1...)로 바꿔주거나

논리신호를 반대로 물리신호로 바꿔주는 기능을 합니다. 

아래 그림을 가지고 조금더 간단히 설명을 드리겠습니다.

MII MDI는 조금더 뒤에 설명드리고

 

먼저 PCS라고 하는부분은

논리 신호 즉, 디지털신호(1,0,0,1,0,1,0....)을 전기적인 펄스열로 바꿔주는 기능을합니다.

위에 데이터링크 계층(2계층)인 Mac의 부계층으로 부터 내려온 데이터 스트림을 PHY계층(물리계층)에서 전송을위해

인코딩(Encoding)하거나 PHY 계층에서 올라온 데이터 스트림을 디코딩(Decoding) 하여 MAC(2계층)으로 보내는 역할을

합니다.

또한 PMA 부계층으로 데이터 그룹을 보내는 역할을 합니다.

그리고 아까 CSMA/CD에서 말한 캐리어 감지, 및 충돌 검출 신호를 생성하는 기능을 하는 녀석이 바로 이녀석입니다.

 

그리고 Auto-Negotiation 기능이라고해서 흔히 AN이라고 부르는데 여러 전송방식을 받았을때 자동으로 

알아서 알맞게 맞춰주는 기능을 제어하는 녀석도 이녀석입니다.

 

두번째는 PMA입니다.

 

PCS아래있는 PMA는 당연히 PCS에서 받은 송신신호를 받아서 PMD로 주는 역할을합니다.

(여기서 논리신호와 디지털신호를 PMA에서 서로 매핑해줘요!)

 

마지막으로 가장 밑의 PMD 입니다.

실제 물리적 연결을 제공하는 녀석이고

우리가 물리매체 케이블과같은거에 직접 의존되고 관련되는 기능을 수행합니다.

광케이블이나 UTP ,STP 다른 Fiber들의 물리적 신호를 송수신하는 역할을해요, (물리적 신호만! <- 아날로그신호)

 

아래 그림은 PMA설명을 돕기위한 그림입니다.

여기서 MDI라는 말이나오는데 MDI는 (Media Dependent Interface) 매체 의존 인터페이스라는건데

쉽게 그냥 케이블 물리적인 매체에 의존하는 인터페이스 방식이다라고 이해하시면 될거같습니다.

 

자 그럼 아까 말한 MII에 대해 설명을 간략히 드리겠습니다.

MII는 (Medial Independent Interface)의 약자로 MDI와 반대로 매체에 독립적인 즉, 의존하지 않도록

논리인터페이스를 MAC의 부계층에 제공하는 역할을 합니다.

 

흔히 100Mbps (Fast Ethernet)이 MII라 불리고  아까 선 4가닥 쓴다고 말했자나요?
RMII라고하는 앞에 Reduce의 R을 따서 뭔가를 줄인건데 그건 선을 줄인걸 말해요 선을 2가닥 써서

보내는거에요 어떻게 보내냐구요? 예를들면 100mbps 를 4개선으로 보내면 25mhz의 클럭에

25 x 4 = 100 을 해서 4가닥으로 보낼수있겠네요? 눈치빠르신분들은 아 그럼 

50Mhz로 2가닥하면 100Mbps로 보낼수 있겠구나 하겠죠? 네 맞습니다.

 

이외 GMII 는 Gigabit 의 G를 따고

XGMII 10G 아마 X가 Extention 이였나 이건 기억이 가물해요 저도 안써봤어요

XIGMII 40G

CG 100G C는 컴플렉스일까요? 사실 이건 저도모릅니다. 찾아보면 나오겠죠?

 

여기까지 PHY역할을 마치고

 

MAC으로 넘어가겠습니다.

 

MAC은 (Media Access Control) 의 줄임말로

여러 단말들의 공유매체 사용에 대한 단말 간 충돌/경합 발생을 제어하는 방식을 총칭하여 말합니다.

 

아까 CSMA/CD의 Multiple Access (MA)의 Multiple Access로 일반화하여 말하기도 합니다.

 

MAC은 상위 네트워크계층(3계층)과 하위 물리계층1계층) 사이에있으니

그 사이에서 상호간 통신을 돕도록 역할을 해주는 놈이겠죠

 

 

상위 계층에서 흔히 말하는 인터넷 패킷이라고 들어보셨을겁니다. 

흔히 데이터라고도하고 데이터를 일정크기들로 자른녀석이라고도 합니다. 그게 그겁니다

 

아까 이더넷 프레임이라고하는 부분은 위의 패킷을 물리적인 네트워크 프레임 포맷에 맞춰

나온 녀석이라고 보면 편합니다. 그리고 반송파검출이라고해서 CSMA/CD에서  물리 매체 상의

장애가 되는 부분을 검출하는 역할과 약간의 에러를 제어하는 역할도 해요.

 

그리고 IP주소를 MAC주소로 바꿔주는 (Address Resolution ) 기능을 합니다.

Address Resolution에 대해 조금 부연설명을 드리면

물리 주소와 논리 주소, 이름과 주소 사이 등을 서로 맵핑 시켜주는역할 (주소 해석.주소결정)

서로 다른 주소체계를 갖고 있는 양단 간에 적절하게 상대 주소로 바꾸어주는 역할(주소 변환)

ex) 1개의 실제 공인 IP주소를 다량의 가상 사설 Ip 주소로 변환 (NAT)

     전화번호, 이메일,홈페이지, 전화 등 모두를 하나의 단일 주소로 변환 (ENUM)

      이런 기능을 한다고 해요 저도 이건 몰랐어요 

 

그리고 MAC에서 지원되는 부분이 곧 상위 계층으로 데이터를 올려버리기 위한 매우 중요한 부분입니다.

예를들면 MAC이 지원되는 MCU나 DSP, ISP 등을 살펴보면

UDP 를 기반으로한 RTP 프로토콜이 지원이된다, DHCP 기능이 있다, AVB 프로토콜이 지원된다 

이런 특징적인 부분들이 있습니다.

 

이말은 즉 전송계층(4계층에서) UDP에 인캡슐화 하여 RTP프로토콜로 영상이나 실시간 데이터를

전송하여 웹이나 기타 서비스를 실행할수있게됩니다. DHCP는 간략히설명드리면

컴퓨터에서 네트워크 설정에서 -> 고급옵션-> TCP/IP  속성 변경을 누르시면

자동으로 IP받기 자동으로 할당받기 기능이 있을겁니다. 네 말그대로 가상의 IP주소를

할당받을수 있다는 겁니다. 예를들어  해당기능이 지원되는  MAC을 가진 MCU나 기타 다른 디바이스의

PHY를거쳐 커넥터를 통해 공유기에 연결하면  공유기의 DHCP 기능에의해 내부망의 가상 IP (192.168.x.x) 로 바꿔줍니다. 실제 이주소는 아니지만 같은 네트워크 망에서 우리는 이부분에 접근하여

소켓프로그래밍을 할 수도 있습니다. 

 

해당 고유 Defualt 실제 물리주소(맥주소)나 IP주소는

MAC을 가진 디바이스 (ex MCU, ISP, FPGA SOC의 ARM 코어 등)의 IP 어드레스 레지스터와

MAC 어드레스를 살펴보면되는데 제가 알기로는 MAC 어드레스 레지스터는 읽기전용일겁니다.

가끔은 위 디바이스를 구입하는곳에서 Bin로 파일로 주는경우가있는데 이경우

UART나 다른 통신을 통해 터미널을 통해 확인하거나 변경할수 있는 기능을 지원하기도 합니다.

 

여기까지 이더넷 관련하여 조금 물리적인 부분의 설명을 첨가하여

이번 포스트는 마칠게요!

 

그리고 송신지 주소와 수신지 주소의 식별하는 역할도 해요!

 

(맥의 LLC 계층과 MAC 부계층에 대한 설명이 함께 섞여있는데요, 저기서 3계층과 밀접하여

역할을 하는 부분은 LLC계층이고 하위 물리계층과 연결된 부분의 역할은 MAC이합니다)

 

 

 

300x250

'Network' 카테고리의 다른 글

TCP 와 UDP  (0) 2020.07.31
ONVIF와 영상 데이터 스트리밍 프로토콜  (0) 2019.10.08

댓글