OSI 7계층 프레젠테이션 프로젝트

프로젝트에 참여하기

국비과정 교육기간에 CS관련 발표 프로젝트를 진행했습니다.

프로젝트에 참여하고 싶은 사람만 하고 CS에 대해 전혀 몰랐기 때문에 대학 때 지원했습니다.
이렇게 다섯 명이 모였고 발표 주제는 OSI의 7계층으로 정했다.

팀 프레젠테이션

리더: 최영락
멤버 : 문기연, 박종휘, 정송화, 정유섭

프로젝트 기간

2022.04.14 ~ 2022.05.13


OSI 7계층이란?

OSI 7계층은 네트워크의 통신 프로세스를 7단계로 나눕니다.

OSI 7 계층이 생성된 이유는 무엇입니까?
네트워크 통신 초기에는 모든 네트워크 통신 장비 제조사가 참조할 수 있는 표준화된 모델이 필요했기 때문이다.

네트워크 흐름이 한눈에 보이고 단계별로 잘 구분되어 있습니다.
따라서 문제가 발생하면 전체 레이어가 아닌 해당 레이어만 수정할 수 있기 때문에 유지 관리가 쉽습니다.

실제로 오늘날 인터넷은 OSI 모델이 아닌 TCP-IP 모델을 사용합니다.

왜?
기술의 가용성을 고려하지 않은 이론적 모델로서 구현에 많은 제약이 있음.
TCP-IP 모델보다 출시 시기가 늦어 이미 TCP 모델이 장악하고 있는 네트워크 시장에 진입하기가 쉽지 않았다.

그런데 왜 공부를 해야 할까요?
OSI의 7계층은 각 계층 간의 역할을 분리하여 오늘날 네트워크 장치를 제조할 때 본질적으로 OSI의 7계층을 참조합니다.

현재 사용하고 있는 모델은 OSI 모델과 기존 TCP 모델의 장점만 모아서 만든 모델이며, OSI 모델에 의해 지속적으로 업데이트 됩니다.

즉, OSI 7 계층에 익숙해져야 합니다.


7번째 레이어 – 애플리케이션 레이어

OSI 7계층의 최상위 계층입니다.
이를 애플리케이션 계층이라고 합니다.

  • 사용자가 액세스할 수 있고 프로토콜(HTTP, SMTP…)에 의해 관리되는 다음 계층입니다.

휴대폰이나 컴퓨터에서 웹사이트를 방문하세요. 웹사이트가 보이면 이미 레벨 7을 통과한 것입니다.

6번째 레이어 – 프리젠테이션 레이어

6계층 프레젠테이션 계층입니다.

  • 응용계층에서 내린 명령이나 보낸 데이터를 어떻게 표현할지 결정하는 계층이다.

    → 데이터를 부호화하여 오류 없이 교환할 수 있도록 데이터를 표현하는 레이어입니다.

레이어 6의 역할은 인코딩과 디코딩입니다.

그림에서와 같이 JACK_DATA라는 이름의 데이터는 인코딩 과정에서 변환, 압축, 최종 암호화 과정을 거치며 그 반대의 과정이 디코딩이다.

『7단계는 인간의 말처럼 6계층으로 데이터를 보내는 것으로, 6계층에서는 데이터를 공통 표준 포맷에 따라 부호화 및 복호화하여 다른 컴퓨터와 호환되도록 한다.
계층 6은 코드 간의 변환을 담당하여 사용자 시스템에서 데이터 형식의 차이를 처리하는 애플리케이션 계층의 부담을 덜어줍니다.

  • 인코딩: 인간의 언어 -> 컴퓨터 언어

  • 해독: 컴퓨터 언어 -> 인간의 언어

인코딩 및 디코딩 원칙을 저장하는 적절한 테이블이 있습니다.

(참조 링크: (팀 프로젝트) OSI 7계층 프리젠테이션 프로젝트)

레이어 5 – 세션 레이어

네트워크 양쪽에서 연결을 관리하고 연결을 활성 상태로 유지하는 5계층 세션 계층입니다.
즉, 커뮤니케이션을 위한 훌륭한 관문이라고 생각할 수 있습니다.

  • 세션이 종료, 유지 또는 중단된 경우 복구하는 기능이 있습니다.

    세션: 웹 서버에 대한 사용자의 연결을 단위로 봅니다.

세션 계층은 데이터 흐름 내에서 동기화 지점을 제공합니다.
동기점은 단순히 체크포인트로 생각할 수 있습니다.

