[데이터 통신과 네트워킹 4th Edition] 프로토콜이란
제목: Data Communications and Networking [4th Edition]
저자: Behrouz A.Forouzan
프로토콜
이전에 프로토콜 = "A set of rules for communication"이라고 했다.
즉, 송신자와 수신자 사이의 통신 규약이라고 볼 수 있다.
내가 중국인과 소통하기 위해선 우리끼리 영어를 쓰자는 agreement를 할 수도 있고, 아니면 내가 중국말을 쓰겠다는 agreement를 할 수도 있는 것처럼, 데이터 통신에서도 규약은 반드시 존재한다.
실제로 네트워크에선 데이터 통신이 이루어지기 위해서 송신자와 수신자 뿐만 아니라 그 중간 intermediate devices들도 같은 통신 규약을 지켜야 한다. 즉, 라우터나 스위치나 핸드폰이나 컴퓨터나 모~든 디바이스는 같은 프로토콜을 지니고 있어야 통신이 가능하다.
프로토콜의 핵심 구성
1. Syntax (구문): 데이터가 어떻게 포맷되고 구조화되는지 (필드의 크기, 데이터의 순서)
- 데이터의 첫 8비트는 발신자 주소고 두 번째 8비트는 수신자 주소고, .....
2. Semantics (의미): 데이터의 내용과 각 데이터 필드가 의미하는 바
- 구문이 데이터의 구조라면, 의미는 각 구조에 담긴 정보가 실제로 무엇을 의미하는지를 설명.
3. Timing (타이밍): 데이터가 언제 전달되어야 하고, 응답이 언제 돌아와야 하는지에 관한 규칙.
- 송수신 사이의 대기 시간, 동기화, 타임아웃 등을 포함
프로토콜을 사용한 Layering
Maria가 Ann에게 편지를 보낸다고 생각해보자.
크게 다음과 같은 과정을 거친다.
1. 송신자가 편지에 내용을 작성한다
2. 봉투에 감싼다
3. 우체국이 배송지로 배송한다
4. 봉투를 푼다
5. 내용을 읽는다
이를 그림으로 표현해보면 아래와 같다.
이것을 우리는 3-Layer Protocol이라고 함.
즉, 각 층마다 다른 프로토콜을 사용하되 송신자와 수신자 사이 같은 층에선 같은 프로토콜을 적용할 줄 알아야 한다.
이제 이것을 인터넷에 적용시키면 어떤 형태가 될까?
TCP/IP Protocol Suite
이 TCP/IP protocol suite가 현재 인터넷에 적용되고 있는 Layer이다.
각 Layer가 어떤 일을 하는지 추후에 알아보기로 하고, 이 OSI Layer이나 TCP/IP Layer을 사용하면 좋은 점은?
바로 이 layer가 있는 디바이스들은 어떤 디바이스간에 완벽한 상호 운용성이 가능하다는 것이다.
각 계층은 서로 다른 프로토콜을 사용하면서 서로 도와줄 수 있다.
우리가 아는 host와 connecting device는 서로 다른 높이의 layer을 가지고 있다. 왜냐하면, 각자의 역할이 정해져 있기 때문이다. 예를 들어서 이것도 나중에 작성할 것이지만, switch는 단순히 패킷을 Toss 하는 것에 목표를 둔다면, router은 좀 더 경로를 보면서 toss하는 디테일한 역할을 한다. 송신자와 수신자는 저것들에 더 나아가서 어플리케이션을 열고 닫고 실행할 수 있는 능력까지 있어야 한다.
따라서 일을 더 많이하는 송신자와 수신자에게 맞는 layer을 단순히 옮기기만 하면 되는 스위치에게 준다? overload를 할 수 있기 때문에, 모든 디바이스가 같은 layer을 사용하지 않는다.
따라서 볼 수 있듯, 스위치는 2-layer이 존재하고 router은 3-layer이 존재하는 것이다.
그리고 만약 송신자가 데이터를 보낸다면, 어플리케이션으로부터 시작한 데이터는 차근차근 아래 layer로 가면서 각 층에서 필요로 하는 것들을 준비하게 되고, 바깥으로 나가지게 되는 것이다.
이제 다음 글부턴 데이터가 어떻게 각 층을 거치며 변하게 되는지 알아보도록 하자