프로토콜이란?
통신 프로토콜 또는 통신 규약으로, 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계
호스트와 호스트 사이에서 사용하는 일종의 언어와 같은 개념이다.
송수신자가 동일한 프로토콜을 설정해야 통신이 가능하다.
프토토콜의 기본 요소
● 구문 (Syntax) : 데이터의 형식이나 부호화 및 신호 레벨을 규정
● 의미 (Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보 규정
● 시간 (Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정
프토토콜의 기능
1. 단편화와 재조립
- 대용량 크기의 파일은 그대로 전송할 수 없기 때문에 작은 단위로 나누어 보내고 수신측에서 이를 재조합한다.
2. 캡슐화 (아래 <캡슐화& 역캡슐화> 목차에서 더 자세히 다룰 예정)
- 각 프로토콜에 적합한 데이터 블록을 만들기 위해 데이터에 정보를 추가하는 기능이다.
3. 연결 제어
- 연결 지향형 데이터 전송 (TCP)
: 두 시스템이 서로 데이터를 교환할 때 연결을 설정하는 경우에 연결 설정, 데이터 전송, 연결 해제 3단계로 구성된다.
- 비연결 지향형 데이터 전송 (UDP)
: 연결을 설정하지 않는 경우로, 이와 같은 방법으로 전송되는 데이터를 '데이터그램'이라고 한다.
4. 흐름 제어
- 송신측 개체로부터 오는 데이터의 양이나 속도를 조절하는 기능이다. 보통 아래 2가지 방법을 사용한다.
* 정지-대기 (Stop and Wait) : 패킷에 대한 응답 후에 다음 패킷을 보냄* 슬라이딩 윈도우 (Sliding Window) : 가용 데이터 분량의 패킷을 한꺼번에 보낸 후, 응답 패킷을 받으면 다시 그만큼 한꺼번에 보냄
5. 오류 제어
- SDU(*전송하려는 데이터)나 PCI(*제어 정보)가 잘못 되었을 경우 이를 발견하는 기법이다. (패리티 비트 / 잉여도 검사)
6. 동기화
- 두 통신 객체의 상태(시작, 종류, 검사 등)를 일치시키는 기능이다.
7. 주소 지정
- 발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능이다.
8. 다중화
- 하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 사용할 수 있도록 하는 기능
TCP/IP 프로토콜 스택
프로토콜 스택이란?
데이터 통신에 활용되는 프로토콜의 구조에 관한 개념으로, 계층화된 구조로 모여 있는 프로토콜 집합
전송과 제어 통신의 기본 내용을 인터넷 공간에서 구현하기 위한 구조로 TCP/IP 프로토콜 구조가 등장했다.
TCP/IP 프로토콜을 오늘날 4계층으로 이루어진 구조로 성장했지만
일반적으로 물리, 데이터 링크, 네트워크, 전송, 응용으로 5계층 구조로 되어있다.
또한, TCP/IP 프로토콜은 하위 계층으로 내려갈수록 물리적이고 구체적인 속성이 강해지고,
물리계층에서 응용 계층까지 상위 계층으로 올라갈수록 논리적이고 추상적인 속성이 강해진다.
송신의 시작 단계인 응용 계층에서 전송하고자 할 UDP 기반의 페이로드를 생성한 뒤 사용자의 실제 정보를 저장한다.
응용계층에서 생성한 전송단위 : 메시지
↓
응용계층에서 완성된 메시지는 전송계층으로 넘어가 첫 번째 헤더와 결합한다.
첫 번째 헤더의 중요 정보 : 포트 번호 / 전송계층 전송 단위 : 데이터그램
↓
전송계층에서 완성된 데이터그램은 네트워크 계층으로 넘어가 두 번째 헤더와 결합한다.
두 번째 헤더의 중요 정보 : IP 주소 / 네트워크 계층 전송 단위 : 패킷
↓
네트워크 계층에서 완성된 패킷은 데이터 링크 계층으로 넘어가 세 번째 헤더와 결합한다.
세 번재 해더의 중요 정보 : MAC 주소 / 데이터 링크 계층 전송 단위 : 프레임
↓
데이터 링크 계층에서 완성된 프레임은 물리 계층으로 넘어가 비트 전송 단위로 전환한다.
캡슐화(Encapsulation) & 역캡슐화(Decapsulation)
데이터를 보낼 때는 데이터 앞 부분에 전송에 필요한 정보를 붙여 다음 계층으로 전달한다.
이때 정보를 헤더라고 하며, 헤더에는 데이터를 전달 받는 상대에 대한 정보도 포함되어 있다.
위처럼 데이터에 헤더를 붙이는 것을 캡슐화 (Encapsulation) 이라고 한다.
반대로 데이터 수신측에서 헤더를 하나씩 제거하는 과정을 역캡슐화 (Decapsulation) 이라고 한다.
캡슐화와 역캡슐화의 필요성
● 독립성 유지 : 다른 모듈에 미치는 영향 최소화
● 계층별 기능 수행 : 목적에 부합하는 기능만 수행
● 호환성 유지 : 네트워크 동일 계층 간 호환성 유지
참고
| http://blog.skby.net/%EC%BA%A1%EC%8A%90%ED%99%94-encapsulation/
'Network' 카테고리의 다른 글
3-1) 네트워크 유형 (0) | 2022.09.05 |
---|---|
2-2) OSI 7계층 (0) | 2022.09.02 |
1-2) Web & HTTP (0) | 2022.08.31 |
1-1) 웹브라우저 동작 방식 (0) | 2022.08.31 |
Wireshark를 통한 백도어 패킷 분석하기 (1) | 2021.08.18 |