예를 들어 5MB 마다 체크포인트가 있는 50MB 파일을 전송하다가 최대 33MB 까지 전송하다가 오류로 파일이 갑자기 멈춘다면 보통 처음부터 파일을 보내야 하는데 세션 레이어에서 체크포인트를 설정해줍니다.
따라서 30MB부터 추가 배포가 가능합니다.

동기화 시점 설정이란 통신이 이전 시점까지 처리된 것을 의미하며, 에러가 발생하면 이후 프로세스만 복구할 수 있습니다.

레이어 4 – 전송 레이어

레이어 4 전송 레이어입니다.

데이터는 대상 컴퓨터의 포트 번호를 확인하여 응용 프로그램을 찾을 수 있습니다.
따라서 전송 계층은 데이터가 다른 응용 계층을 정확하게 찾을 수 있도록 포트 번호를 추가합니다.

포트 번호는 발신자와 수신자를 식별하는 번호입니다.

같은 주소에 거주하는 가족 중에서 정확한 수령인을 지정하여 송달하는 것입니다.

또한 패킷이 전송 과정에서 목적지 컴퓨터에 원활하게 도착할 수 있도록 패킷 전송을 제어하는 ​​역할을 하며 핵심 프로토콜은 TCP와 UDP이다.

패킷 : 컴퓨터간에 데이터를 주고받을 때 네트워크를 통해 전달되는 데이터 조각 → 정보를 보낼 때 형식에 따라 보낸다.

TCP는 컴퓨터 사이에서 “Sent”와 “Arrived”라는 단어로 서로에게 Acknowledgement 메시지를 전송하여 통신하며, 여러 번의 Acknowledgement 과정을 통해 데이터를 정확하게 전달합니다.
따라서 UDP보다 느립니다.

반면에 UDP는 데이터를 전송하기 때문에 더 빠르게 데이터를 전달할 수 있지만 신뢰성은 보장할 수 없습니다.

택배로 비유하자면..!

택배 기사님이 하나하나 정보를 확인하고 택배를 보내드립니다.
→ TCP
택배를 문 앞에 두겠습니다.
→ UDP

전송 계층의 또 다른 역할은 “분할”입니다.

쉽게 말해서 어시장에서 참치를 산다고 가정하면 참치는 너무 커서 쉽게 들고 다닐 수 없습니다.
그렇기 때문에 우리는 참치를 쉽고 편리하게 섭취할 수 있도록 나누어 먹어야 합니다.
이 과정을 세그멘테이션이라고 하며 세분화된 부분을 세그먼트라고 합니다.

왜 세분화해야 합니까?

예를 들어, 수신한 상위 계층 데이터를 그대로 전달한다고 가정하자.
100MB 비디오를 재생하려면 전체 데이터 블록이 재생되기 전에 전달되어야 합니다.

하지만 분할을 통해 패킷을 분할하고 라우팅하면 어떻게 될까요?
전송된 데이터를 먼저 재생할 수 있습니다.
즉, 다운로드하는 동안 비디오를 볼 수 있습니다.

데이터 수신 중에 연결이 끊어지더라도 데이터 블록은 손실됩니다.
따라서 공유 데이터보다 손실률이 높습니다.
그래서 세분화입니다.

레이어 3 – 네트워크 레이어

레이어 3 네트워크 레이어입니다.

실제로는 데이터를 보내려는 곳으로 데이터를 전달하는 역할을 합니다.

세 계층 중 첫 번째 계층은 라우팅입니다.
라우팅이 쉽습니다.
데이터를 전송하는 가장 좋은 방법 찾기라우터라는 장치에서 관리한다고 말할 수 있습니다.

라우팅은 전달과 함께 제공됩니다.

포워딩은 입력 포트에서 출력 포트로 데이터 이동오전.
간단히 말해서, 위의 그림과 같이 라우팅에 의해 선택된 최적의 경로에 대한 데이터가 제공됩니다.

이때 라우터는 컴퓨터의 IP 주소를 사용하여 데이터를 전달합니다.

IP 주소: 컴퓨터 네트워크의 장치가 서로 인식하고 통신하는 데 사용하는 특수 번호입니다.

레이어 2 – 데이터 링크 레이어

지금까지 데이터를 보낼 위치를 파악하기 위해 많은 단계를 거쳤습니다.
그러나 데이터의 정확한 목적지는 아직 알 수 없습니다.

Tier 2가 지역 우체국이라고 가정해 보겠습니다.
우체국에서 목적지를 결정하고 편지나 택배를 보냅니다.

