비트코인 처음 개발한 사토시 나카모토의 비트코인 논문에 보면 Peer to Peer 를 찾을 수 있다.
P2P (Peer-to-Peer network) 란?
= 동등 계층간 통신망으로도 불린다.
순수 P@P 파일 전송 네트워크는 Client or Server의 역할을 동시에 수행한다. 보통 중앙 서버를 중심으로 통신하는 Client-Server 모델과 다르다.
* 일반적인 중앙 서버 시스템 : ex. 인터넷에서 정보 검색하기 위해서는 '검색 웹사이트' = 중간에서 연결해주는 Server 가 필요
우리에게 일반적으로 익숙한 중앙 집중식 관리 시스템을 사용하지 않고 상호 연결된 Node(=peer = 사용자) 들이 서로 간에 자원을 공유할 수 있는 네트워크. 서버없이 동일/관련 프로그램에 접속한 사람들끼리 바로 서로의 정보를 직접 공유할 수 있다.
=> 회원 서로 간 동일한 정보 공유뿐 아니라 다양한 정보를 공유하는 회원 간의 커뮤니티 형성이 가능해짐
=> 공개된 웹사이트에 한정돼 있던 정보추출 경로를 개인이나 회사가 운영하는 데이터베이스로까지 확대할 수 있다.
=> 그룹웨어로서 역할을 통해 원격회의, 원격교육 등이 가능하다.
* 그룹웨어 : 그룹웨어란 전자결재, 사내 게시판, 일정관리 등기업 구성원의 업무 공유와 의사 결정에 도움이 되는 기능으로 이루어져 있는 시스템으로 협업툴 기능의 집합체
리소스 기반의 어드레싱
P2P는 인터넷에 연결되어 있는 여러 형태의 리소스( 저장 공간, 씨피유 파워, 콘텐츠, 그리고 연결도니 컴퓨터를 쓰고 있는 사람 그 자체) 를 이용하는 일종의 응용 프로그램이다. 그런데 이들은 ip주소도 없고, 연결이 되었다 안 되었다 하는 불안정한 분산된 리소스이다. 따라서 P2P 노드는 원래의 DNS 바깥에서 운용될 수밖에 없고 이 덕분에 P2P가 유명해졌다.
* DNS : 도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. DNS 네임 서버는 도메인을 위한 DNS 레코드를 저장하는 서버이다. 쉽게 생각하면 전화번호부와 같은 저장소 !
P2P 구조
P2P방식은 기존의 Server - Client 방식의 데이터 전송과는 본질적으로 다른 구조를 지닌다.
기존 방식 :
기존의 방식에서는 사용자(참여자)가 데이터를 올리면 ---> Server 서버 로 이동
다른 사용자가 해당 데이터를 얻기위한 요청을 -----> Server에게 보내서
Server가 요청한 사용자에게 데이터를 찾아 -----> 사용자에게 전달해준다.
이 때 Server 는 중앙/중심이 되고 사용자(Clients)는 서버에 의존하는 위치가 된다.
P2P 방식:
중앙 / 중심 / 센터가 없다. P2P 네트워크에 참여하는 모든 참여자는 서로 평등하다. 개인의 컴퓨터들이 네트워크로 연결되어 서로 정보와 자료를 공유한다.
P2P 구현 방식 3가지
1) 하이브리드 P2P (Hybrid P2P)
- 서버의 중앙화를 완전히 벗어나진 못한 형태
- 중앙 서버가 중개 및 검색을 제공하고 데이터 전송만 P2P (개인간)방식으로 주고 받는다.
- 장점 : 중앙 서버가 존재하여 검색이 빠름
- 단점 : 네트워크가 커질수록 중앙서버에 부담 up / 중앙 서버 폭파 시 전체 네트워크는 짜이찌엔이다.
- ex. 소리바다, 냅스터와 같은 파일 공유 프로그램, 메신저를 통한 파일 전송
2) 퓨어 P2P (Pure P2P)
- 중앙 서버가 존재하지 않는다.
- 네트워크에 참여하는 모든 컴퓨터는 똑같이 Server & Client 역할을 겸한다 => 데이터 전송에 있어 동일한 수준의 책임을 가진다.
- 장점 : 서버가 없어서 전체 네트워크가 죽는 일은 거의 희박하다. / 전 세계 모든 컴퓨터의 정보 자료를 100% 검색 및 공유 가능 / 제한된 커뮤니티 안에서 파일 정보 공유 네트워크 구성 가능 / 각 네트워크 연결을 통해 커뮤니티 상호 간의 정보 공유망 자유롭게 구축 가능
- 단점 : 중앙 서버가 없어서 네트워크를 제어할 수단이 없고 파일 목록을 검색할 때마다 네트워크의 모든 컴퓨터를 검색해야해서 속도가 떨어진다. / 과부하 / 해킹 위험
- ex. Gnutella, Freenet
3) 슈퍼 피어 방식 (Super Peer)
- 하이브리드P2P와 퓨어P2P 방식의 장점들을 결합해 놓은 방식이다.
- P2P 네트워크에 중앙 서버 역할을 하는 슈퍼 피어들을 여러개 두어 네트워크를 구성한다.
- 장점 : 중앙 서버 존재 => 검색 속도 빠름
- 여러개의 중앙서버로 하나의 중앙서버가 문제가 있더라도 다른 중앙서버로 대처 가능
- 단점 : 슈퍼 피어를 구현하기가 쉽지 않다 / 아직 최적화된 이론이 없다
블록체인에서의 P2P는 ?
블록체인의 핵심은 : 탈중앙화이다. CS구조 사용대신 사람과 사람의 직접적인 통신 / 소통을 지향한다.
블록체인 P2P의 장점
1) 자유로움 : CS 구조보다 자유로워 많은 개발자가 참여 => 보상까지 있다면 CS보다 안정적인 서비스 가능
2) 가격 절감 : P2P는 네트워크가 생성되면 사람들이 알아서 서버를 자청하며 생태계를 꾸린다. 예를 들어 비트코인을 줄 테니 P2P 서버를 유지하라는 것이 블록체인의 개념이다. => 지금도 수많은 사람 /기업들이 본인들의 컴퓨터를 기꺼이 P2P에 참여시켜 비트코인 생태계를 유지하고 있다.
3) 보안 능력 : P2P는 서로 간의 모든 것을 감시한다. 모든 컴퓨터(node)가 Server, Client의 역할을 겸직하게 되어 상대방의 컴퓨터를 감시하고 올바른 결론으로 도출하여 결국 보안 능력이 향상된다.
4) 탈중앙화 : P2P의 탈 중앙화 방식은 사용자들이 참여하여 잘못된 것을 정정하는 직접 민주주의와 유사하다. 만약 누군가가 해킹을 하면 나머지 대다수의 컴퓨터가 해킹한 부분을 잘못된 값으로 인지하고 무시하게 된다. 이 방식으로 블록체인의 해킹은 거의 불가능이라고들 말한다. (나머지 51% 의 컴퓨터(사용자)들을 동시에 해킹하지 않는 이상......)
5) 고가용성 : CS구조에서 서버에 문제가 생기면 서비스에 차질이 생긴다. 이는 SPOF (Single Point of Failure) 구조라고 하며 이를 위해 서버를 분산화 하는데 이 과정에서 막대한 비용이 든다. 하지만 P2P는 어느 컴퓨터 or 시스템에 장애가 발생해도 서비스에 큰 지장을 받지 않는다.
6) 신뢰성 : 블록체인의 가치는 공유 원장에서 시작한다. P2P기반으로 노드(컴퓨터)간 정보를 공유하므로 블록체인은 공유를 기반으로한 신뢰에서 나오는 가치라고 볼 수 있다. 정보를 여과없이 공개하므로 각 피어들은 신뢰도를 높일 수 있다.
References:
https://ko.wikipedia.org/wiki/P2P
http://wiki.hash.kr/index.php/%ED%94%BC%ED%88%AC%ED%94%BC
'study' 카테고리의 다른 글
HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 차이 (0) | 2021.09.10 |
---|---|
CPU vs GPU (0) | 2021.09.08 |
모듈 vs 패키지 vs 라이브러리 vs 프레임워크 (0) | 2021.08.24 |
[타입스크립트 vs 자바스크립트] TypeScript 사용법 / 컴파일 (0) | 2021.08.07 |
[ Google API 최신 ] http://localhost로 구글 로그인 로그아웃 API 사용하기 JavaScript node.js (0) | 2021.06.16 |