본문 바로가기

TIL

백엔드 개발자라면 당신이 알아야 할 것! OSI 7 계층

정보처리기사 필기 실험을 보았다.

아마 개발자를 준비, 특히 백엔드 직군을 대비하고 있다면,

정보처리기사(정처기)나, SQLD 등의 자격증을 준비하고 있는 분들이 계실 것이다.

 

그 뿐만 아니라, 부트캠프나 혹은 면접을 볼 때,

osi 7계층, 혹은 TCP/IP 계층에 대해 꼭 질물을 물어보았다는 경험이 있을 것이다.

나 또한 질문을 받아보았고, 정처기 문제에서도 빈도 높게 나온 만큼, 이번에 한번 다뤄보고자 한다.

 

 

OSI(Open System Interconnection Reference Model) 7계층이란?

먼저 osi 7계층에 대해 설명하기에 앞서 이것이 왜 필요한지, 무엇을 정의하는 지 알 필요가 있다.

컴퓨터는 0과 1이라는 무수한 전기적 신호를 주고 받으면서 통신을 한다.

위의 그림처럼 아주 간단하게.. 신호를 주고 받는 것을 모식화했다.

이렇게 전기적 신호를 주고 받으려면, 서로 간에 특정 신호가 무엇인지 약속을 해야 한다.

왜냐하면, 예를 들어, 나는 011001 을 '포도'를 뜻하는 단어로 전송했지만, 상대가 이것이 '포도'임을 모르면 실패하게 된다.

통신을 원활하게 하기 위해, 011001임은 '포도'임을 뜻하는 서로 간에 약속을 해야 한다.

그리고 이러한 약속을 프로토콜(Protocol)이라고 한다.

 

이러한 프로트콜이 여러 과정을 거쳐 통신이 되는 것을 '계층'으로 나누기도 하는데,

여기서 잘 알려진 것이 OSI 7계층이다. 왜냐하면 국제표준화기구(ISO)에서 만든 규격이고,

TCP/IP 규격이 사용되기 전 까지는 보편적으로 쓰인 규격이기 때문..

 

 

OSI 7계층의 작동 방식

이 7계층이 작동되는 방식을 쉽게 도식화한 이미지가 있어 가져왔다.

먼저 전송하는 측은, 7번째 계층인 Application Layer(응용 계층)에서 시작하여,

아래로 계속 내려 1번째 계층인 Physical Layer(물리 계층)으로 간다.

내려가는 동안 데이터는 암호화, 헤더 추가 등의 가공 과정을 거친다. 

이렇게 데이터가 동봉되고 가공되는 과정캡슐화(Encapsulation)이라고 한다.

 

마찬가지로, 수신받는 측은 받은 데이터를 위의 계층으로 올리면서 해석을 하여 최종적으로 사용자에게 전달된다.

한마디로 가공되고 동봉된 데이터를 점점 풀어쓴다는 것인데.. 이 과정은 캡슐화의 반대인,

역캡슐화(Decapsulation)이라고 한다.

 

 

계층에 대한 지식이 필요하다

사실.. 이 부분에 대해서는 나도 정확히는 아직 알지는 못한다.

하지만, 정처기를 준비하는 사람이라면, 이 부분에 대해선 반.드.시 나오니 각 계층이 어떠한 역할을 하고,

이름이 무엇인지 어느 정도 알고는 있어야 한다. 그럼 해설 시작!

 

7: 응용 계층 (Application Layer)

맨 마지막 계층인 7번째 계층이다. 데이터 발신 시 가장 먼저 출발하며, 수신자 측에서는 마지막으로 가공되는 계층이다.

응용 프로그램과, 그러니까 예를 들어 chrome이나 Fire Fox와 같은 브라우저 등와 직접 상호작용 하는 계층이다.

프로토콜로는 우리가 흔히 아는 HTTP, 그리고 SMTP가 있으며, 그 외에 FTP / POP3 / IMAP / Talent 가 있겠다.