마찬가지로 이제 데이터가 도착하는 최종 목적지를 찾아야 합니다.
그리고 이것은 MAC 주소를 통해 식별되며 이 역할은 두 번째 계층에서 수행됩니다.

MAC 주소?
컴퓨터 고유의 정확한 주소인 Media Access Control 주소로 생각할 수 있습니다.

우리와 같은 컴퓨터는 자신만이 가지고 있는 주소를 가지고 있습니다.
레이어 2에서 이 주소를 분석하면 데이터가 궁극적으로 어디로 가는지 파악할 수 있습니다.

레이어 2는 다른 PC가 데이터 소스를 알 수 있도록 데이터를 보낼 때 데이터에 MAC 주소를 추가합니다.
그리고 이 데이터는 스위치라고 하는 레이어 2 통신 장치에 의해 분석됩니다.

2계층과 3계층에서 오가는 정보의 흐름을 설명하자면,
컴퓨터 A에서 컴퓨터 B로 데이터를 보냅니다.

이 데이터의 3계층 헤더에는 컴퓨터 A의 IP 주소와 대상 컴퓨터 B의 IP 주소가 모두 기록되어 있지만 2계층 헤더에는 대상 컴퓨터 B의 MAC 주소를 알 수 없으므로 라우터의 MAC 주소가 컴퓨터 A에 가장 가까운 대상에 기록됩니다.

헤더: 각 레이어에서 데이터 처리 결과

이제 A에서 스위치로 데이터를 보냅니다.

스위치는 데이터 대상의 MAC 주소에 대한 정보를 확인합니다.
이때 MAC 주소에는 라우터의 MAC 주소가 쓰여 있기 때문에 라우터로 데이터를 보낸다.

또한 라우터는 데이터 대상의 IP 주소를 확인하고 라우팅 테이블을 통해 라우팅하고 데이터는 컴퓨터 네트워크 B에 가까운 라우터에 도착합니다.

그런 다음 라우터는 MAC 주소 테이블을 사용하여 데이터의 대상 MAC 주소를 결정하고 대상 MAC 주소로 업데이트한 다음 데이터를 다시 스위치로 전달합니다.
그리고 스위치는 MAC 주소를 찾아 컴퓨터 B로 데이터를 올바르게 보냅니다.

레이어 1 – 물리적 레이어

계층 1은 물리 계층입니다.

수집된 데이터를 다른 네트워크로 전송하기 위해 데이터를 컴퓨터가 이해할 수 있는 01010이라는 전자 신호로 변환합니다.

이 신호를 아날로그 신호로 변환하여 케이블로 이동시킬 수 있습니다.

결론적으로 우리는 데이터를 다른 네트워크로 보낼 준비가 되었다고 말할 수 있습니다.

전체 흐름

정리하면 7계층부터 시작하여 1계층까지 각 계층에 헤더를 붙인다.

다른 컴퓨터로 가는 데이터는 한 번에 한 계층씩 세분화되어 결국 우리 컴퓨터에 도착합니다.

이는 카카오톡을 이용하거나 메시지를 보낼 때 데이터가 전송되는 과정이라고 볼 수 있습니다.


프로젝트 검토

유능한 개발자라면 프로그래밍을 잘할 뿐만 아니라 이론적인 부분도 철저히 알아야 한다고 생각합니다.
전공이 아닌 만큼 이번 프로젝트가 좋은 기회가 됐다.

우선 CS가 무엇인지 알고 휴대폰이나 컴퓨터를 사용할 때 데이터가 어떻게 전달되는지 궁금했는데, 이를 통해 OSI의 7계층을 탐색하고 프로젝트를 공부하면서 전반적인 흐름을 알게 되면서 호기심이 사라졌다.

앞으로 나는 CS 이론을 강화하기 위해 다른 과목을 공부할 것입니다.
이를 바탕으로 좋은 코드로 좋은 결과를 내는 유능한 개발자가 될 것입니다.

OSI 7계층은 이론을 공부하는 것이기 때문에 어렵고 어렵다.
그래서 프로젝트 프레젠테이션을 하는 동안 어떻게 하면 프레젠테이션을 재미있고 지루하지 않게 만들 수 있을지에 대해 그룹 구성원들과 많은 토론을 했습니다.
함께 연구한 부분을 서로에게 설명하는 연습을 했고, 머리를 맞대고 흥미로운 사례를 찾아 보다 쉽게 ​​설명할 수 있도록 프레젠테이션 스크립트를 작성했습니다.
그 결과 많은 분들의 호응을 얻었고 만족스러운 발표가 되었습니다.

프레젠테이션 자료
Github – 팀-프로젝트_OSI-7-Layer