중계노드 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
33번째 줄: 33번째 줄:
 
데이터 링크 계층은 (두 개의 직접 연결된 노드 사이의) 인접 노드 간 신뢰성 있는 데이터 전송을 제공하며 물리 계층의 오류 수정도 처리한다. 여기에는 2개의 부계층도 존재한다. 하나는 매체 접근 제어(MAC) 계층이고 다른 하나는 논리적 연결 제어(LLC) 계층이다. 네트워킹 세계에서 대부분 스위치는 2계층에서 작동한다. 데이터 링크 계층의 데이터 전송단위는 [[프레임]](Frame)이며, 대표적인 프로토콜로는 [[이더넷]](Ethernet), [[토큰링]](TokenRing) 등이 있다.
 
데이터 링크 계층은 (두 개의 직접 연결된 노드 사이의) 인접 노드 간 신뢰성 있는 데이터 전송을 제공하며 물리 계층의 오류 수정도 처리한다. 여기에는 2개의 부계층도 존재한다. 하나는 매체 접근 제어(MAC) 계층이고 다른 하나는 논리적 연결 제어(LLC) 계층이다. 네트워킹 세계에서 대부분 스위치는 2계층에서 작동한다. 데이터 링크 계층의 데이터 전송단위는 [[프레임]](Frame)이며, 대표적인 프로토콜로는 [[이더넷]](Ethernet), [[토큰링]](TokenRing) 등이 있다.
  
* '''흐름 제어''' : 송신 노드가 수신 노드에 데이터를 보낼 때, 처리속도를 제어해서 보내는 것을 말한다. 이 흐름 제어는 수신 노드가 응답을 하는 것으로 두 가지 방식을 통해 제어할 수 있다.
+
* '''흐름 제어'''(Flow Control) : 송신 노드가 수신 노드에 데이터를 전달할 때, 처리속도를 고려해서 이를 넘어서지 않을 정도로 컨트롤해서 보내는 것을 말한다. 이 흐름 제어는 수신 노드가 응답을 하는 것으로 두 가지 방식을 통해 제어할 수 있다.
  
1. '''정지 및 대기''' : 송신 노드가 데이터를 보내면 수신 노드가 잘 받았다고 ACK 응답을 보낸 후, 다음 데이터를 전송하는 것이다.<br>
+
# 정지 및 대기(Stop and Wait) : 송신 노드가 데이터를 보내면 수신 노드가 잘 받았다고 ACK 응답을 보낸 후, 다음 데이터를 전송하는 것이다.
2. '''슬라이딩 윈도우''' : 송신 노드가 수신 노드로부터 응답받기 전에 수신 노드가 받을 수 있는 만큼 전부 데이터를 전송하는 것이다.
+
# 슬라이딩 윈도우(Sliding Window) : 송신 노드가 수신 노드로부터 응답받기 전에 수신 노드가 받을 수 있는 만큼 전부 데이터를 전송하는 것이다.
  
* '''오류제어''' : 데이터 전송 중에 여러 가지 원인으로 손실, 오류가 발생했을 때 이를 해결하는 제어 방식이다.
+
* '''오류제어'''(Error Control) : 데이터 전송 중에 여러 가지 원인으로 손실, 오류가 발생했을 때 이를 해결하는 제어 방식이다.
  
1. '''후진 오류 수정방식''' : 송신 노드가 데이터를 보낼 때, 오류 여부를 수신 노드가 확인 후 재요청을 하는 방식이다. 여기서 재요청 하는 것을 ARQ(Automatic Repeat Request)라고 한다.<br>
+
# 후진 오류 수정방식(Backward Error Correction) : 송신 노드가 데이터를 전달할 때, 오류가 있는지 없는지를 체크할 수 있는 값을 같이 보내면, 수신 노드가 확인을 하고 오류가 있으면 재요청을 하는 방식이다. 여기서 재요청하는 것을 ARQ(Automatic Repeat Request)라고 한다.
2. '''전진 오류 수정방식''' : 송신 노드가 데이터를 보낼 때 오류 발생 시 수정을 할 수 있는 부가 정보를 함께 보내는 방식이다.
+
# 전진 오류 수정방식(Forward Error Correction) : 송신 노드가 데이터를 보낼 때 오류 발생 시 수정을 할 수 있는 부가 정보를 함께 보내는 방식이다.
  
