프로그래밍/네트워크

OSI 7계층 - 물리계층, 데이터링크계층, 네트워크계층

브래드 킴 2022. 12. 20. 17:10
728x90

개발자에게 항상 숙제와도 같은 네트워크를 정리해보고자 한다. 백엔드 개발자가 필수적으로 알아야 하는 개념위주로 정리하고자 한다.

이번 글에서는 먼저, OSI 7계층 중 물리계층, 데이터링크 계층, 네트워크 계층에 대해서 다루고자 한다. 네트워크 계층 에 IP와 라우터에 대한 내용이 포함되어 있으나 이는 중요하고 양이 많으니, 여기 를 참고하길 바란다.

OSI 7계층은 ISO라는 국제표준화기구에서 제정한 통신 프로토콜(약속)이다. 두대의 컴퓨터간에 데이터를 주고 받기 위해 데이터를 만들어가는 과정을 OSI 7계층이라고하는 7개의 추상적이고 계층화된 절차로 정의한것이라 볼 수 있겠다.

<데이터 수신자 입장>
(발신자로부터 온 전기신호) -> 물리계층 -> 데이터 링크 계층 -> 네트워크 계층 -> 전송계층 -> 세션계층 -> 표현계층 -> 응용계층

<데이터 발신자 입장>
응용계층 -> 표현계층 -> 세션계층 -> 전송계층 -> 네트워크 계층 -> 데이터 링크 계층 -> 물리계층 -> (수신자에게 보내는 전기신호)

 

 

1.물리계층(layer1)


일단 두대의 컴퓨터가 서로 데이터를 주고 받는 네트워킹을 하기 위해서는 물리적 장비간에 전기신호를 통해 데이터를 주고 받아야 한다. 이 전기 신호를 컴퓨터가 이해할 수 있는 bit(0 또는 1)단위로 변환하는 일련의 작업을 수행하는 추상적인 공간을 물리계층이라고 정의할 수 있겠다. 그리고 그 실질적인 역할은 랜카드가 수행한다.

데이터 전송시에 데이터를 전기신호로 변환하여 전송하는 계층이 물리계층이다.(또는 전기신호를 bit데이터로 변환하여 수신하는)

즉, 네트워킹을 위한 컴퓨터구조상 최전선에 있는 계층이라 보면 될 것 같다.

 

일단, 아래 그림을 기억해두자. 앞으로 배우게 될 모든 계층에서 header(데이터)가 하나씩 더해지고, 이 데이터가 최종적으로 물리계층에서 전기신호로 변환되어 전송이 된다는 점. 아직은 각 계층에서 더해지는 데이터들이 무슨말인지 모르겠지만, 하나씩 배워나갈 것이다.

 

출처)http://networkstatic.net/how-headers-encapsulate-in-the-osi-stack/

 

마지막 전기신호로 변환하는 물리계층의 작업은 주로 랜카드를 통해 이루어진다. 랜카드는 0,1로 이루어진 데이터를 디지털 전기신호로 변환하는 작업을 한다.(또는 수신시에는 그 반대) 이때 랜카드의 식별자 역할을 하는 것이 랜카드마다 부여된 MAC주소이다.

추가적으로)

데이터의 전송은 패킷 단위로 전송이 된다. 패킷이란 네트워킹시 데이터는 패킷단위로 분할되고 패킷단위로 송/수신 하게 된다. 패킷은 네트워크를 통해 전송되는 표준화된 작은 데이터 단위인데, 만약 데이터의 단위가 들쭉날쭉하고 너무 크면 대역폭(bandwidth)을 너무 많이 차지해서 네트워크상에 데이터의 교통체증을 발생시키게 될것이다. 그래서 데이터의 크기를 규격화한것.

 

 

2.데이터 링크 계층(layer2)


데이터 링크 계층에서는 LAN통신(근거리 통신)관련한 처리를 다룬다.(근거리란 사내망, 가정내에서 wifi 사용범위 등의 개념을 생각하시면 편합니다.) 위 계층 사진을 보면 layer2인 데이터링크 계층에서는 layer3,4 등 윗 계층에서 내려온 데이터에 이더넷헤더 라는 것을 더해  조립하게 된다. 

즉 물리계층으로 데이터를 내려보내기 전에 이더넷 헤더라는 데이터를 추가적으로 더하는 과정을 거치는 것이다. 랜에서 사용되는 목적지의 주소 + 출발지의 주소 등 필요한 정보의 조립 과정을 거친다. 이때 사용되는 주소는 이더넷주소라고 부르고, 실직적으로는 MAC주소가 사용된다. 이 이더넷주소를 포함한 데이터들이 이더넷헤더로 최종적인 데이터에 추가조립되는 것.(이더넷이 무엇인지는 아래에서 배우게 될 것이다.)

