상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보낸다.
받는 쪽에서는 다시 하위 계층에서 상위 계층으로 데이터를 보낸다.
데이터를 보내는 과정을 인캡슐레이션 받는 과정을 디캡슐레이션이라고 한다.
현대 네트워크는 대부분 패킷 기반 네트워크이다.
패킷 네트워크는 데이터를 패킷이라는 작은 단위로 쪼개 보내는데 이런 기법으로 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 단말이 통신하도록 해준다.
인캡슐레이션
애플리케이션에서 데이터를 데이터 플로 계층으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할한다.
네트워크 상황을 고려해 적절한 크기로 데이터를 쪼갠 후 네트워크 전송을 위한 정보를 헤더에 붙여넣는다.
각 계층마다 필요한 헤더 정보를 추가한 뒤 전기 신호로 변환해 수신자에게 전송한다.
디캡슐레이션
받은 전기 신호를 데이터 형태로 만들고 상위 계층으로 올려보낸다.
각 계층에서는 송신자가 작성한 계층별 헤더에 포함된 정보를 확인한 후 목적지 정보가 자신이 아니라면 패킷을 폐기하고 맞다면 상위 계층으로 올려보낸다.
상위 계층으로 올려보낼 때 더이상 해당 계층의 헤더 정보는 필요없으므로 벗겨내고 올려보낸다.
인캡슐레이션 과정에서 각 계층에서 추가한 헤더 정보는 수신자가 확인해야 하는 정보이다.
만약 4계층에서 헤더를 추가했다면 그 정보는 받는 쪽의 4계층에서 확인한다.
정리하자면 실제 데이터는 상위 계층 → 하위 계층, 하위 계층 → 상위 계층으로 전달되고 헤더 정보는 각 계층끼리 전달된다.
그렇다면 헤더에는 어떤 정보를 넣을까 ?
헤더에 두가지 정보는 반드시 포함되어야 한다.
- 현재 계층에서 정의하는 정보
- 상위 프로토콜 지시자
현재 계층에서 정의하는 정보는 각 계층에서 목적에 맞는 정보들이 포함된다.
예를 들어 4계층의 목적은 큰 데이터를 잘 분할하고 받는 쪽에서 잘 조립하는 것인데 그러다보니 잘 분할하고 잘 조립하도록 데이터에 순서를 정하고 받은 패킷의 순서가 맞는지, 빠진 패킷은 없는지 점검하는 역할이 중요하며 이 정보를 헤더에 적어 넣는다.
프토토콜 스택은 상위 계층으로 올라갈수록 종류가 많아진다.
3계층 프로토콜인 IP는 4계층에서는 다시 TCP와 UDP로 나뉘고 그보다 더 상위 계층에서 FTP, HTTP, SMTP, POP3 등 더 다양한 프로토콜로 나뉜다.
인캡슐레이션 과정에서는 상위 프로토콜이 많아도 문제가 없지만 디캡슐레이션하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 어떤 상위 프로토콜로 올려보내 줘야 할지 결정할 수 없다.
예를 들어 3계층에서 목적지 IP 주소를 확인하고 4계층으로 데이터를 올려보낼 때에 헤더에 상위 프로토콜 정보가 없다면 TCP로 보내야 할지, UDP로 보내야 할지 구분할 수 없다.
이런 문제가 발생하지 않도록 인캡슐레이션하는 쪽에서는 헤더에 상위 프로토콜 지시자 정보를 포함해야 한다.
MSS & MTU(데이터 크기 조절)
MSS : 네트워크에서 수용할 수 있는 크기
MTU : 네트워크에서 한번에 보낼 수 있는 데이터 크기
일반적인 이더넷에서 수용할 수 있는 크기는 1,500 바이트이다.
MTU값은 2계층의 데이터 값, MSS는 4계층에서 가질 수 있는 최대 데이터 값이다.
2계층에서는 2계층 헤더들의 크기를 제외한 데이터 크기를 MTU 크기라고 부른다.
IP 헤더와 TCP 헤더의 표준 헤더 크기는 일반적으로 각각 20바이트(추가되는 옵션 헤더 제외)이므로 일반 이더넷의 경우, MSS 값을 1460바이트로 사용한다.
'CS > 네트워킹' 카테고리의 다른 글
GARP(Gratuitous ARP) (0) | 2022.10.03 |
---|---|
ARP(Address Resolution Protocol) (0) | 2022.10.03 |
OSI 7 Layer - 데이터 플로 계층 (1) | 2022.09.27 |
[네트워킹] SSH (Secure Shell Protocol) (1) | 2022.03.22 |
[네트워킹] ICMP (Internet Control Message Protocol) (0) | 2022.03.22 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!