프로젝트/[TEAM PROJECT] OSI 7단계 발표 프로젝트

[TEAM PROJECT] OSI 7계층 발표 프로젝트

개발..너... 2022. 5. 19. 16:29

 

 

OSI 7계층이란?

 

 

 

네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 의미합니다.

OSI 7단계는 표준화가 되어있으며 흐름을 한눈에 알아보기 쉽고 유지보수가 편하다라는 장점을 가지고 있는데 사실 오늘날의 인터넷은 OSI모델이 아닌 TCP/IP 모델을 사용하고 있습니다.

 

 

 

OSI 7단계 모델은 기술의 가용성을 고려하지 않은 이론적인 모델로서 출시시기가 TCP/IP 모델보다 몹시 늦습니다. 그런데 잘 사용하지 않는 기술을 왜 배워아햐는 것일까요?

 

OSI 7단계는 각 계층간의 역할을 잘 분리해두어 오늘날 네트워킹 장치를 만들 때 기본적으로 OSI 7계층을 참조하여 만들기 때문입니다. 또한, 층마다 하는 역할을 모두 분리해두어 문제가 생긴 부분만 수정을 하면 되기에 OSI 7단계만 알고있다면 유지보수가 몹시 쉽다는 장점을 가지고 있습니다.

 

 

 

 7계층 Application Layer(응용계층)

 

 

 

 

OSI 7단계 제일 상단에 있는 계층입니다.

7단계는 사용자가 접근 할 수 있는 가장 직관적인 부분으로서 이를 프로토콜(HTTP,SMTP)에서 처리해줍니다. 우리가 휴대폰 혹은 컴퓨터로 인터넷을 들어가서 NAVER 화면을 보게되면 우린 벌써 OSI 7계층에 들어간 것이라 할 수 있습니다.

 

 

 

6계층 Presentation Layer(표현계층)

 

 

 

6단계는 응용계층에서 내린 명령, 발송한 데이터등을 어떻게 표현할지를 정해주는 계층입니다.

 

웹브라우저를 하나의 편지지라고 생각해봅시다. 우리가 네이버 로고를 클릭하고 검색어를 입력하는 모든 행위들은 편지에 글이 쓰여지듯 컴퓨터에 보내지게됩니다. 이러한 과정에서 7계층에서 6계층으로 넘어가게 되는 것이고 이 때 6계층이 주어진 역할을 수행하게되는 것 입니다.

 

6계층에서 하는 역할은 인코딩과 디코딩입니다.

위의 사진에서 보이다싶이 JACK이라는 데이터가 들어오면 이를 컴퓨터가 읽기 편하게 인코딩을 변환하고 이 데이터를 압축하고 최종적으로 암호화까지 시켜주는 것이 인코딩의 과정입니다.

 

7단계는 사람의 언어 그대로 6계층에 데이터를 내려주는데 6계층은 다른 컴퓨터와의 호환이 가능하도록 공통된 표준형식에 맞추어서 데이터를 인코딩과 디코딩을 해줍니다. 6계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식 상 차이를 다루는 부담을 응용 계층으로부터 덜어 주는 역할을 하는 것입니다.

 

-       인코딩: 사람언어 -> 컴퓨터언어

-       디코딩: 컴퓨더언어 -> 사람언어

 

이러한 인코딩과 디코딩이 되는 원리를 저장하기 위해 매칭한 표가 존재하는데 그것이 문자 집합이며 테이블에는 한글 문자에 해당하는 UTF8, Unicode 값과 매치 해 놓은 표가 존재합니다.

 

 

 

5계층 Session Layer(세션계층)

 

세션계층은 네트워크상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층입니다. 쉽게 말하자면 통신을 함에 있어서 큰 대문이지요. 유지, 설정, 종료와 같은 기능이 있습니다.

 

세션은 많은 역할을 하는데요 그 중에서 가장 중요한 역할은 데이터가 오고 가는 흐름 내에서 동기화 지점을 제공하기도 합니다. 동기화지점은 쉽게 말하면 체크 포인트에요.

예를들어 5MB마다 체크포인트가 설정이 되는 50MB짜리 파일을 보낸다고 하였을 때 갑자기 30MB에서 어떤 오류가 발생했다면? 체크포인트가 없었다면 우리는 처음부터 데이터를 전송해야만하지만 세션계층에서는 체크포인트를 지정해주었기때문에 30MB부터 재전송이 가능해집니다. 동기화 지점이 설정된다는 의미가 이전까지의 통신은 서로 완벽하게 처리했다는 것을 뜻하며 따라서 오류가 발생이 되어도 동기점 이후의 과정만 복구를 하면 되는 것 입니다.

 

 

 