* '''회선제어''' : 회선 구성방식에 따라 점대점(Point to Point)방식과 다중점(Multipoint) 방식이 있고, 전송 방식에 따라 단방향(simplex), 반이중(half-duplex), 전이중(full-duplex)이 있다.
+
* '''회선제어'''(Line Control) : 회선 구성방식에 따라 점대점(Point to Point)방식과 다중점(Multipoint) 방식이 있고, 전송 방식에 따라 단방향(simplex), 반이중(half-duplex), 전이중(full-duplex)이 있다.
  
 
===1계층 - 물리 계층(Physical)===
 
===1계층 - 물리 계층(Physical)===
OSI 디핑 소스의 밑바닥에는 물리 계층이 있다. 시스템의 전기적, 물리적 표현을 나타낸다. 케이블 종류, (802.11 무선 시스템에서와 같은) 무선 주파수 링크는 물론 핀 배치, 전압, 물리 요건 등이 포함된다. 네트워킹 문제가 발생하면 많은 네트워크 전문가가 물리 계층으로 바로 가서 모든 케이블이 제대로 연결돼 있는지, 라우터나 스위치 또는 컴퓨터에서 전원 플러그가 빠지지 않았는지 확인한다. 물리 계층의 데이터 전송 단위는 [[비트]](bit) 또는 신호이며, 물리 계층 장비로는 [[허브]](Hub) 중 더미 허브(Dummy Hub)가 있다. 더미 허브는 연결된 모든 노드에 신호를 보내는 일만 할 수 있는 허브이다.<ref>Keith Shaw, 〈[http://www.ciokorea.com/insider/36536 네트워크의 기본 'OSI 7계층'··· 한번에 이해하고 외우는 방법]〉, 《CIO 코리아》, 2017-12-06</ref><ref>JooDa, 〈[http://blog.naver.com/PostView.nhn?blogId=jooda99&logNo=220700063437 (네트워크) 네트워크 기본1]〉, 《네이버 블로그》, 2016-05-03</ref>
+
OSI 디핑 소스의 밑바닥에는 물리 계층이 있다. 시스템의 전기적, 물리적 표현을 나타낸다. 케이블 종류, (802.11 무선 시스템에서와 같은) 무선 주파수 링크는 물론 핀 배치, 전압, 물리 요건 등이 포함된다. 네트워킹 문제가 발생하면 많은 네트워크 전문가가 물리 계층으로 바로 가서 모든 케이블이 제대로 연결돼 있는지, 라우터나 스위치 또는 컴퓨터에서 전원 플러그가 빠지지 않았는지 확인한다. 물리 계층의 데이터 전송 단위(Data Unit)는 [[비트]](bit) 또는 신호(signal)이며, 물리 계층 장비로는 [[허브]](Hub) 중 더미 허브(Dummy Hub)가 있다. 더미 허브는 연결된 모든 노드에 신호를 보내는 일만 할 수 있는 허브이다.<ref>Keith Shaw, 〈[http://www.ciokorea.com/insider/36536 네트워크의 기본 'OSI 7계층'··· 한번에 이해하고 외우는 방법]〉, 《CIO 코리아》, 2017-12-06</ref><ref>JooDa, 〈[http://blog.naver.com/PostView.nhn?blogId=jooda99&logNo=220700063437 (네트워크) 네트워크 기본1]〉, 《네이버 블로그》, 2016-05-03</ref>
  
 
==비트코인==
 
==비트코인==
52번째 줄: 52번째 줄:
 
광부가 새로운 [[블록]]을 발견하면 다음 방법의 하나를 사용하여 새로운 [[블록]]을 [[피어]]에 [[브로드 캐스팅]]한다.
 
광부가 새로운 [[블록]]을 발견하면 다음 방법의 하나를 사용하여 새로운 [[블록]]을 [[피어]]에 [[브로드 캐스팅]]한다.
  
;요청하지 않은 블록 푸시  
+
* 요청하지 않은 블록 푸시 : 광부는 새로운 블록을 가진 전체 노드 피어들에 블록 메시지를 보낸다. 광부는 표준 릴레이 방법을 합리적으로 우회할 수 있다. 피어가 이미 방금 발견된 블록을 갖고 있지 않다는 것을 알고 있기 때문이다.
광부는 새로운 블록을 가진 전체 노드 피어들에 블록 메시지를 보낸다. 광부는 표준 릴레이 방법을 합리적으로 우회할 수 있다. 피어가 발견된 블록을 갖고 있지 않다는 것을 알고 있기 때문이다.
+
* 표준 블록 릴레이 : 표준 릴레이 노드로 작동하는 광부는 새로운 블록을 참조하는 인벤토리로 각 피어 (전체 노드 및 SPV 모두)에 inv 메시지를 전송한다. 가장 일반적인 응답은 다음과 같다.
 +
# 블록을 원하는 각 블록 우선 (BF) 피어는 전체 블록을 요청하는 getdata 메시지로 응답한다.
 +
# 블록을 원하는 각 헤더 우선 (first-first (HF)) 피어는 최상의 헤더 체인에서 가장 높은 헤더의 헤더 해시를 포함하는 getheaders 메시지로 응답하고 일부 헤더는 포크 감지를 허용하는 최상의 헤더 체인으로 되돌아간다. 이 메시지 바로 뒤에 전체 블록을 요청하는 getdata 메시지가 온다. 먼저 헤더를 요청하면 헤더 우선 피어는 아래의 하위 섹션에서 설명한 대로 고아 블록을 거부 할 수 있다.
 +
# 블록을 원하는 각 SPV(Simplified Payment Verification) 클라이언트는 일반적으로 머클 블록을 요청하는 getdata 메시지로 응답한다.
  
;표준 블록 릴레이
+
광부는 블록 메시지, 헤더 메시지의 하나 이상의 [[헤더]] 또는 [[머클 블록]]과 SPK 클라이언트의 [[블룸 필터]]를 기준으로 한 트랜잭션을 머클블록 메시지에 이어 0개 이상의 tx 메시지로 전송하여 각 요청에 적절히 응답한다.
표준 릴레이 노드로 작동하는 광부는 새로운 블록을 참조하는 인벤토리로 각 피어 (전체 노드 및 SPV 모두)에 inv 메시지를 전송한다. 가장 일반적인 응답은 다음과 같다.<br>
 
* 블록을 원하는 각 블록 우선(BF) 피어는 전체 블록을 요청하는 getdata 메시지로 응답한다.<br>
 
* 블록을 원하는 각 헤더 우선 (first-first (HF)) [[피어]]는 최상의 헤더 [[체인]]에서 가장 높은 헤더의 헤더 [[해시]]를 포함하는 getheaders 메시지로 응답하고 일부 헤더는 포크 감지를 허용하는 최상의 헤더 체인으로 되돌아간다. 이 메시지 바로 뒤에 전체 블록을 요청하는 getdata 메시지가 온다. 먼저 헤더를 요청하면 헤더 우선 피어는 아래의 하위 섹션에서 설명한 대로 고아 블록을 거부 할 수 있다.
 
* 블록을 원하는 각 SPV(Simplified Payment Verification) 클라이언트는 일반적으로 머클 블록을 요청하는 getdata 메시지로 응답한다. 광부는 블록 메시지, 헤더 메시지의 하나 이상의 [[헤더]] 또는 [[머클 블록]]과 SPK 클라이언트의 [[블룸 필터]]를 기준으로 한 트랜잭션을 머클블록 메시지에 이어 0개 이상의 tx 메시지로 전송하여 각 요청에 적절히 응답한다.
 
  
;다이렉트 헤더 발표 (Direct Headers Announcement)
+
* '''다이렉트 헤더 발표 (Direct Headers Announcement)'''
* 중계 노드는 새로운 블록의 전체 헤더를 포함하는 헤더 메시지를 즉시 전송함으로써 invheader에 의해 따라오는 inv 메시지의 왕복 오버헤드를 건너뛸 수 있다. 이 메시지를 수신한 HF [[피어]]는 헤더 첫 번째 IBD 동안 블록 헤더를 부분적으로 검증한 다음 헤더가 유효하면 getdata 메시지로 전체 블록 내용을 요청한다. 그 후, 중계 노드는 블록 또는 머클블록 메시지의 전체 또는 필터링 된 블록 데이터로 getdata 요청에 응답한다. HF 노드는 접속 핸드 세이크 중에 특별한 센드헤더(sendheaders) 메시지를 전송함으로써 inv 공지 대신에 헤더를 수신하는 것을 선호한다고 신호할 수 있다. 블록 방송을 위한 이 프로토콜은 BIP 130에서 제안되었으며 버전 0.12 이후 Bitcoin Core에서 구현되었다.
+
: 중계 노드는 새로운 블록의 전체 헤더를 포함하는 헤더 메시지를 즉시 전송함으로써 invheader에 의해 따라오는 inv 메시지의 왕복 오버헤드를 건너뛸 수 있다. 이 메시지를 수신한 HF 피어는 헤더 첫 번째 IBD 동안 블록 헤더를 부분적으로 검증한 다음 헤더가 유효하면 getdata 메시지로 전체 블록 내용을 요청한다. 그 후, 중계 노드는 블록 또는 머클블록 메시지의 전체 또는 필터링 된 블록 데이터로 getdata 요청에 응답한다. HF 노드는 접속 핸드 세이크 중에 특별한 센드헤더(sendheaders) 메시지를 전송함으로써 inv 공지 대신에 헤더를 수신하는 것을 선호한다고 신호할 수 있다. 블록 방송을 위한 이 프로토콜은 BIP 130에서 제안되었으며 버전 0.12 이후 Bitcoin Core에서 구현되었다.
* 기본적으로 [[비트코인 코어]](Bitcoin Core)는 센드헤더로 신호를 보낸 모든 동료에게 직접 헤더 발표를 사용하여 블록을 브로드 캐스트하고 그렇지 않은 모든 피어에 대해 표준 블록 릴레이를 사용한다. 비트코인 코어는 위에 설명된 방법의 하나를 사용하여 전송된 블록을 허용한다. 전체 노드는 수신된 블록의 유효성을 검사한 다음 위에서 설명한 표준 블록 릴레이 방법을 사용하여 피어에이를 보급한다.
+
: 기본적으로 [[비트코인 코어]](Bitcoin Core)는 센드헤더로 신호를 보낸 모든 동료에게 직접 헤더 발표를 사용하여 블록을 브로드 캐스트하고 그렇지 않은 모든 피어에 대해 표준 블록 릴레이를 사용한다. 비트코인 코어는 위에 설명된 방법의 하나를 사용하여 전송된 블록을 허용한다. 전체 노드는 수신된 블록의 유효성을 검사한 다음 위에서 설명한 표준 블록 릴레이 방법을 사용하여 피어에이를 보급한다.
  
 
{| class="wikitable" width=1100 style="color:balck; height:250px; text-align:left; background-color:#F8F9FA; margin:15px 15px 15px 30px; "
 
{| class="wikitable" width=1100 style="color:balck; height:250px; text-align:left; background-color:#F8F9FA; margin:15px 15px 15px 30px; "
72번째 줄: 71번째 줄:
 
| From → To || Relay → Any || BF → Relay || HF → Relay || Relay → HF
 
| From → To || Relay → Any || BF → Relay || HF → Relay || Relay → HF
 
|-
 
|-
| 페이로드 || 새 블록의 인벤토리 || 새 블록의 인벤토리 || HF 노드의 BHC(Best Header Chain)에서 하나 이상의 헤더 [[해시]] || HF 노드의 BHC를 릴레이 노드의 BHC에 연결하는 최대 2,000개의 헤더
+
| 페이로드 || 새 블록의 인벤토리 || 새 블록의 인벤토리 || HF 노드의 BHC(Best Header Chain)에서 하나 이상의 헤더 해시 || HF 노드의 BHC를 릴레이 노드의 BHC에 연결하는 최대 2,000개의 헤더
 
|-
 
|-
 
| 메시지 || 블록 || 머클블록 || tx ||  
 
| 메시지 || 블록 || 머클블록 || tx ||  
102번째 줄: 101번째 줄:
 
* [[블록]]
 
* [[블록]]
 
* [[라우팅]]
 
* [[라우팅]]
* [[피어]]
 
  
{{블록체인 기술|검토 필요}}
+
{{블록체인 기술|토막글}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)