[Transport] TCP (2/3)

조아리 ㅣ 2024. 6. 24. 10:00

반응형

연결 : 3-Way Handshake

  • 연결지향 서비스
  • TCP Connection

 

 

연결 종료

 

  • 비정상적인 상황
    1. 연결 종료 신청한 측(Active close)에서 ACK(L+1) 메시지가 중간에 사라질 때
      • 상대방(Passive close)은 FIN(L)을 재전송하게 되며 이때, Time-Wait상태에 머물지 않았다면 FIN(L)에 대한 ACK(L+1)을 보낼 수가 없다.
        즉, 종료를 모두 완료하지 못하게 됨
    2. 연결 종료 직후에 같은 IP 주소와 Port번호로 새로운 연결 요청이 오는 경우
      • 이를 허용하면(=Port 번호를 즉시 재사용하게 하면)과거의 연결에서 전송되었던 세그먼트가 어떤 이유로 늦게 도착하는 것을 잘못 수신할 수가 있기 때문
        = 고의적인 해킹 공격 방지
    3. 클라이언트-서버 통신 모델에서 서비스 사용이 종료될 때 가능하면 클라이언트가 이 Active close를 신청하는 것이 바람직함
      • 서버 측은 Time-Wait 상태에 들어가지 않고 바로 같은 포트 번호를 사용해서 다른 서비스의 요청에 응답할 수 있기 때문에

 

Slow-Start

3-Way Handshake가 성공한 후에 양측 간에 연결이 된 상태에서 발생합니다.

 

  • Slow-Start
initialize: Cwnd = 1
for (each segment ACKed)
	Cwnd++;
until (loss event OR Cwnd > threshold)

 

  • RTT당 윈도우 크기가 기하급수적인 증가(not so slow)
    └ 네트워크 크기가 어떻게 되는지 살펴본 뒤에 그에 맞춰서 전송 속도를 최적화하여 데이터 전송 효율을 높이게 되는 것입니다.
  • Threshold 이후에는 Cwnd가 '1'씩 증가

 

 

 

 

Congestion Acoidance (혼잡 회피)

 

마지막 부분(TCP Slow Start , Congestion Avoidance)은 이해하기 어려울 것 같아 제 나름대로의 설명을 추가합니다.

TCP Slow Start는 네트워크 용량을 찾아낸 뒤, 천천히 Cwnd를 올리며 변동된 네트워크 용량(네트워크의 용량은 동적입니다)을 다시 찾아내고 또 Cwnd를 줄이고를 반복하는 것입니다.

이를 통해 네트워크 상태에 적응하고 최적의 전송 속도를 유지하려고 합니다.

반응형