Connection1 [이더리움 코어] Connection 이더리움 클라이언트 중 하나인 go-ethereum은 주변 노드를 찾는 통신(discovery)에는 UDP, 실제 노드와 연결한 뒤 통신은 TCP를 사용한다. 윗 레이어의 코드를 보다보면 Peer라는 구조체를 통해 주변 노드와 메세지를 주고 받지만, TCP를 사용한다면 어디선가 다른 노드로부터의 연결 요청을 accept 해주는(Passive OPEN) 코드가 있을 것이고, 여기서 받은 net.Conn을 Peer 구조체로 래핑하는 코드가 있을 것이다. 오늘은 여기에 대해서 알아본다. 먼저, accept를 해주는 코드가 시작 지점이기 때문에 해당 부분부터 로직을 따라가보자. p2p/server.go -> func (srv *Server) listenLoop() 재밌는 점은 TCP 연결 요청에 대한 rate .. 2023. 3. 21. 이전 1 다음