[네트워크] OSI 7계층

고럭키·2021년 10월 4일
0

네트워크

목록 보기
1/1

이 포스팅을 작성하고서 더 궁금한 부분들이 있어서 찾아보면서 우아한 테크코스 테코톡 OSI 7계층 영상 by 히히님 영상을 보게 되었습니다. 보면서 새로 알게되거나 추가적으로 기록해두고 싶은 내용들을 이탤릭체로 추가하였습니다 ! 정말 설명이 잘 되어있고, 이해가 잘 되게 설명해주시는 영상이라는 생각이 드니 한 번씩 읽어보셔도 좋을 것 같습니다.

네트워크 관련 첫 포스팅으로는 아무래도 네트워크 통신에 있어서 전반적인 흐름을 이해할 수 있는 OSI 7계층과 관련한 내용을 다루는 것이 좋을 것 같다고 생각했다 ! OSI 7계층에 대해서 정리해보자 !

OSI 7계층이란 ?

국제표준화기구 ISO에서 개발한 네트워크 통신 규격으로, 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 모델이다.

간단하게는 네트워크 통신 과정을 7단계로 정의해둔 것이라고 생각하면 좋을 것 같다.

아래의 그림과 같이 7계층으로 나뉘어있다. 각 계층에 어떤 종류의 프로토콜이 있는지 각 프로토콜은 어떤건지 알아보기엔 너무너무나 방대하고, 중요한 프로토콜에 대해서만 추후 포스팅에서 다뤄보기로 하고, 이번 포스팅에서는 각 레이어가 어떤 역할을 수행하는지, 네트워크 통신 과정을 러프하게 알아보자 !

왜 OSI 7계층 ?

그렇다면 왜 네트워크 통신을 OSI 7계층이란 규격을 정의해두었을까 ?

먼저 규격이라는 의미에 맞게 어디에서 만든 통신 장치 및 소프트웨어라도 이 규정을 따라 만든다면 서로 통신할 수 있도록 서로 알아들을 수 있는 네트워크 통신의 룰을 만들어두는 것이다. 또한 네트워크 통신 과정을 게층별로 모델링하여 나타냄으로 네크워크 통신 과정을 단계별로 파악하기에 용이하다.

오케이 ! 왜 규격을 정의해둔지는 알겠는데 그럼 왜 꼭 계층화 모델로 만들어두었을까 ?

이것은 OSI 7계층 외에도 레이어드 모델이라면 가지는 장점이라고도 볼 수 있는데, 어떤 계층에서 문제가 생겼는지 파악도 쉽고, 특정 계층에 문제가 생겼을 때 다른 계층에 영향과 수정없이 문제가 발생한 계층만을 수정해서 해결할 수 있기 때문이다. 즉, 계층간의 역할 분리가 명확해지고 어느정도의 독립성을 띈다는 것이다.

이제 1계층부터 7계층까지 순서대로 어떤 계층인지 알아보자 !😇

1계층 : Physical Layer

물리 계층은 데이터를 전기적인 신호로 변환해서 전달하는 기능을 수행한다.

통신 케이블을 통해서 비트 단위의 0과 1로 이루어진 데이터를 ON과 OFF의 전기적인 신호로 바꾸어 전달하는 것이다. 따라서 이 물리적인 계층은 완전한 하드웨어 계층이다.

물리 계층의 예로는 리피터, 케이블, 허브 등이 있다.

+ ) 조금 더 구체적으로 이해가 되는 설명을 덧붙이자면 실제로 와이어로 연결된 머신 사이에서 0과 1로 이루어진 디지털 데이터를 아날로그 신호로 바꾸어 와이어를 통해서 전송하는 것. (인코딩) 또한 받은 아날로그 신호를 디지털 데이터로 변환하는 것. (디코딩)

데이터링크 계층은 직접 연결된 두 장치간의 데이터 전송을 담당하는 기능을 수행한다.

네트워크 환경에서 End to End, 즉 출발지부터 목적지까지 데이터를 전달하기 위해서는 Point to Point, 즉 직접 연결된 두 장치간에 데이터가 전달되어야 할 것이다. 이를 담당하는 것이 데이터링크 계층이다. 따라서 장치의 고유한 주소인 MAC주소를 통해서 데이터 전달이 이루어진다.

또한, 물리 계층에서 데이터를 전기적인 신호로 변환해주는 것만을 수행했으므로 데이터링크 계층에서 Point to Point에서 프레임이 안전하게 전달될 수 있도록 그 관리도 수행한다. 여기에는 에러 검출, 흐름 제어, 재전송 등이 있다.

데이터링크 계층의 전송 단위는 프레임이다.

데이터링크 계층의 예로는 브릿지, 스위치 등이 있다.

+ ) 여기서 직접 연결되었다는 것은 1계층처럼 단순 와이어로 직접 연결된 두 머신만을 칭하는 것이 아니다. 그렇다면 1계층만으로 전송이 가능한데.. 같은 네트워크 즉, 스위치를 통해서 직접 연결된 여러 머신들이 데이터를 주고받기 위한 처리들을 수행해준다. 구체적으로 같은 네트워크 상에 있는 여러 머신에서 데이터가 올 때, 그 데이터를 제대로 구분해서 받을 수 있도록 Framing 작업을 해주는 역할을 한다.

