프로토콜이 뭘까?
프로토콜(Protocol)은 통신에서 상대방과 통신하는 방법에 대한 규약이다. 어떻게 통신할 것인지를 미리 사전에 정의해놓고 그 방식에 맞게 통신하는 것이다. 만약, 프로토콜이 없다고 가정해보자.
A 회사에서 B 회사로 데이터를 전달하는데 그냥 원본 그대로 전송한다. A 회사는 전용 우편함이 존재하고 B 회사는 우편함이 따로 없다. B 회사에서 데이터를 전달 받을 때, 우편함이 없어서 사용자에게 직접 가져다 줘야하는데 우편 기사가 존재한다면 한 명, 한 명에 대해 일일이 물어보고 갖다줘야한다. 만약, B 회사에도 우편함이 존재했고 이 우편을 관리해주는 사람이 존재한다면? 알아서 다 해줄 것이다. 컴퓨터 입장에서 본다면 컴퓨터 시스템이 사용자를 찾기 위해 다른 작업을 처리하지 못하고 시간을 낭비하게 된다는 것이다.
시나리오
위에서 설명했듯 데이터 통신에서는 통신을 위한 Protocol을 정해야 한다.
Protocol을 정하기 위한 첫 번째 시나리오로 한 계층에서 통신을 할 경우다. 이 경우는 사용자 간 1:1로 통신을 하는 것을 의미한다. 그냥 원본 자체를 특정 사용자에게 그대로 전달하는 것이다. 정말 단순하고 좋은 방법이라고 생각한다.
그런데 첫 번째 시나리오에서 문제점이 생겨서 두 번째 시나리오가 발생했다.
만약, 원본 파일이 중요한 내용일 경우, 중간에서 누군가가 파일을 훔쳐볼 수 있다는 것이다. 만약, 우편을 보냈는데 우편지로 동봉이 되어있지 않다면 누구나 그 내용을 볼 수 있다는 문제점과 동일하다.
그래서, 두 번째 시나리오에서는 평문을 암호화해서 보내자는 것이다. 한 번에 모든 곳에서 작업을 수행하면 너무 많은 처리가 발생하니까 각 계층을 나누어 평문을 암호화하고 전송하는 3개의 계층을 생각하게 된 것이다.
Principle
시나리오대로 프로토콜을 정한다면 2가지 원칙이 필요하다.
- 양방향 통신을 하고 싶다면 각 계층(Layer)는 두 가지 일을 수행해야한다.
- 3 계층에서 평문을 작성할 수 있다면, 읽을 수 있어야 하고
- 2 계층에서 암호화를 할 수 있다면, 복호화 할 수 있어야 하고
- 1 계층에서 송신을 할 수 있다면, 수신을 할 수 있어야 한다는 점이다.
- 통신을 하려면 양 쪽의 계층은 서로 동일해야 한다는 점이다.
- A에서 3계층 프로토콜을 사용했다. B에서는 1계층 프로토콜을 사용했다.
- A에서 암호화된 내용은 B에서 어떻게 복호화하지?
- A에서 송신한 내용은 B가 어떻게 받지?
'CS > 데이터 통신' 카테고리의 다른 글
4. Physical Layer - Digital Signals (0) | 2024.04.24 |
---|---|
3. Physical Layer - Data와 Signals 그리고 Bandwidth (0) | 2024.04.23 |
2. Protocol Model (0) | 2024.04.22 |