발신자 입장에서 데이터 링크 계층에서의 이러한 조립 과정을 캡슐화 라고 하고, 수신자 입장에서는 그 반대로 역캡슐화를 통해 데이터를 꺼내는 작업을 하게 된다. (글에서는 주로, 캡슐화 입장에서 글을 서술할 것이지만, 수신자 입장이 혼재될수도 있으니, 양해 부탁드립니다.)

데이터 링크 계층에서는 LAN(근거리 통신)내에서 데이터를 어떤식으로 전송할지에 대한 규칙을 정의한다. 이때 이더넷이라는 개념이 등장하게 된다. 이더넷은 근거리 통신에서의 데이터를 주고 받는 규칙을 말한다. 흔히 랜 환경하에서 통신방식, 충돌해결, 장비 등에 관해서 규칙과 표준을 정의하고 있다.

이때 나오는 등장하는 장비가 위 그림의 스위치라는 장비이다. 간단히 말하면 A컴퓨터->스위치->B컴퓨터->스위치->A컴퓨터 등 네트워크 중간에서 브릿지 역할을 해주는 장비이다. 레이어2에 있는 스위치라고 하여 L2 스위치라 부르기도 하고 스위칭 허브라고 부르기도 한다.

각각의 컴퓨터에 있는 LAN의 MAC주소를 기반으로 상호 식별하고 스위치를 중심으로 통신이 이루어진다고 보면 될듯하다. 예전에는 허브라는 장비를 사용했었지만, 충돌 문제와 통신방식(반이중통신)에서의 문제 등으로 이젠 대부분 스위치를 사용한다.

그외 복잡한 내용들이 더 많이 있으나

데이터 링크계층에서 하는 핵심적인 일은, 근거리 통신에 대한 규칙을 정의하고 MAC기반의 주소로 된 이더넷주소를 포함한 이더넷정보를 이더넷헤더로 하여 데이터에 추가조립한다 정도만 기억하면 될 것 같다.

3.네트워크 계층


앞서 말한 데이터 링크 계층에서는 이더넷을 기반으로한 같은 네트워크 내에서의 근거리 통신만을 정의하고 있는 반면, 네트워크 계층에서는 인터넷과 다른 네트워크와의 통신을 처리하기 위한 정보를 추가 조립한다. 가정/회사 내에서의 사내망을 벗어나 인터넷망을 통해 외부와 통신하기 위한 정보라 보면 된다. 이때 더해지는 데이터는 IP헤더이다. IP와 관련된 데이터들이 네트워크 계층 단계에서 더해지는 것이다.

 

사내망에서 다른 회사로 이메일을 보낼경우, 사내망내에서 나의 이더넷정보가 어떻게 되는지는 데이터링크계층에서 조립되고, 다른 회사 네트워크에 대한 정보는 IP정보일 것이기에, 네트워크계층에서 IP헤더에 더해진다고 보면 된다.

앞서 데이터링크계층에서는 스위치 장비가 근거리에서 브릿지 역할을 하였으나, 인터넷환경에서는 다른 네트워크까지의 최적경로를 찾아주는 위 그림의 라우터라는 장비가 필요하다.(뭔가 안테나가 생겼으니 이걸로 구분하도록해보자)

또한 앞서 본바와 같이 LAN에서는 MAC주소로 장비를 식별하여 통신하였지만, 서로 다른 네트워크간에는 IP주소가 필요하게 된다. 라우터가 이 IP주소를 가지고 데이터를 전송하게 된다. 그래서 어떤 주소의 어떤 경로로 데이터를 보내겠다 라는 것을 라우팅 한다라고 표현한다.

앞서 데이터 링크 계층의 역할 중 한가지는 근거리 통신에 있어 데이터를 조립하는 역할이라고 말했고, MAC주소가 사용된다고 말하였다. 네트워크 계층에서도 데이터를 조립하는데 이때 사용되는 주소는 출발지 및 도착지 IP주소가 사용된다. 이때 사용되는 IP정보를 포함한 헤더정보를 IP패킷이라 부른다 정도를 기억해두자.

사실 라우터와 IP에 대한 체계는 굉장히 중요하고, 다뤄야할 내용이 많다. 그래서 이번 글은 여기서 끊고, IP와 라우터에 대해서는 다음글에서 별도로 다루고자 한다.




728x90