4계층 Tranport Layer(전송계층)

 

 

 

 

전송계층에서는, 데이터가 상대 응용계층을 정확하게 찾아갈 수 있도록 포트번호를 데이터에 달아줍니다.

데이터는 목적지의 상대 컴퓨터에서 이 포트번호를 확인하고 가야 애플리케이션을 찾아갈 수 있습니다.

 

, 포트번호는 일종의 보내는 이, 받는 이를 표시하는 번호입니다.

같은 주소에 사는 가족 구성원 중에서도 정확히 받는 사람을 지정해 전달되도록 하는 것이죠.

포트번호는 16비트를 사용하기 때문에 2 16승 해서 총 65,536개를 사용할 수 있고, 강제는 아니지만 전 세계의 모든 컴퓨터가 다음 표와 같은 분류에 따른 포트번호를 사용하도록 권고되고 있습니다.

또한 패킷이 전송 과정에서 아무 문제없이 제대로 수신지 컴퓨터에 도착할 수 있도록 패킷 전송을 제어하는 역할도 하며, 핵심 프로토콜로는 TCP UDP가 있습니다.

 

 

택배 도착하면 택배 기사님이 일일이 정보를 확인하고 직접 주실 때가 있죠? 그게 TCP라고 생각하시면 됩니다. 그리고 쿠팡처럼 그냥 문 앞에 두고 가는 경우가 있죠? 그게 UDP라고 생각하시면 됩니다. , TCP는 여러 번의 확인 과정을 거쳐 정확하게 전달하고, UDP는 여러 번 확인을 하지 않아 빠르게 전달할 수 있다고 생각하시면 됩니다.

 

전송계층의 또 다른 역할은세그멘테이션입니다.

예를 들어 우리가 수산 시장에서 참치를 받아온다고 가정했을 때, 참치는 너무 커서 쉽게 운반하기 어렵습니다. 때문에 우리는 참치를 쉽고 편리하게 가져가기 위해서 분할을 해야 합니다. 이 과정을 세그멘테이션이라고 합니다. 그리고 나눈 것들을 세그먼트라고 합니다.

그럼 세그멘테이션, 왜 해야 할까요? 전달받은 상위 계층 데이터를 그대로 전달한다고 해봅시다. 100MB 동영상을 재생하기 위해서는 데이터 덩어리를 통째로 모두 전달받아야 재생이 가능하겠죠. 하지만 세그멘테이션을 통해 패킷을 분할해서 전달한다면 어떻게 될까요? 전달받은 데이터부터 우선 재생이 가능해집니다. , 다운로드 받으면서도 우리는 영상을 볼 수 있다는 거죠.

, 데이터를 받는 중간에 연결이 끊기게 되면, 아주 끔찍하겠죠? 데이터

덩어리는 그대로 날아가게 됩니다. 그래서 분할되어 있는 데이터보다 손실률이 크게 되죠. 그래서 세그멘테이션을 하는 것입니다.

 

 

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

 

 

 

이 네트워크계층에서는 실질적으로 우리가 데이터를 보내고 싶은 곳에 데이터를 전달하는 역할을 합니다.

 

3계층에서 데이터를 보내는 방법을 라우팅이라고 하는데요.

라우팅은 쉽게 말하면 데이터를 보낼 최적의 경로를 찾는 것이라고 할 수 있습니다.

 

라우팅엔 포워딩이 따라오는데요

포워딩이란 한 라우터의 입력포트에서 출력포트로 데이터를 이동시키는 것입니다.

 

 

 

 

쉽게 말해 다음 그림처럼 라우팅을 통해 선정된 최적의 경로로 데이터를 전달하는 것입니다.

 

 

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

 

 

지금까지 우리는 많은 단계를 거쳐서 마침내 데이터를 보낼 장소까지 파악했습니다. 그러나 우리는 아직 데이터가 정확히 어디로 가야 하는지 정확한 목적지를 알지 못합니다. 2계층을 지역 우체국이라고 예를 들어봅시다. 우체국에서 목적지를 파악해서 편지 또는 택배를 보내잖아요이렇듯 우리도 이제 데이터가 도착할 최종 목적지를 찾아야합니다. 그리고 이 것을 MAC주소를 통해 파악하며, 이 역할을 2계층에서 수행해줍니다.

 

 

MAC 주소는 컴퓨터 고유의 정확한 번지수라고 생각하면 쉽습니다.

우리집에 모두 각자 주소가 있듯이, 컴퓨터 역시 본인만이 가지고 있는 주소가 있고, 이 주소를 2계층에서 분석하고 데이터가 최종적으로 어느 곳으로 가는지 파악할 수 있습니다.

 

