포워딩 테이블(forwarding table) 네트워크 라우터에서 필수 불가결한 요소 포워딩은 네트워크 계층 데이터 평면에 의해 실행되는 매우 중요한 기능 라우터 역할 : 도착하는 패킷 헤더의 필드값을 조사하여 패킷을 전달 → 이 값을 라우터의 포워딩 테이블의 내부 색인으로 사용 포워딩 테이블 엔트리에 저장되어 있는 헤더 값 해당 패킷이 전달되어야 하는 라우터의 외부 링크 인터페이스를 나타냄 헤더의 값은 네트워크 계층 프로토콜에 따라 다름 패킷의 목적지 주소일 수도 있고, 패킷이 속한 연결의 지시 일수도 있음 제어 평면: 전통적인 접근 방법 첫 포워딩 테이블이 어떻게 구성되는가? (제어 평면에서) 라우팅과 (데이터 평면에서) 포워딩 사이의 중요한 상호작용을 보임 라우터의 포워딩 테이블의 내용은 라우팅 알..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92345 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2022 카카오 블라인드 코딩테스트에서 나왔던 문제. 문제 자체는 이해하기 쉬운데, 풀기는 너무 어렵다. 다른 사람들은 100점 방지용 문제라고도 하더라. 문제 핵심 및 풀이 해당 문제의 해결법 결론부터 말하자면, 해당 문제는 재귀와 백트래킹에 대해 정말 잘 이해하고 있거나, 미니맥스(MiniMax) 알고리즘을 알고 있어야 풀 수 있다. 미니맥스 알고리즘은 게임 이론 및 AI에서 사용하..
두 호스트 사이에 네트워킹이 이뤄지는 과정 두 호스트 사이에는 중계 라우터가 있다고 가정 과정 송신자 네트워크 계층은 본인의 트랜스포트 계층으로부터 세그먼트를 얻는다. 각 세그먼트를 데이터그램으로 캡슐화하고, 인접한 라우터에게 데이터그램을 전송 수신 호스트의 네트워크 계층은 트랜스포트 계층 세그먼트를 추출 후, 본인의 트랜스포트 계층가지 전달 네트워크 제어 평면에 의해 출발지 ~ 목적지 호스트까지 전송되도록 함 → 이때 로컬 포워딩, 라우터 별 포워딩 등을 대응시킴 의미 각 라우터 데이터 평면 역할 → 입력 링크에서 출력 링크로 데이터그램을 전달하는 것 네트워크 제어 평면의 근본적인 역할 → 데이터그램이 출발지 ~ 목적지까지 전달되게끔 로컬, 라우터별 포워딩을 대응시킨 것 라우터 프로토콜 스택 트랜스포트..
QUIC(Quick UDP Internet Connections) 란? QUIC → 빠른 UDP 인터넷 연결 프로토콜 애플리케이션 설계자는 애플리케이션 계층에 항상 자신의 프로토콜을 확장할 수 있다. 신뢰적인 데이터 전송, 혼잡 제어 및 연결 관리를 위한 많은 접근 방식을 사용 QUIC의 특징 QUIC는 UDP를 하위 트랜스포트 계층 프로토콜로 사용하는 애플리케이션 계층 프로토콜 특히 단순하지만 발전된 HTTP/2 버전 위에서 인터페이스 되도록 설계됨 가까운 장래에 HTTP/3은 기본적으로 QUIC을 통합할 것 QUIC의 주요 기능 연결지향적이고 안전함 TCP와 마찬가지로 QUIC은 두 종단 간의 연결지향 프로토콜 이를 위해 QUIC 연결 상태를 설정하기 위해 종단 간에 핸드셰이크가 필요 연결 상태의 두..
공평성 혼잡 제어 메커니즘이 공평하다는 것의 정의 가정 각각 다른 종단 간의 경로를 갖고, 전송률이 R bps인 병목 링크가 존재 K개의 TCP 연결이 해당 병목 링크를 지나간다. 병목 링크(bottleneck link) 각 연결에 대해 연결 경로상에 있는 모든 링크는 혼잡하지 않음 병목 링크의 전송 용량과 비교해서 충분한 전송 용량을 갖고 있음을 의미 각 TCP 연결은 큰 파일을 전송하고 있고, 병목 링크를 통과하는 UDP 트래픽은 없음. 위 가정에서 각 연결의 평균 전송률이 R/K에 가까울수록 공평한 것 → 각 연결은 링크 대역폭을 동등하게 공유 TCP가 연결 사이에서 대역폭을 똑같이 공유하는 이유 전송률이 R인 링크 하나를 공유하는 2개의 TCP 연결의 경우 가정 두 연결은 같은 MSS와 RTT를 ..
네트워크 지원 명시적 혼잡 알림과 지연 기반 혼잡 제어 TCP 송신자는 네트워크에서 명시적인 혼잡 표시를 수신하지 않는다. → 대신, 관찰된 패킷 손실을 통해 혼잡을 추론한다. 최근에는 네트워크가 TCP 송/수신자에게 명시적 혼잡 신호를 보낼 수 있도록 IP 및 TCP에 대한 확장이 제한, 구현 및 배포됨 또한 측정된 패킷 지연을 사용하여 혼잡을 추론하는 TCP 혼잡 제어 프로토콜의 일부 변형이 제안 명시적 혼잡 알림(Explicit Congestion Notification, ECN) 인터넷 내에서 수행되는 네트워크 지원 혼잡 제어의 한 형태 TCP와 IP가 모두 관련되어 있음 명시적 혼잡 알림(ECN)을 사용 IP 데이터그램 헤더의 서비스 유형 필드에 있는 2비트에서 사용한다. 혼잡 알림 비트의 사용..
전통적인 TCP의 혼잡 제어 종단 간의 혼잡 제어를 사용 TCP의 접근 방식 네트워크 혼잡에 따라 연결에 트래픽을 보내는 전송률을 각 송신자가 제한하도록 함 TCP 송신자가 자신과 목적지 간의 경로에서 혼잡이 없음을 감지 → 송신자는 송신율을 높임 송신자가 경로 사이에 혼잡을 감지 → 송신자는 송신율을 낮춤 TCP 송신자가 연결로 트래픽을 보내는 전송률을 제한하는 방법 송신 측에서 동작하는 TCP 혼잡 제어 메커니즘은 추가적인 변수인 혼잡 윈도를 추적 혼잡 윈도(congestion window, cwnd) TCP 송신자가 네트워크로 트래픽을 전송할 수 있는 속도에 제약을 가함 LastByteSent - LastByteAcked ≤ min(cwnd, rwnd) → 송신하는 쪽에서 확인응답이 안 된 데이터의..
혼잡 제어의 원인과 비용 네트워크 혼잡 원인을 처리하기 위한 방법 → 네트워크 혼잡을 일으키는 송신자들을 억제하는 메커니즘 필요 혼잡 제어가 발생하는 시나리오 초점 → 호스트들이 자신의 전송률을 증가시키고 네트워크 혼잡이 발생함에 따라 발생하는 일 시나리오 1 : 2개의 송신자와 무한 버퍼를 갖는 하나의 라우터 각각 출발지와 목적지 사이에 단일 홉을 공유하는 연결을 갖는다. 가정 호스트 A, B의 애플리케이션이 λ(in) 바이트/초의 평균 전송률로 연결상으로 데이터를 보냄 → 이러한 데이터는 각 데이터 단위가 소켓으로 한 번만 전송된다.(원본 데이터) 소켓을 통해 트랜스포트 계층 프로토콜로 데이터를 넘겨주는 것 하위의 트랜스포트 계층 프로토콜은 단순히 데이터를 캡슐화하고 전송하는 역할 → 오류 복구, 흐..