# 다중 채널

Klaytn 노드는 **다중 채널**로 운영될 수 있습니다.

노드가 다중 채널로 실행될 경우 커뮤니케이션을 위해 두 개의 포트가 설치됩니다. 단일 채널로 노드가 실행될 시, 하나의 포트만 설치됩니다. 두 다중 채널 노드가 연결될 때 두 개의 포트가 사용됩니다. 그 외의 경우에는 하나의 포트가 사용됩니다.

다중 채널 노드는 `--multichannel` 플래그를 통해 활성화될 수 있습니다. If you use [`kend`](https://archive-ko.docs.klaytn.foundation/content/installation-guide/deployment/endpoint-node/installation-guide/startup-the-en), multi-channel is enabled by default due to the statement `MULTICHANNEL=1` in [`kend.conf`](https://archive-ko.docs.klaytn.foundation/content/installation-guide/deployment/endpoint-node/installation-guide/configuration). 다중 채널을 비활성화하기 위해서는 선언문을 `MULTICHANNEL=0`로 대체하면 됩니다. 특정 포트를 사용해 노드를 운영하고 싶다면 `port`와 `subport` 플래그가 사용될 수 있습니다. 연결되는 피어의 포트 값을 특정하고 싶다면 [KNI](https://archive-ko.docs.klaytn.foundation/content/klaytn/design/kni)를 확인해세요.

## 구조 <a href="#architecture" id="architecture"></a>

![Multi-Channel Server](https://4178890574-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LqJV-03ampuHElwofFa%2Fuploads%2Fgit-blob-f96ec73881c10086d97d0a8867885a7b9867e3c3%2Fmultichannel.png?alt=media\&token=a997bcb2-8d77-4c19-be78-2c6eb3a4c050)

위의 그림은 두 다중 채널 노드 간의 연결을 보여줍니다. 메인포트(A)와 서브포트(B) 두 포트는 다른 메시지를 전달합니다.

* **메인포트**(A)는 블록과 합의 프로토콜 관련 메시지 전달에 사용됩니다.
  * 블록 메시지는 해시, 헤더, 바디, 그리고 블록 영수증에 대한 요청과 응답을 포함합니다.
  * 합의 메시지는 Request, Preprepare, Prepare, Commit, 그리고 RoundChange 등을 포함합니다. 이 메시지들의 의미는 [PBFT](https://archive-ko.docs.klaytn.foundation/content/klaytn/consensus-mechanism#pbft-practical-byzantine-fault-tolerance)에서 찾을 수 있습니다.
* **서브포트**(B)는 트랜잭션 메시지 전달을 위한 것입니다.

![Single Channel Server](https://4178890574-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LqJV-03ampuHElwofFa%2Fuploads%2Fgit-blob-eddbc65e760c775448ba537fe9e290abe33b63a0%2Fsinglechannel.png?alt=media\&token=7d9dd0df-52cc-4879-b98a-cf28dc2248f5)

이 그림은 두 단일 채널 노드 간, 또는 단일 채널 노드와 다중 채널 노드 간의 연결을 나타냅니다. 이 경우, 블록, 트랜잭션, 합의 프로토콜에 관련된 모든 메시지들은 동일한 포트를 통해 전달됩니다.

## 포트 <a href="#multichannel-port" id="multichannel-port"></a>

KNI에서 포트 번호를 설정하고 싶다면 [KNI 스킴](https://archive-ko.docs.klaytn.foundation/content/klaytn/design/kni)을 참고하세요.

* 단일 채널 : 단일 채널 노드는 하나의 포트를 사용합니다 (기본값은 32323입니다).
* 다중 채널: 다중 채널 노드는 두 개의 포트를 사용합니다. 이 포트들은 `port`와 `subport`로 특정될 수 있습니다. Klaytn에서는 `port`와 `subport`의 기본값이 각각 32323과 32324입니다.
  * 다중 채널 노드에 연결할 때는 `subport`를 설정하지 않아도 됩니다. 이 경우 처음에 Klaytn 노드는 단일 채널을 사용해 연결을 하려고 할 것입니다. 핸드셰이크 과정에서 실제 피어의 포트 번호가 드러납니다. 피어가 다중 채널 노드라면, 지속 중인 연결은 취소되고 업데이트된 포트로 재연결될 것입니다.
