김재훈 교수님 [email protected] 010-5293-2551
P2P 네트워크
P2P 블록체인 네트워크
토폴로지
오픈 액세스 블록체인 네트워크
토폴로지(topology 망구성방식) 형성 및 데이터 통신
→ 약간의 수정으로 즉시 사용 가능한 P2P 프로토콜
노드 간의 랜덤 토폴로지는 블록체인 복제 동기화를 위해 효율적으로 정보를 전파
피어 검색 및 토폴로지 유지 관리
분산 네트워킹 미들웨어
NET - 통신 프로토콜
IP(Internet Protocol 어떤 컴퓨터인가)
인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야 할 규약

네트워크 액세스 계층(Network Access Layer)
- OSI 7계층의 물리계층과 데이터 링크 계층에 해당
- TCP/IP 패킷을 네트워크 매체로 전달하는 것과 네트워크 매체에서 TCP/IP 패킷을 받아들이는 과정을 담당
- 에러 검출 기능(Detecting errors), 패킷의 프레임화(Fraimg packets)
- 네트워크 접근 방법, 프레임 포맷, 매체에 대해 독립적으로 동작하도록 설계.
- 물리적인 주소로 MAC을 사용
- LAN, 패킷망, 등에 사용됨
2계층 인터넷 계층(Internet Layer)
- OSI 7계층의 네트워크 계층에 해당
- 어드레싱(addressing), 패키징(packaging), 라우팅(routing) 기능을 제공
- 네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공하게 됨.
- 프로토콜 종류 – IP, ARP, RARP
3계층 전송 계층(Transport Layer)
- OSI 7계층의 전송 계층에 해당
- 애플리케이션 계층의 세션과 데이터그램(datagram) 통신서비스 제공
- 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다.
- 프로토콜 종류 – TCP, UDP
4계층 응용 계층(Application Layer)
- OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당한다.
- 프로그램(브라우저)가 직접 인터액트하는 레이어. 데이터를 처음으로 받는곳
- 다른 계층의 서비스에 접근할 수 있게 하는 애플리케이션을 제공
- 애플리케이션들이 데이터를 교환하기 위해 사용하는 프로토콜을 정의
- TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.
- 프로토콜 종류 – FTP, HTTP, SMTP, SSH
port ← 어떤 서비스인가
socket
-
개발 취지
- 하위계층 몰라도되니까 응용계층만 생각하고 소켓 가지고 네트워크 개발해라 ← 캘리포니아 대학교에서 빌 조이(Bill Joy)에 의해 개발
- 네트워크 프로그래밍을 쉽게 사용할 수 있도록 하는 api( primitive)
- 네트워크 계층과 전송 계층이 캡슐화 되어 있기 때문에 두 개의 계층을 신경 쓰지 않고 프로그램을 만들 수 있습니다.
-
소켓은 네트워크 부분의 끝 부분 ← 계층과 계층을 연결

-
실제 데이터가 어떻게 전송되는지 상관하지 않고 읽기/쓰기 인터페이스를 제공
-
TCP/IP 계층의 TCP를 지원하기 위해서 Socket, ServerSocket 클래스를 제공
- 클라이언트는 Socket 객체를 생성하여 TCP 서버와 연결을 시도
- 서버는 SocketServer 객체를 생성하여 TCP 연결을 청취하여 클라이언트와 서버가 연결
-
종류
- TCP
-
TCP란 소켓 프로그래밍 중의 하나
-
스트림 통신 프로토콜이라고 부르며, 양쪽의 소켓이 연결된상태여야만 가능 하기 때문에 연결지향 프로토콜
- 연결형(connnection-oriented) : 데이터 보내기 전에 반드시 연결이 형성되어야함
-
데이터를 송신할때마다 확인 응답을 주고받는 절차로 인해 통신의 신뢰성이 상승
→ **통신 네트워크( client와 Server 또는 P2P Socket)**를 사용한 통신에 많이 사용
-
3 way handshake 이라는 방식으로 연결( 속도가 느려지는 주요 원인)
연결 과정
- Client에서 Server에 연결 요청을 하기위해 요청(SYN) 데이터를 보낸다.
- Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다.
- 그리고 요청을 정상적으로 받았다는 **대답(ACK)**와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.
- Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송한다.
- ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다.
위와 같이 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED 되면서 연결이 되게 된다.
-
TCP VS. UDP

RPC( Remote Procedure Call)
소캣을 더 쉽게 개발할 수 있도록 사용하는 인터페이스
RPC 는 LPC(Local Procedure Call) 의 확장 개념으로 기술적으로는 프로토콜이 아니며 단지 서버-클라이언트와 같은 분산 시스템을 구성하는 일반적인 메커니즘이다.
즉, RPC 프로토콜은 표준이 없기 때문에 데이터 통신을 위한 추상화된 프르토콜로써 실제 데이터 전송을 위해서 TCP or UDP 를 사용하여 통신한다. 여러 대의 컴퓨터에 프로시져를 분산하고, 결과를 취합하는 방식으로 분산 시스템에서 사용가능하다.
RPC 는 동기 서버, 비동기 서버, 스트리밍 서버에 모두 사용된다. 특정 프로토콜을 이용한 기술적인 개념이 아닌 원격 프로시저를 호출할 수 있다는 키워드에 집중하 면 될 듯 하다.
서버-클라이언트 구조 애플리케이션에서 원격에 있는 프로시저를 실행할 수 있게 하는 통신기술로써 애플리케이션이 로컬인지 원격인지에 관계없이 프로시저를 호출함으로써 하나의 시스템 처럼 동작할 수 있다.
**** 프로시저**
- 특정 작업을 수행 하는, 이름이 있는 PL/SQL BLOCK
- 매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK
** REST 방식과 경쟁구도
블록체인에서 클라이언트(디바이스)는