2계층은 데이터를 보낼 때 MAC주소를 데이터에 붙여 데이터의 출처를 다른 pc에서도 알 수 있도록 합니다. 그리고 그 데이터는 이 스위치라는 2계층 통신장비에 의해 분석되어지죠

 

 

 

2,3계층에서 정보가 오고 가는 흐름을 설명하자면,

우리는 A컴퓨터에서 B컴퓨터로 데이터를 보낼 것입니다.

이 데이터의 3계층 헤더에는 A컴퓨터의 IP주소와 도착지인 B컴퓨터의 IP주소가 모두 적혀있지만, 2계층의 헤더에는 도착지인 B컴퓨터의 Mac주소를 모르기 때문에 A컴퓨터에서 가장 가까운 라우터의 Mac주소가 도착지가 적혀있습니다.

 

여기서 헤더란 각 계층에서 데이터를 처리한 결과를 말합니다.

 

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

스위치는 데이터 도착지의 MAC 주소에 대한 정보를 살펴볼 것입니다. 이 때, Mac주소는 라우터에 대한 MAC주소가 적혀있으므로 라우터에 데이터를 보내게 됩니다.

 

라우터 또한 데이터 도착지에 대한 ip주소를 체크하여, 라우팅 테이블을 통해 라우팅을 시키면 데이터는 B컴퓨터 네트워크 근처의 라우터에 도착하게 됩니다.

 

그럼 그 때 그 라우터가 Mac주소 테이블을 통해 해당 데이터의 도착지 맥주소를 파악하고 도착지 MAC주소로 업데이트를 하여 스위치로 다시 데이터를 전달하게 됩니다. 그리고 스위치는 MAC주소를 파악하여 B컴퓨터로 데이터를 정확하게 보냅니다.

 

 

1계층 Physical Layer(물리계층)

 

 

최종적으로 데이터가 도착하는 계층으로써, 여기서 모아진 데이터를 다른 네트워크로 보내기 위해 데이터를 컴퓨터가 이해할 수 있는 01010 이라는 전자신호로 바꿔주게 되고 이 전기 신호를 아날로그 신호로 바꿔 줌으로써 케이블로 이동할 수 있도록 합니다.

 

마침내 우리는 다른 네트워크로 데이터를 보내기 위한 모든 준비를 마쳤다고 할 수 있습니다.

 

 

전체흐름

 

 

 

전체적인 데이터 흐름을 살펴보겠습니다.

우리가 지금까지 7계층에서 1계층까지 데이터를 붙힌 것이 헤더입니다.

우리가 지나온 과정처럼 사용자가 어플에 들어가서 전송버튼을 누르면 각 계층마다 헤더를 붙여 데이터를 1계층까지 내려주게되고 다른 컴퓨터로 간 데이터는 각 계층마다 헤더가 하나씩 까져서 최종적으로 여러분의 컴퓨터에 도착하게 되는 것입니다.

 

이것이 여러분이 평소에 카톡을 하거나 메시지를 보낼 때 데이터가 전송되는 과정이라고 볼 수 있습니다.

 

 

 

프로젝트를 마치면서..

 

 

개발공부를 하면서 개발스킬도 중요하지만 CS전공지식 역시 몹시 중요하다는 말을 많이 들었습니다. 하지만 비전공자로서 어디서부터 공부를 시작해야할지 막막했는데 마침 학원에서 CS관련하여 발표를 할 사람을 지원받았습니다.

 

공부할게 너무너무 많았지만 CS에 입문할 정말 좋은 기회라고 생각해 바로 지원하였고 OSI 7단계 주제를 선정하여 조원들과 자료를 수집하고 의견을 공유하여 최종적으로 PPT발표까지 하게되었습니다.

 

본인이 맡은 부분은 1,2계층과 2~3계층의 데이터 흐름 설명 파트입니다.

초반엔 컴퓨터나 데이터에 대한 지식이 없어 많은 내용 중 어느부분에 중요포인트를 잡고 자료를 정리해나가야할지를 감을 잡지못해 힘들었던 시간도 있었습니다. 

 

하지만 다른 팀원들이 내가 부족한 부분을 이끌어주고 함께해주어 무사히 프로젝트를 완료할 수 있었고 팀 프로젝트의 협업이 잘되면 어떤 시너지효과가 일어나는지를 알게되었습니다. 또한, CS가 무엇인지 내가 무엇을 모르는지 그리고 어디서부터 공부해야하는지를 알게되었던 정말 뜻깊은 시간이였던 것 같습니다.