정보보안 공부/네트워크

[네트워크] 프로토콜의 기능

pxatd 2021. 8. 6. 02:34
728x90

참고: 네트워크 해킹과 보안 pp.41-45

 

프로토콜 : 컴퓨터들은 상호간에 통신을 하기 위해서 미리 정해놓은 규칙이 있다. 서로 무작위로 통신하기 된다면 데이터를 서로 전달하면서 손실이 발생하거나 제대로 전달받더라도 읽어들이지 못하는 등 여러 문제가 생길 수 있다.

컴퓨터 상호간의 데이터를 원활하게 주고 받을 수 있도록 정해놓은 규칙을 통신규약이라고 한다. 통신규약에는 접속방식이나 데이터의 전달방식 및 자료의 형식과 전송속도 등을 포함한다.

예를들어, 한국 대통령과 아랍 대통령이 대화를 하는데 통역원이 영어와 모국어만 사용할 수 있다고 하자. 한국과 아랍 대통령이 통역원에게 모국어로 이야기 하면, 통역원끼리 영어로 이야기 할 것이다. 이때, 한국 대통령과 아랍 대통령이 이야기를 나누는 과정에서 영어가 서로의 통신을 위한 프로토콜이 된다. 

=> 컴퓨터끼리 소통할 수 있도록 만든 규칙

 

 

1. 프로토콜의 개념

사람들이 사용하는 언어와 비슷하다고 생각하면 된다. (주어 목적어 서술어 같은)

의사소통을 위해서는 어떻게 말할 것인지 약속을 정해두어야 한다.

마찬가지로 프로토콜에서는 다음 3가지 요소를 포함한다.

 

- 구문(syntax) : 데이터의 구조이나 포맷으로, 부호화 방법 등을 정의한다. (어디부터 어디까지 이런 의미이다.)

- 의미(semantics) : 오류 제어, 동기 제어, 흐름 제어 같은 각종 제어 절차에 관한 제어 정보를 정의한다.

- 순서(timing) : 송/수신자 간 혹은 양단(end-to-end)의 통신 시스템과 망 사이의 통신 속도나 순서 등을 정의한다.

 

2. 프로토콜의 기능

 

2.1 주소 설정(Addressing)

한 개체가 상대 개체에 데이터를 전송하려면 상대의 이름을 알아야 하는데, 프로토콜에는 각 전송 계층에 맞는 주소를 지정하는 기능이 있다. 그런데 정상이 아닌 변조된 주소 값을 가진 패킷을 보내면 네트워크나 시스템에 혼란을 줄 수 있다.

 

2.2 순서 제어(Sequence Control)

프로토콜 데이터 단위가 전송될 때 보내지는 순서를 명시하는 기능이며 연결 지향형(connection-oriented)에만 사용된다.

* 프로토콜 데이터 단위(Protocol Data Unit, PDU) : 데이터가 전송될 때 일정 크기의 데이터 블록을 말한다.

순서를 지정하는 이유는 흐름 제어, 오류 제어 등을 위해서다. 이 PDU를 상대한테 보내면 상대는 순서에 맞게 데이터를 재구성하고 오류가 있을 시에는 재전송을 요청한다. 해커는 순서가 뒤죽박죽된 패킷을 생성하여 보내 시스템 과부하를 야기하기도 한다.

 

2.3 데이터 대열의 단편화 및 재조합(Fragmentation & Reassembly)

데이터의 크기와 종류는 다양하다. 대용량 크기의 파일은 그대로 전송할 수가 없어서 이를 작은 단위로 나누어 보내고 수신측에서는 재조합해야한다.

해커는 이런 과정에서 데이터 분할 기능을 이용해 대량의 패킷을 공격 대상에 보내기도하고, 재조합 불가능한 데이터를 보내 혼란에 빠뜨리기도 한다.

 

2.4 캡슐화(Encapsulation)

PDU는 SDU(Service Data Unit)와 PCI(Protocol Control Information)로 구성되어 있다. SDU는 전송하려는 데이터, PCI는 제어 정보이다. PCI에는 주소, 오류 검출 코드, 프로토콜 제어 정보 등이 있다. 이러한 정보를 붙이는 것을 캡슐화라고 한다. 캡슐화는 해커로부터 자신의 통신 내용을 숨길 수 있게 해준다.

*캡슐화 : 어떤 네트워크를 통과하기 위해 데이터를 전송할 때는 다른 무언가로 감싸서 보내고 해당 네트워크를 통과하면 감싼 부분을 다시 벗겨내어 전송하는 기능. 바다를 건너기 위해서 선박으로 자동차를 옮기는 것과 비슷함 

 

2.5 연결 제어(Connection Control)

- 연결 지향형 데이터 전송(Connection oriented data transfer) : 두 시스템이 서로 데이터를 교환할 때 연결을 설정하는 경우. 연결 설정, 데이터 전송, 연결 해제 3단계로 구성. 예로 TCP.

이러한 연결 제어 패킷을 이용하여 네트워크 연결을 끊을 수도, 해당 세션을 빼앗을 수도 있다.

 - 비연결 지향형 데이터 전송(Connectionless data transfer) : 연결을 설정하지 않는 경우. 예로 UDP. 이렇게 전송되는 데이터를 데이터그램 이라고 함.

 

2.6 흐름 제어(Flow Control)

송신측 개체로부터 오는 데이터의 양이나 속도를 조절하는 기능이다. 흔히 다음과 같은 두 가지 방법을 쓴다.

- 정지-대기(Stop and wait) : 패킷에 대한 응답 후에 다음 패킷을 보냄

- 슬라이딩 윈도우(sliding window) : 가용 데이터 분량의 패킷을 한꺼번에 보낸 후 응답 패킷을 받으면 다시 그만큼 데이터를 한꺼번에 보내는 방식 (정지-대기 보다 훨씬 효율적이다.)

 

2.7 오류 제어(Error Control)

SDU나 PCI가 잘못되었을 경우 이를 발견하는 기법이다.

패리티 비트(parity bit), 잉여도 검사(CRC, Cyclic Rebundancy Check)를 통해 발견할 수 있다. 순서 검서나 일정 시간 안에 패킷을 받지 못하면 재전송을 요구하는 방식으로 이루어진다.

 

2.8 동기화(Synchronization)

데이터를 전송할 때 각 객체는 타이머 값이나 윈도우 크기 등을 기억해야 한다.

이런 인자 값을 공유하는 것을 말한다.

 

2.9 다중화(Multiplexing)

통신 선로 하나에서 여러 시스템이 동시에 통신할 수 있는 것을 말한다.

 

2.10 전송 서비스

우선순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스이다. 

728x90