CS 스터디 - TCP

이강민·2024년 8월 20일
0

커널360

목록 보기
30/56
post-thumbnail

TCP

  • TCP는 연결형 프로토콜
    • 상태를 인식하는 stateful 프로토콜

연결상태 목록

상태목록

  • CLOSED
    • 아무런 연결이 없는상태
  • LISTEN
    • syn segment를 기다리는 상태
  • SYN-SENT
    • syn+ack를 기다리는 상태
  • SYN-RECEIVED
    • syn+ack를 보내고 ACK 세그먼트를 기다리는 상태
  • ESTABLISHED
    • 연결이 되어 있는 상태
  • FIN-WAIT1
    • fin세그먼트를 보낸 상태
  • CLOSE-WAIT
    • fin세그먼트를 받고 ack세그먼트를 보낸 상태
  • FIN-WAIT2
    • ACK 세그먼트를 받고 fin 세그먼트를 받기 직전의 상태
  • TIME-WAIT
    • fin세그먼트를 받고 ack 세그먼트를 보낸 상태
    • 일정 시간 동안 대기 이후 CLOSED
  • CLOSING
    • 상대 fin 세그먼트에 ack 세그먼트를 보냈지만 자신의 fin세그먼트에 대한 ack 세그먼트를 받지 못한 상태
    • 동시에 연결을 종료하려 할때
  • LAST-ACK
    • 마지막 fin 세그먼트를 보내고 ack 세그먼트를 기다리는 상태

TCP 상태

3way handshake

연결 끊기

TCP 재전송 기능

  • 확실히 전송했다는 보장이 있으려면
    • 재전송 기반의 오류 제어 : 잘못 전송된 경우 재전송
    • 흐름 제어 : 받을 수 있는 만큼만 받기
    • 혼잡 제어 : 보낼 수 있는 만큼만 보내기

어떻게 잘못 전송되었다는 걸 알까?

  • 중복된 ACK 세그먼트를 수신 했을 때
  • 타임아웃이 발생할때

중복된 ACK 세그먼트를 수신


호스트 B는 여전히 n+1 세그먼트를 요청함
즉 호스트 A는 중복된 세그먼트를 수신 받음

타임아웃

잘못된 전송을 바로잡는 방법

Automatic Repeat Request을 이용

  • Stop-and-Wait ARQ

    • 가장 단순한 형태
    • 제대로 보냈음을 확인하기 전까지 보내지 않음
    • 네트워크 이용 효율이 낮아짐
  • 파이프라이닝

    • 여러 세그먼트 한번에 전송
    • Go-Back-N ARQ
    • Selective Repeat ARQ
  • Go-Back-N ARQ

    • 올바른 세그먼트에 대해 확인 응답을 보냄
    • 올바르지 않은 세그먼트가 수신되면 그 뒤의 모든 세그먼트를 폐기함
    • 이후 올바르지 않은 세그먼트부터 다시 재전송
    • 누적 확인 응답 방식(Cumulative ARQ)
  • Selective Repeat ARQ

  • 각 세그먼트에 대해 개별적으로 확인 응답을 보냄

  • 각각의 세그먼트에 대해 확인 응답을 보내주기 때문에 보내는 쪽에서 타임아웃이 발생한 세그먼트를 확인하고 보내준다.

  • 빠른 재전송

    • 빠른 재전송은 타임아웃이 되지 않아도 중복 세그먼트가 수신되면 바로 재전송

TCP의 혼잡제어와 흐름제어

  • 흐름 제어 : 받을 수 있는 만큼만 받기
  • 혼잡 제어 : 보낼 수 있는 만큼만 보내기

송신 버퍼와 수신버퍼

  • 송신버퍼

    • 애플리케이션 계층에서 전송할 데이터 임시 저장
  • 수신 버퍼

    • 네트워크 계층에서 수신할 데이터 임시 저장
  • 버퍼 오버플로우

    • 송신 호스트가 수신 호스트가 처리할 수 있는 수신 버퍼보다 더 많은 데이터를 전송하면?
      • 일부 데이터가 처리되지 않을 수 있음

흐름제어

  • 송신 호스트가 수신 호스트 처리 속도를 고려하며 송수신 속도를 균일하게 맞추는 것
    • 오늘날 TCP 에서의 흐름 제어는 슬라이딩 윈도우방식을 이용함
  • TCP 헤더의 윈도우에 받을 수 있는 크기를 보낸다.
  • 윈도우 : 파이프라이닝 가능한 순서범위 범위
  • 윈도우 크기 : 확인 응답 받지 않고도 한번에 보낼 수 있는 최대 양
  • 흐름제어의 주체는 수신지가 되어야 한다.

혼잡제어

  • 혼잡

    • 많은 트래픽으로 인해 패킷 처리 속도가 느려지거나 유실될 우려가 있는 상황
  • 혼잡이 생기지 않을 정도로만 조금씩 전송하는 방법

  • 혼잡 윈도우

    • 혼잡 없이 전송할 수 있을 법한 양
  • 송신 호스트

    최소값(수신윈도우, 혼잡윈도우) >= 마지막 송신한 바이트 - 마지막으로 수신 확인된 바이트

  • 선형적으로 증가하고 지수적으로 감소

혼잡제어 알고리즘



  • 혼잡회피 중 세번의 중복 세그먼트가 발생했을 경우 빠른 회복 수행

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보