3계층 : Network Layer

네트워크 계층은 데이터를 목적지까지 전송하기위해 최적의 이동 경로를 설정하여 패킷을 전달하는 기능을 수행한다. (라우팅, 포워딩)

목적지의 IP 주소를 지정하고, 목적지까지 도달하기 위해서 각 노드를 거칠 때마다 경로를 지정하여 패킷이 목적지까지 도착하도록 한다.

네트워크 계층의 전송 단위는 패킷이다.

네트워크 계층의 예로는 라우터, IP, L3 스위치 등이 있다.

+ ) 경로를 어떤 기준으로 어떻게 설정하는지 라우팅에 대해서 궁금한데, 이것은 후에 새로운 포스팅으로 자세히 알아보고자한다 ! 혹시 글을 작성하면 여기에 링크를 추가하도록 하겠습니다 ! 🔥

4계층 : Transport Layer

전송 계층은 End to End, 종단간의 데이터 전송이 활성화될 수 있도록 전반적인 관리를 수행한다. 또한 전송 계층에서 통신의 신뢰성을 보장할 수 있다.

통신을 위해서 데이터를 분할하고, 다시 합치는 기능을 수행한다. 또한 흐름제어, 혼잡제어, 오류제어와 같은 기능을 수행한다.

전송 계층의 단위는 세그먼트 이다.

전송 계층의 예로는 TCP와 UDP가 있다. 이들은 나중에 별도의 포스팅으로 자세히 다뤄보면 좋을 것 같다.

+ ) 이제야 전송 계층의 역할을 명확하게 이해한 것 같다. 전송 활성화.. 관리.. 그게 뭔데.. 싶었고, 신뢰성은 프로토콜마다 다른 거 아니야..? 뭐지 싶었는데, 실제로 전송 계층의 주 기능은 하나의 머신에서 실행되고 있는 여러 프로세스들이 통신을 수행하면서 머신이 수신한 데이터를 port 번호를 기준으로 적절한 프로세스에게 할당하는 것이다.

5계층 : Session Layer

세션 계층은 두 호스트간에 논리적인 연결을 생성하고 이를 유지하는 기능을 수행한다.

통신을 하는 두 호스트간에 세션을 열고, 이를 유지하고, 닫고, 관리하는 모든 기능을 수행한다. 또한 두 호스트간의 동기화 기능을 수행한다.

  • 여기서 동기란 💡 통신을 하는 두 호스트가 모두 동의하는 논리적인 처리 지점을 말한다. 즉 이 동기점 이전까지의 통신은 완전하게 처리되었다는 것을 의미한다. 이 동기점은 오류 복구를 위해서 필수적으로 사용된다고 한다.

세션 계층의 예로는 Socket, SSL/TLS 등이 있다.

6계층 : Presentation Layer

표현 계층은 데이터 표현에 대한 독립성을 제공하는 계층으로, 데이터 포맷을 정의하는 기능을 수행한다.

즉, 여러 응용 계층에서 공통되게 데이터를 이해할 수 있도록 네트워크 통신에서 사용된 형태의 데이터를 응용 계층에서 필요한 데이터 형태로 변환하는 과정을 수행하는 것이다. 또한 압축, 암/복호화 과정도 표현 계층에서 수행된다.

표현 계층의 예로는 JPEG, MPEG 등이 있다. ( 해당 형태의 데이터 포맷으로 변환하는 것 ! )

7계층 : Application Layer

응용 계층은 사용자가 이용하는 네트워크 응용 프로그램, 즉 사용자 인터페이스를 말한다.

사용자의 응용을 위한 모든 프로토콜 및 프로그램이 해당된다.

응용 계층의 예시로는 HTTPS, SMTP, 웹 브라우저, 전자메일 등이 있다.

+ ) TCP/IP 모델 ?


TCP/IP 모델이란 OSI와 마찬가지로 네트워크 모델인데, 현대 인터넷은 TCP/IP 모델을 따르고 있습니다. 그리고 위의 그림처럼 TCP/IP 모델이 업데이트되면서 OSI 모델과 유사해지고, 5-6계층만이 없는 형태가 되었다.

정리하며..

지금까지 OSI 7계층이란 무엇인지, 각 계층은 어떤 역할을 수행하는지 등을 살펴보았다. 이제 이 네트워크 7계층을 통해서 전반적인 네트워크 통신이 어떻게 수행되는지 그림을 그려볼 수 있을 것이다.

아래의 그림은 7계층으로 나누어져 있지는 않다. 하지만 각 계층을 거치며 메세지가 어떻게 캡슐화, 디캡슐화되는지 그리고 출발지에서는 상위계층부터 하위계층으로 그리고 목적지에서는 하위계층으로부터 상위계층으로 데이터가 전달되는 전반적인 과정이 잘 보여지는 것 같아서 붙여보았다 !

참고 자료 1 : https://jhnyang.tistory.com/194
참고 자료 2 : https://goodgid.github.io/OSI-7-Layer/
참고 자료 3 : https://www.stevenjlee.net/2020/02/09/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-osi-7%EA%B3%84%EC%B8%B5-%EA%B7%B8%EB%A6%AC%EA%B3%A0-tcp-ip-4%EA%B3%84%EC%B8%B5/

0개의 댓글