본문 바로가기

분류 전체보기98

게이트웨이 이중화 프로토콜 First Hop Redundancy Protocol (말그대로 첫 홉=게이트웨이의 이중화를 위한 프로토콜)은 크게 3개의 종류가 있다. 1. Cisco 전용 프로토콜인 HSRP (Hot Standby Routing Protocol) 2. IETF 표준인 VRRP (Virtual Router Redundancy Protocol) 3. 위 둘과는 달리 로드 밸런싱을 기반으로 하는 GLBP (Gateway Load Balancing Protocol) 1,2는 다수의 gw중에서 하나의 gw만을 사용(Active)하고 나머지는 대기(Standby)하는 방식이나 3은 모든 gw를 사용하면서 로드 밸런싱이 이루어지기 때문에 설정이 보다 복잡하다. 관리자는 단일 장애점을 회피하기 위해 gw를 이중화한다. 하지만 엔드.. 2023. 10. 7.
Delegate와 Action, Func, Predicate 보호되어 있는 글 입니다. 2023. 7. 20.
NAT 방식의 구분 위키백과에서 사진을 가져왔는데 조금 이해하기 힘든 부분이 있어서 나만의 설명을 조금 덧붙여보았다. Full Cone 기본적으로 NAT(NAPT)는 패킷이 NAT 장비를 거쳐 Outbound될 때 포트를 매핑한다. 그리고 매핑 정보는 테이블에 기록되어 다시 Inbound될 때 이를 참조하고 패킷을 포워딩하게 된다. Full Cone은 가장 느슨한 정책으로 한번 포트가 매핑되면 누구든지 접근할 수 있는데, 이는 상대방의 정보까지는 매핑하지 않기 때문이다. Restricted Cone Full Cone과는 달리 상대방의 IP를 함께 매핑하므로 패킷의 송수신에 제한이 있다. 좌측 그림을 보면 클라이언트는 Server 1에게 송신한 기록이 있으므로 Server 1으로부터 패킷을 수신할 수 있다. 하지만 Serve.. 2023. 7. 17.
STUN-TURN과 NAT의 관계 STUN과 TURN은 주로 VoIP나 WebRTC를 다룰 때 나오는 주제인데, 그 근본적인 원인은 NAT에게 있다고 할 수 있다. VoIP를 예로 들면, App. Layer 프로토콜인 SIP와 SDP로 세션을 수립할 때 자신의 IP, Port를 담아서 보내는데 일반적인 NAT는 이를 커버해주지 않으므로 STUN과 TURN이 필요한 것이다. 그렇다면 일반적이지 않은 NAT를 사용하면 되는게 아닌가? 싶겠지만 그 기능(ALG)에는 여러 문제가 있다. 궁금하다면 다음의 링크를 참고하시라. SIP ALG and why it should be disabled on most routers | VoiceHost 아무튼, STUN과 TURN에 대해 알아보자면... VoIP 네트워크를 위와 같이 구성했다고 치자. 그러면.. 2023. 7. 9.
네이글(Nagle) 알고리즘이란? 네이글 알고리즘이 처음 소개된 RFC 896을 보면... 작은 패킷과 관련하여 특수한 문제가 있다. 키보드로 작성한 단일 문자를 TCP로 전송하면 일반적으로 41 바이트(1 바이트의 데이터, 40 바이트의 헤더)의 패킷이 된다. 이 4000%의 오버헤드는 짜증나지만 부하가 적은 네트워크에서는 견딜만한 수준이다. 그러나 혼잡한 네트워크에서는 이 오버헤드로 인해 손실, 재전송 등의 문제가 발생할 수 있다. 실제로 처리량이 너무 낮아지면 TCP 연결이 중단될 수도 있다. 라는 내용이 있는데, 요약하자면 1 바이트를 보내려고 수십 바이트의 헤더를 덧붙이는 게 싫다는 말이다. 이는 타이머 등을 활용해서 해결할 수도 있었지만 여러 문제가 있었기에, John Nagle은 아래의 해결책을 제시한다. ⋯간단하고 우아한 .. 2023. 5. 19.
TCP 상태 전이도 설명 소켓 프로그래밍을 해봤다면 이해가 조금 수월할 것이다. 서버의 입장에서는, 소켓을 Listen 상태로 전환한다. (LISTEN) SYN을 수신하고 SYN+ACK를 송신한다. (SYN RECEIVED) ACK를 수신한다. 클라이언트 소켓이 Accept 된다. (ESTABLISHED) 데이터를 송수신한다. FIN을 수신하고 ACK를 송신한다. (CLOSE WAIT) FIN을 송신한다. 소켓을 Close하려 한다. (LAST ACK) ACK를 수신한다. 소켓을 Close 한다. (CLOSED) 위의 흐름이 가장 일반적이다. 이는 다이어그램의 파란 선을 따라간 것이고, 회색 선을 따라가면 일반적이지 않은 전이가 보인다. 대표적으로, 서버가 먼저 SYN을 송신한다. (SYN SENT) 서버가 먼저 FIN을 송신한.. 2023. 5. 18.
accumulate의 사용법과 활용 https://cplusplus.com/reference/numeric/accumulate/ function template std::accumulate sum (1)template T accumulate (InputIterator first, InputIterator last, T init);custom (2)template T accumulate (InputIterator first, InputIterator last, T init, BinaryOperation binary_op); Accumulate values in ra cplusplus.com accumulate는 컨테이너 내부의 원소들에 대하여 누적 값을 구할 때 사용된다. 값은 무엇이든 될 수 있다. 기본적으론 합을 구하지만 아래와 같이 곱.. 2023. 5. 15.
정지 문제(Halting problem)의 간단한 증명 증명을 위해 정지 문제를 판별할 수 있는 함수 H가 존재한다고 하자. (귀류법) 함수 H는 판별할 함수 I를 인자로 받는다. 이 때 함수 J를 아래와 같이 정의하면 모순이 발생한다. J의 인자로 J를 제공하면, - H(J)가 참이라면 J는 언젠가 끝난다는 뜻이지만 J는 무한루프에 의해 끝나지 않는다. - H(J)가 거짓이라면 J는 끝나지 않는다는 뜻이지만 J는 return문에 의해 끝나게 된다. 따라서 이는 모순이다. 2023. 4. 28.