네트워크를 통해 데이터를 송,수신 할 때 데이터를 전송하는 과정을 OSI 7계층으로 나누어서 보면 이해하기 쉽습니다.
7계층 중에서 5~7계층을 상위 계층이라하며 1~4계층을 하위 계층이라 하는데 일반적으로 상위 계층은 소프트웨어 형태로 구현되는 개념이고 하위 계층은 하드웨어 형태로 구현되는 개념입니다.
송신측에서 상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보내게 됩니다. 수신측에선 네트워크를 통해 들어오는 전기 신호를 하위 계층에서 상위 계층으로 데이터를 보냅니다. 이렇게 데이터를 보내는 과정을 송신측에서 인캡슐레이션 수신측에서 디캡슐레이션이라고 부릅니다.
상위 계층에서 데이터를 내려주면
4계층인 트랜스포트계층에서 데이터 + 4계층 헤더를 내려보내주고
3계층에서는 (데이터 + 4계층 헤더) + 3계층 헤더를 내려보내주고
2계층에서는 ((데이터 + 4계층 헤더) + 3계층 헤더) + 2계층 헤더를 내려보내주게 된다.
각각의 계층에서 데이터를 부르는 단위가 달라지게 되는데 그것이 PDU이다.
PDU는 상위 데이터와 계층의 헤더가 합쳐진 단위를 뜻하는데
먼저 4계층의 PDU 세그먼트에 들어가는 내용은 다음과 같다.
발신지 포트 : 발신하는 application의 포트
목적지 포트 : 수신해야 할 application의 포트
순서 번호 : 순차적 전송할 경우 순서를 붙이며, 순서가 어긋나면 목적지 프로토콜이 이를 바로 잡는다.
오류검출코드 : 발신지와 목적지 프로토콜은 세그먼트를 연산하여 오류 검출 코드를 각각 만든다. 만약 발신지에서 전송한 세그먼트에 포함된 오류 검출 코드와 목적지에서 만든 오류 검출 코드가 다르다면 전송되는 과정에서 오류가 발생한 것이다. 이 경우, 수신측은 그 세그먼트를 폐기하고 복구 절차를 밟는다. 오류검출코드는 체크섬, 프레임 체크 시퀀스라고도 부른다.
다음 3계층의 PDU 패킷에 들어가는 내용은 다음과 같다.
발신지 컴퓨터 주소(Destination IP) : 패킷의 발신자 주소
목적지 컴퓨터 주소(Source IP) : 패킷의 수신자 주소
서비스 요청 : 네트워크 접속 프로토콜은 우선 순위와 같은 서브 네트워크의 사용을 요청할 수 있다.
2계층에서 들어가는 내용은 다음과 같다.
목적지 주소(MAC)
발신지 주소(MAC)
오류체크
위의 나온 내용이 헤더에 들어가는 전부는 아니지만 기본적인 내용으로 헤더에 들어갈 내용에 대한 자세한 내용은
계층별 Header&Payload 구조
에서 알아볼 수 있습니다.
여러 복잡한 규칙이 있지만 헤더에 반드시 포함되어야 하는 정보는 2가지 입니다.
1. 현재 계층에서 정의하는 정보
2. 상위 프로토콜 지시자
인캡슐레이션은 데이터를 데이터 플로 계층(1~4계층)으로 내려보내면서 페킷에 데이터를 넣을 수 있도록 분할하는 과정을 뜻하며 위에서 말한 헤더의 구조를 각 계층별로 자신이 필요한 정보를 추가하는데 이 정보는 미리 정의된 비트 단위(0 || 1)로 씁니다. 2,3,4 계층별로 각각의 헤더 정보가 추가되는 것입니다.
디캡슐레이션은 네트워크를 통해 전송된 전기신호를 데이터 형태로 만들어 4계층 까지 올려보내는데 2계층에선 헤더에 포함된 정보를 확인 후 목적지가 자신이 아니라면 데이터를 버립니다. 랜 카드가 이 역할을 담당합니다. 3계층으로 올라갈 때 2계층에서 사용한 헤더는 3계층에서 필요없기 때문에 벗어놓고 패킷에 해당하는 부분만을 올려보내며 3계층에서도 2계층에서 한것과같이 해더 정보를 확인하고 목적지 주소가 옳바르다면 3계층 헤더정보를 벗어놓고 4계층으로 세그먼트를 올려보냅니다.
실제 데이터는 상위 계층 -> 하위 계층 -> 전기신호 -> 하위 계층 -> 상위 계층으로 전달 되며 헤더 정보는 각 계층끼리 전달됩니다.
하위 계층 해더 정보의 목적
4계층
큰 데이터를 잘 분할하고 받는 쪽에서는 잘 조립하는 것
-> 데이터에 순서를 정하고 받은 패킷의 순서가 맞는지, 빠진 패킷은 없는지 점검하는 역할이 중요
4계층 프로토콜인 TCP 에서는 시퀸스(Sequence),애크(ACKnowledgement)번호 필드로 데이터를 표현
3계층
3계층에서 정의하는 논리적인 주소인 출발지, 도착지 IP 주소가 들어갑니다.
2계층
3계층 처럼 2계층도 출발지, 도착지 MAC주소 정보가 헤더에 들어갑니다.
프로토콜 스택은 상위 계층으로 올라갈수록 종류가 많아집니다. 3계층 프로토콜인 IP는 4계층에서 TCP,UDP 로 나뉘어지고 그보다 상위에서는 FTP,HTTP,SMTP등 더욱 다양한 프로토콜로 나뉘게 됩니다.
디캡슐레이션 하는 목적지에서는 헤더에 아무런 정보가 없으면 어떤 상위 프로토콜로 올려보내 주어야할지 결정할 수 없기 때문에 인캡슐레이션 하는 쪽에서는 헤어에 상위 프로토콜 지시자 정보를 포함해야합니다.
참고자료
https://blog.naver.com/sung_mk1919/221177021021
https://blog.naver.com/sung_mk1919/221420779175