그림으로 표현을 하면 다음 아래와 같다, 좌측은 발신자의 예시, 우측은 수신자의 예시:

 

 

6: 표현 계층 (Presentation Layer)

표현 계층에서는 전송하는 데이터의 표현방식이 결정되는 곳이다.

데이터의 표현방식의 예시를 들지면, 우리가 흔히 쓰는 이미지 파일, jpeg / png 가 있지 않은가?

이것을 결정하는 곳이다. 또한 데이터를 압축하고 암호화하는 과정을 거치는 곳이기도 하다.

당연히, 발신자 측에서 데이터를 압축/암호화하여 전송하는 계층인 만큼, 수신자 측에서는 압축과 암호화를 푸는 역할을 한다.

 

 

5: 세션 계층 (Session Layer)

온라인 게임을 하면서 "세션을 생성합니다."와 같은 문구를 본 적이 있는가?

세션은 네트워크 연결 상태가 지속되어 있도록, 유지되도록 해주는 기술이다. (그 이상은 나도 잘 모른다..ㅜ)

이러한 세션을 유지, 생성, 삭제, 변경이 이루어지는 계층이라 이해하면 편하겠다.

 

 

4: 전송 계층 (Transport Layer)

이 곳에서는 전송 방식(TCP/UDP)를 결정한다.

TCP: 신뢰성 있는 통신방법. 수신자에게 "너 이거 받았어? 오케이, 그럼 다음 거 보낼께~" 이렇게 차근차근 확인하면서 보낸다고 이해하면 된다.

UCP: 속도가 생명인 통신방법. 수신자에게 질문은 커녕 무조건 쏘아 보낸다고 생각하면 된다. 당연히 에러나 빠꾸나 나는 경우가 많다.

또한 여기서 부터는 전송하는 데이터가 세그먼트(Segment)로, 일명 전송 단위로 쪼개져서 전송된다.

반대로 수신하는 경우에는 세그먼트를 합쳐서 원상 복구를 진행하는 계층이다.

 

 

3: 네트워크 계층 (Network Layer)

전송될 위치인 네트워크 주소(IP)를 정한 다음, 그 주소로 어떻게 가야 하는지 경로(Route) 또한 설정하는 계층이다.

당연히 경로를 지정하는 만큼, 라우터(Router)가 여기서 중요한 역할을 한다. 전송 단위는 패킷(Packet)

 

 

2: 데이터 링크 계층 (Data Link Layer)

물리적 주소, 즉, MAC address(주소)가 여기서 부여가 된다. 전송 단위는 프레임(Frame)

사실 나도 MAC 주소가 정확히 무엇인지 모르겠다. 다만, 물리적 주소라고 하는 만큼,

브릿지, 스위치, 이더넷과 같이 실제 물리적으로 연결된 장비들에서 관리된다고 생각하면 되겠다.

이해를 위해 쉬운 그림 하나를 가져왔다:

 

 

1: 물리 계층 (Physical Layer)

드디어 마지막 계층이다. 여기서는 0 과 1로 이루어진 기계어를 전기 신호로 변환하여 전송하는 계층이라 생각하면 되겠다.

전송 단위는 당연히 0(전압 낮음)과 1(전압 높음)으로 이루어진 bit(비트)이다.

 

 

 

 

이렇게. 해서 OSI 7계층을 다뤄보았다.

다만, 요즘에는 여기서 좀 업데이트가 된 TCP/IP 계층을 사용한다고 한다. 한꺼번에 설명을 하기에는 부담스러우니,

OSI 7계층과 비교하는 도식표 하나를 보여주겠다.

상당히 유사하지 않은가...? 앞서 설명한 내용과 유사하다고 느낄 것이다. 하지만 미묘하게 다르기 때문에 같다고 생각하지 보다는, 별도로 알아두는 것이 좋다고 생각한다.