OSI 7계층에서의 데이터 흐름
정처기를 공부하게 되면 OSI 7계층에 대해서 공부를 하게 된다. 그러나 정처기 책에서의 OSI 7계층의 설명 내용은 너무 추상적이고 개인적으로 와닿지 않아서 그냥 암기만 했던 기억이 있다.
그러나 개발자가 되기로 마음 먹고 이번 네트워크 스터디를 위해서 OSI 7 계층을 공부하던 중 '널널한개발자' 라는 분의 강의가 너무 인상 깊어서 오늘은 그 분의 강의를 보고 난 뒤 바라보는 OSI 7 계층에 대해서 살펴보겠다.
네트워크란?
Net과 Work의 합성어로 여러 개의 장치나 시스템이 서로 연결 되어 정보를 주고 받을 수 있는 구조
Node와 Link가 서로 연결 되어 있고 자원을 공유하는 집합
사람 2명이 서로 멀리서 우편으로 정보를 교환한다라고 생각해보자.
송신자인 사람은 정보를 종이에 쓰고 우편봉투에 넣는다. 이때 우편봉투에는 우표와 받는 사람 보내는 사람의 정보가 기입되어 있다. 그리고 우체국은 우체통에서 우편을 수집하여 최종 수신자에 우편을 전달한다.
우리는 이처럼 정보를 주고 받을 때 서로간 룰을 정해서 정보를 보내게 된다. 네트워트 상에서 정보를 주고 받을 때도 마찬가지이다. 그리고 이러한 룰을 추상적인 개념으로 표현한 것이 OSI 7 계층이다.
OSI 7계층이란?
네트워크 통신을 구조화 하고 표준화 하기 위해 ISO 개발한 모델이다. 네트워크 통신을 총 7개 계층으로 나누어 각 계층에서 수행할 기능을 정의한다.
각 계층별 역할 워낙 다른 블로그에서도 정리가 잘 되어 있어 이번 글을 OSI 7 계층이 우리 컴퓨터에서는 어떻게 작동 하는지 예를 보면서 살펴보자
OSI 7계층이 우리가 배운 OS에 적용 된다면?
저번 OS를 공부할 때 우리는 컴퓨터를 크게 3가지 계층으로 나눌 수 있다는걸 배웠다.
User / Kernal / HW 에 ㅐOSI 7 계층을 대입하면 위의 그림과 같다.
7, 6, 5 계층(Application, Presentation, Session)
널널한개발자분 강의의 핵심은 소켓의 본질은 파일이라는 것이다. 소켓은 통신을 위한, 파일을 저장을 위한 즉 목적만 다르지 자세히 보면 동작하는게 유사하다라는 것이다. 우리가 하나의 파일을 네트워크로 전송한다라고 해보자. 7,6,5 계층에서는 파일 즉 Stream을 보내기 위해 4계층에 진입을 할것이다.
4, 3계층(Transport, Network)
7,6,5계층에서 받은 Stream을 한번에 보낼 수는 없다. 그래서 kernal로 들어오는 종단점에서 이때 Stream 데이터가 분해가 일어나고 이것을 Segmentation이라 하고 분해가 된 데이터의 단위가 Segment라고 한다. 그래서 우리는 4계층 Transport의 PDU(Protocol Data Unit)을 Segment라고 한다.
이러한 Segment가 3계층에 올 때 마치 택배포장해서 상자에 들어가듯이 한번 더 캡슐화가 진행 된다. 택배상자처럼 된 이것을 우리는 Packet이라 부르고 3계층 Network의 PDU는 Packet이 된다. 그리고 Segment가 packet이 되는 과정을 캡슐화(Encapsulation)이라고 한다
그렇다면 세그먼트와 패킷의 크기는 어떻게 될까?
패킷과 세그먼트를 도식화 해봤다.
MTU(Maximum Transmission Unit) 네트워크를 통해 전송 될 수 있는 최대 크기로서 보통 패킷의 크기를 의미한다. MTU, 패킷의 크기는 1500byte이다.
세그먼트는 크기는 개발자가 임의로 정할 수 있지만 가장 최대로 보낼 수 있는 MSS(Maximum Segment Size)는 세그먼트가 가질 수 있는 최대 크기로 패킷의 크기에 의존적이다. 위 그림에서 MSS는 1460byte이다.
결국 7,6,5 계층에서 있는 Stream 데이터를 MSS 단위로 분해를 해서 조각 조각 보내게 되는것이다.
2, 1계층(DataLink, Physical)
패킷 그자체로 보내는것이 아니라 보내는 사람과 받는 사람의 대한 정보도 기입을 해야한다. 그래서 한번더 캡슐화가 이루어지게 되고 패킷이 캡슐화가 되면 Frame이 된다. 그래서 2계층 DataLink의 PDU는 Frame이다. 2계층이 이더넷이기 때문에 이더넷 프레임이라고 말한다. 여기서 말하는 보내는사람 받는 사람은 ip주소가 아닌 MAC Address다.
후기
정처기를 공부할 때는 너무나 추상적이여서 이걸 왜하지라는 생각이 들었고 어차피 시험만 통과하면 됐기 때문에 그냥 암기하기 바빴다. 그러나 실제 OSI 7 계층이 어떻게 작동하는지 실제 예시를 보면서 공부를 훨씬 이해가 빨랐다. 혹시 필자처럼 OSI 7계층 내용이 너무 뜬구름 잡는게 많다라고 하면 꼭 널널한 개발자의 유튜브를 보기 바란다.
참고자료
- 널널한개발자 유튜브