신호는 왜 계층별로 구분을 지어야 할까?

1주차에 UDP TCP를 학습을 하고 2주차에는 HTTP를 학습하였습니다. OSI로 따지든 TCP/IP기준으로 따지든 둘다 데이터라는 것을 통신하게 되어집니다. 당연한 얘기겠지만, 계층이 올라가면서 이 안에서 동작하는 전기 신호의 이름은 변경이 되었습니다. 어찌보면 그냥 신호일뿐인데 어째서 이것들을 나누었을까요? 이건 제 생각인데 계층 마다 분리를 하고 싶었던게 아닌가 싶습니다. 이거는 이러니까 이거지.. 개인적으로 "장비" 입장에서는 신호를 나타나내는 용어가 그렇게 중요할까요? 아마 사람에게 중요한 일일 겁니다. 그래야 구분짓기 쉬우니까 그 당시 인간들은 이런 행위를 굉장히 즐긴거 같습니다. 계층 나누고 그것을 부리는 명칭을 달리하는 것말이죠. 

얘네를 왜 학습해야 하지?

가만 생각해보면 이것들을 왜 알아야 하는지 그것부터 의문이 듭니다. 왜냐하면 계층별로 나누었지만 한편으로는 똑같은 신호일뿐일텐데 고민이 되어지네요. 어떻게 하면 조금더 내가 이해할수 있을까?근데 얘네를 학습하는 목적은 단순히 계층별에서 어떤 신호를 어떻게 말하는 정도로 이해하면 안될거 같다는 생각이 듭니다. 
그 이유는 우리는 엔지니어이기 때문에 "신호"를 학습을 해야 하는 겁니다, 어떻게 보면 현상을 이해 하지 않으면 제어도 불가능할 수 있기 때문입니다. 그래야 어디에서 문제가 발생했는지 쉽게 알 수 있습니다. 예시를 들어보겠습니다.
예를 들어 서버 요청이 실패했다고 가정해보죠 그러면 애플리케이션 문제인지 전송 계층 문제인지 확답을 내리기 어렵습니다. 왜냐하면 HTTP자체는 TCP위에서 동작을 하는 프로토콜이기 때문입니다. 그래서 다음 스탭으로 TCP가 재전송을 반복하는지 ping은 되는데 접속이 안되는지 등을 체크할 수 있을겁니다. 

하지만 위에서 말한건 어디까지나 OSI를 왜 추상화에 대한 내용이지 신호에 대한 내용은 아닙니다.
그러면 어째서 신호까지 추상화를 하는 걸까요?

먼저, "신호를 구분짓는다"는건 두가지 의미가 있다.

신호를 구분짓는 다는건 물리적, 논리적으로 구분을 지을 수 있습니다. 물리는 전기적 신호의 형태입니다. 즉, 전송 매체 전송 방식이 다르기 때문에 물리적으로 구분지을 필요가 있죠
반면에 논리적인 경우를 생각해보면 신호의 해석 책임을 나누기 위해서입니다.
예를 들어 둘다 똑같은 비트라고 가정해봅시다.
그러면 그 용어를 듣고 어느 프로토콜에서 발생했는지 어느 장비에서 생긴 신호인지 알수 있을까요?
아쉽게도 알수 없습니다.
이래서 물리적인 신호를 논리적인 방법으로 신호를 구분을 짓는것입니다.

그렇다면, 그 다음은?

위에서 학습한것을 토대로 정리해보면 비트, 프레임, 패킷, 세그먼트, 데이터그램, 메시지 순으로 작성할 수 있습니다.
그렇다면 각각 왜 이러한 이름이 붙여졌는지 고민해봅시다.
1. 비트: 이진으로 데이터가 아닌 전기 신호를 다루기때문에 0과 1, high와 Low의 전기적 상태 차이만 구분합니다. 이 계층에서 중요한것은 정보가 아니라 신호의 존재 여부가 본질입니다. 그래서 데이터가 아닌 비트라고 부릅니다. 존재의 유무만 의미가 되는 단계이기 때문이죠

2. frame: 프레임은 틀이라는 뜻을 가지고 있습니다. 이는 물리 신호를 네트워크 논리 단위로 감싸는 첫 번째 경계이기 때문에 이와 같은 이름이 붙여졌습니다. 왜냐하면 끝없는 신호속에서 경계를 나눠주기 때문입니다.
즉, 프레임은 신호의 시작과 끝을 구분하여, 물리적 신호에 논리적 질서를 부여하는 역할을 합니다.

3. packet: 네트워크 계층에는 라우터라는 장비가 있습니다. 라우터는 각 경로를 정해서 적절한 위치에 데이터를 보냅니다. 잘 생각하면 라우터는 배달부입니다. 

4. segment: 전송계층은 2개로 나눠집니다. 이것이 그중 하나인데요. 분할하여 관리한다는 뜻을 가지고 있습니다. 결국 TCP가 신뢰성있는 프로토콜임을 방증하는 단위입니다.

5. datagram: 이것도 전송계층입니다. 다만 TCP가 아닌 UDP에서 발생하는 신호인데요. 그 뜻은 data + telegram의 합성어라고 합니다. 데이터는 데이터 telegram은 진보라는 뜻을 가지고 있습니다. 즉, 빠르게 던지고 끝내는 데이터 단위를 말합니다. 어떻게 보면 세그먼트처럼 조각의 개념이 아닌 하나의 메시지를 던지는 단위라고 생각하시면 됩니다.

6. message: 응용 계층까지 왔습니다. 이때 부터는 데이터가 의미있는 구조로 되어있습니다. 예를 들면, HTTP요청, SMTP 메일, DNS 질의 등으로요. 즉, 단순히 비트의 집합이 아닌 어떤 목적을 가진 의사소통의 단위라는것을 알 수 있습니다. 이때 부터 데이터가 아닌 정보로 승격된 상태입니다.

아쉽게도 세션,표현계층은 없군요. 이는 위 단위가 OSI 7계층이 아닌 TCP/IP 계층으로 나뉘어져 있기 때문인데요 OSI는 의미상으로 TCP/IP는 실질적인 계층을 나타내는 것이라고 합니다. 또한 세션과 표현은 TCP/IP에서 응용계층으로 보여진다고 합니다.

마무리

어떻게 보면, 장비입장에서 신호를 나누는건 그리 큰 의미가 있는 행위가 아닐 수 있습니다. 하지만 그것을 인간으로써 바라본다면 이야기는 달라질것입니다. 사람들과 소통을 해야 하는데 똑같은 단어로 계속 말하다보면, 헷갈리는 경우도 많습니다. 애초에 단위를 이렇게 나눈 이유는 제가 생각할때는 빠른 파악이라고 생각이 듭니다. 위에서는 논리적으로 구분지었다고 말씀은 드렸는데 궁극적으로는 단위의 이름만 보고 어떤 계층인지 단번에 알 수 있다면, 소통하는데 도움이 될거라 저는 생각합니다. 

 

댓글

Designed by JB FACTORY