네트워크 지원 명시적 혼잡 알림과 지연 기반 혼잡 제어 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) 바이트/초의 평균 전송률로 연결상으로 데이터를 보냄 → 이러한 데이터는 각 데이터 단위가 소켓으로 한 번만 전송된다.(원본 데이터) 소켓을 통해 트랜스포트 계층 프로토콜로 데이터를 넘겨주는 것 하위의 트랜스포트 계층 프로토콜은 단순히 데이터를 캡슐화하고 전송하는 역할 → 오류 복구, 흐..
TCP 연결 관리 일반적인 네트워크 공격의 대부분은 TCP 연결 관리의 취약점을 악용 SYN 플러드(flood) 공격 등 TCP 연결 설정의 자세한 과정 가정 호스트(클라이언트)에서 운영되는 프로세스가 다른 호스트(서버)의 프로세스와 연결 설정을 원함 → 클라이언트 TCP에게 연결 설정을 원하다는 사실을 알린다. → 클라이언트 TCP는 TCP를 이용해 서버와 TCP 연결 설정을 시작함 연결 설정을 위해 두 호스트 사이에서 3개의 패킷이 송신됨 → 세 방향 핸드 셰이크 세 방향 핸드셰이크 1단계 클라이언트 측 TCP는 서버 TCP에게 SYN 세그먼트를 송신 SYN 세그먼트 애플리케이션 계층 데이터를 포함하지 않는다. SYN 비트라고 불리는 하나의 비트 플래그를 1로 설정 → SYN 세그먼트라고 불리는 이유..
흐름 제어 서비스(flow-control service) 애플리케이션에게 흐름 제어 서비스를 제공하는 이유 TCP 연결의 각 종단에서 호스트들은 연결에 대한 개별 수신 버퍼를 설정 → 송신자는 수신자의 버퍼를 오버플로시키는 것을 방지하기 위해 제공 수신자의 버퍼가 오버플로가 발생하는 과정 TCP 연결이 순서대로 올바르게 바이트를 수신할 때 TCP는 데이터를 수신 버퍼에 저장 해당 애플리케이션 프로세스는 버퍼에서 데이터를 읽지만, 수신한 시점에 읽을 필요 없음 → 오랜 시간 동안 데이터를 읽지 않을 수도 있음 송신자가 점점 더 많은 데이터를 전송함으로써 연결의 수신 버퍼에 오버플로 발생 애플리케이션이 데이터 읽는 속도가 느릴수록 발생 가능성 높음 송신자의 데이터 전송 속도가 빠를수록 발생 가능성 높음 흐름..
신뢰적인 데이터 전송 비신뢰적인 인터넷의 네트워크 계층(IP 서비스) 인터넷 프로토콜은 데이터그램 전달을 보장 X 데이터그램이 순서대로 전달되는 것도 보장 X 데이터그램에 포함된 데이터의 무결성(intergrity)을 보장 X 비트가 손상될 수도 있다. IP 서비스에서 데이터그램은 라우터의 버퍼를 오버플로 상태로 만들 수 있음 트랜스포트 계층의 세그먼트가 IP 데이터그램에 의해 네트워크 상에서 운반됨 → 트랜스포트 계층의 세그먼트도 이러한 문제를 겪을 수 있음 TCP의 신뢰적인 데이터 전송 서비스 TCP는 IP의 비신뢰적인 최선형 서비스에서 신뢰적인 데이터 전송 서비스를 제공 TCP 타이머 관리 절차에서는 단일 재전송 타이머 사용을 권장한다. 전송됐지만 아직 확인응답받지 못한 세그먼트와 개별적인 타이머가..
왕복 시간(RTT) 예측 TCP는 손실 세그먼트를 발견하기 위해 타임아웃/재전송 메커니즘을 사용 SampleRTT SamepleRTT : RTT 샘플 세그먼트 RTT(Rount-trip time) : 세그먼트가 송신된 시간부터 긍정 확인응답될 때까지의 시간의 길이 TCP는 한 번에 하나의 SampleRTT만 측정 → 모든 전송된 세그먼트에 대해 SampleRTT를 측정하지 않는다. → SampleRTT가 전송되었지만 현재 확인응답이 없는 세그먼트 중 하나에 대해서만 측정됨 이 측정시간은 왕복시간마다 SampleRTT의 새로운 값을 얻게 한다. TCP는 재전송한 세그먼트에 대한 SampleRTT는 계산하지 않고, 한 번 전송된 세그먼트에 대해서만 측정한다. SampleRTT의 값 해당 값은 라우터에서의 혼..
순서 번호와 확인 응답 번호 TCP 세그먼트 헤더에서 가장 중요한 필드 TCP의 신뢰적인 데이터 전송 서비스의 중대한 부분 순서 번호의 사용 일련의 전송된 세그먼트에 대해가 아닌, 전송된 바이트 스트림에 대한 관점을 반영 TCP는 데이터를 구조화하지 않고, 순서대로 정렬되어 있는 바이트 스트림으로 봄 세그먼트에 대한 순서 번호 → 세그먼트에 있는 첫 번째 바이트의 바이트 스트림 번호 실제 TCP 연결 양쪽 모두 시작 순서 번호를 임의로 선택 → 종료 이후에도 네트워크에 남아있던 세그먼트와의 오인될 확률을 최소화하기 위해 → 같은 호스트 간의 나중 연결을 위해서 순서 번호 사용 예시 가정 호스트 A 프로세스는 TCP 연결상에서 호스트 B의 프로세스로 데이터 스트림의 전송을 원함 호스트 A의 TCP는 데이터..