TCP와 IP의 개요

  • 인터넷의 중심은 TCP(전송 제어 프로토콜)와 IP(인터넷 프로토콜)로 이루어진다.
  • TCP는 신뢰성을 보장하며, 데이터 전송 순서 확인, 데이터 재전송 등을 처리한다.
  • TCP는 HTTP 표준의 기본 전송 프로토콜로 활용된다.

 

TCP의 핵심 메커니즘

 

3-Way 핸드셰이크:

  • 연결 성립 전 클라이언트와 서버 간 초기화 절차.
  • 왕복 레이턴시가 연결 성능에 영향을 미친다

느린 시작(Slow-Start):

  • 새로운 연결에서 데이터 전송 속도를 점진적으로 증가시킨다.
  • 초기 처리량이 제한되며, 대규모 데이터를 처리하는 경우 더 큰 영향을 미친다.


TCP Fast Open
:

  • 구글이 개발한 최적화 기법으로 초기 핸드셰이크 레이턴시를 줄인다.
  • SYN 패킷에서 데이터 전송 가능
  • HTTP 트랜잭션 속도를 약 10~40%까지 개선.

 

혼잡 제어(Congestion Control) vs 흐름 제어(Flow Control):

항목 혼잡 제어 흐름 제어
정의 네트워크의 혼잡 상태를 완화하고 패킷 손실을 방지하기 위한 메커니즘. 수신자의 처리 용량을 초과하는 데이터 전송을 방지하기 위한 메커니즘.
목적 네트워크 전반의 안정성을 유지하고 혼잡으로 인한 성능 저하를 줄이는 것. 송신자가 수신자의 버퍼 용량을 초과하는 데이터를 보내지 않도록 보장.
초점 네트워크의 상태에 따라 전송 속도를 조절. 수신자의 상태에 따라 전송 속도를 조절.
작동 원리 - 패킷 손실을 혼잡의 신호로 판단. - 리시브 윈도(rwnd) 를 기준으로 송신량을 조절.
- 혼잡 윈도 크기(cwnd)를 조정하여 전송 속도 감소 및 회복. - 송신자와 수신자가 TCP 핸드셰이크 중에 초기 리시브 윈도(rwnd) 를 설정하고, 이후 ACK 패킷을 통해 업데이트.
주요 알고리즘 - 느린 시작(Slow-Start): 작은 윈도 크기로 시작해 점진적으로 증가. - 수신자가 버퍼가 포화 상태에 가까워지면 리시브 윈도(rwnd) 를 줄여 송신자에게 알림.
- 혼잡 회피(Congestion Avoidance): 패킷 손실 발생 시 혼잡 윈도를 줄여 네트워크 부담 감소. - 리시브 윈도(rwnd) 가 0이면 송신자는 수신 버퍼가 비워질 때까지 대기.
병목 원인 네트워크 경로 내의 혼잡(라우터, 스위치 등)에서 발생. 수신자의 버퍼 용량 부족으로 인해 발생.
주요 지표 - 혼잡 윈도(cwnd): 송신자가 전송할 수 있는 데이터의 양. - 리시브 윈도(rwnd): 수신자가 처리할 수 있는 데이터의 양.
주된 영향 - 네트워크 경로에서 데이터 처리량이 줄어들거나 지연이 발생. - 송신자가 데이터를 전송하지 못하거나 속도가 제한됨.
활용 사례 네트워크 전송 속도가 다양한 상황(혼잡, 정체 등)에서 효율적으로 조절되어야 하는 경우. 데이터 처리 용량이 한정된 IoT 기기, 모바일 기기 등에서 송신 속도를 조절해야 하는 경우.

 

혼잡 회피(Congestion Avoidance) 

  • 패킷 손실을 피드백으로 사용하여 혼잡 윈도를 패킷 손실이 발생할 때까지 증사 시킴
  • 알고리즘 종류
    • TCP Tahoe and Reno (original implementations) (AIMD)
    • TCP Vegas
    • TCP New Reno
    • TCP BIC
    • TCP CUBIC (default on Linux) or Compound TCP (default on Windows)

웹 성능 최적화 방법

  1. 서버 설정 최적화:
    • 최신 커널 업데이트 및 초기 혼잡 윈도 크기를 10으로 설정.
    • 느린 시작 재시작 기능 비활성화.
  2. 네트워크 환경 개선:
    • 서버를 사용자와 가까운 위치에 배치.
    • 기존 TCP 연결을 최대한 재사용.
  3. 데이터 전송 최적화:
    • 불필요한 데이터 전송 제거.
    • 전송 데이터를 압축하여 처리량 개선.

 

결론

 

TCP는 안정적이고 신뢰할 수 있는 프로토콜로 설계되었지만, 레이턴시가 주요 병목 요인이 될 수 있다. 이를 해결하기 위해 애플리케이션 설계와 서버 설정을 최적화하는 것이 중요하다.

 

참고 문헌

[1] 일리아 그리고릭, "구글 엔지니어에게 듣는 네트워킹과 웹 성능 최적화 기법", 정해권, 오현주 공역, 인사이트(insight)

[2] https://docs.google.com/presentation/d/1ZgF4MQ-7BBS92Zlz3mB52APRmyoSyaXprwltw5y3VJg/edit#slide=id.p9

 

7장 집단 지성

이 번 장에서는 6장과는 달리 벌과 같은 집단체에서 발휘 되는 지성에 대해서 설명한다.

 

특히, 벌의 분봉(Swarming)의 예에서 이를 설명한다.벌의 군집이 커지면, 여왕벌은 대략 벌집 반 정도의 벌들을 이끌고 벌집을 떠난다. 벌집을 떠난 벌들은자기 몫의꿀을 챙겨 근처에 안착한다. 하지만, 새로운 장소를 찾아 정착하는 벌의 의사 결정 체제가 우리가 보통 보는 애니메이션에서 처럼 여왕벌이 결정하는 것이 아니라, 정찰벌들이 가져오는 정보를 가지고 분산 결정하는 것을 살펴 볼 수가 있다. 정찰벌들이 집짓기 가능 장소를 찾으면, 돌아와서 이를 공유하고 정족수 20마리 정도가 찬성하는 것을감지하면 장소를 선정한다는 것이다. 그리고, 장소를 아는 벌들이 나머지 몇천마리를 이끌고 간다고 한다.

 

이런 분권화된 시스테에는장점이 있는반면 단점도 있다. 충족되어야할 정족수가 늘어남에 따라 정족수를 채우는데 필요한 시간도 같이 늘어 난다. 벌들의 생존이 위협받기 전에 벌떼는 며칠 이내로 새 집을 찾아야 한다. 너무 오래 기다리느니 좀 안 좋은 후보를 선택하는 것이 낫다. 이렇듯, 벌떼의 분권화된의사 결정 시스템은 위험 회피형(Risk aversion)이다.

 

이러한 분권화된 의사 결정 시스템은 창발(Emergence)로 볼 수있다. 하지만, 찰발현상에 관한 완전한 이론은 아직 없다. 단지, 환원주의를 통해서 설명이 되지 않는 복잡계의 주요한 특징이다. 즉, 벌의 사례에서도 볼 수 있듯이 단순한 기본 법칙에 의해 지배되는 상호작용 시스템의 전체적인 행동양식도 여전히 시스템을 지배하는 근본 법칙을 따르지만 동시에 완전히 분리된 자발적인새로운 행동을 초래할 수 있다는 것이다.

8장 네트워크

모든 복잡계의 중심에는 상호작용하는 행위자들이 있다. 누가 누구와 상호작용하는지를추적하면, 행위자간에 연결된 네트워크를 알아낼 수 있다. 이 장에서는 간단하지만, 몇가지 중요한 복잡계 네트워크 개념을 설명한다.

 

우선 간단한 예로 가옥으로 둘러싸인 호수의 예로서 이 복잡계 네트워크를 설명한다. 서로의 연결이 이웃한 것만 있는 경우로 동작이 매우 단순하다. 여기서 잔디를 깍는 행위자와 그렇지 않은 행위자가 존재하고 옆의 2개의 이웃에 행동에 따라 행동을 정한다고 가정하자. 이렇게 하면, 초기 설정에 따라 잔디를 깍는 무리와 깍지 않는 무리가 경계를 이루며 안정화 된다. 


하지만, 호수 마을 거주자 몇 명을 무작위로 선택된 사람과 연결해서 호수 마을을 '작은 세상' 네트워크 (Small World Network)로 만들 수 있다. 이렇게 되면 다른 집단의 분리가 심화 된다. 이 작은 세상의 연결은 국도와 고속도로로 만들어진 네트워크와 비슷하다. 우리가 어떤 곳을 빨리가고 싶다면, 몇개의 국도를 타고 고속도로 진입하여 도착지와 가까운 출구에서 나와서 몇몇 국도를 거치면 도착하게 되는 것과 같다.

 

호수 마을에서 알수 있는 것은, 네트워크를 바꾸면, 시스템에서 매우 다른 행동을이끌어 낼 수 있다. 책에서는 다양한 네트워크가 발달하면서 하이퍼 네트워크로 연결된 세상이 되어 더 복잡한 사회역학적인 측면이 드러나고 있다는 것을 언급하고 있다.

 

참고 문헌

[1] 전체를 보는 방법 박테리아의 행동부터 경제현상까지 복잡계를 지배하는 핵심 원리 10가지, 존 밀러 저/정형채, 최화정 역, 에이도스, 2017년 11월 22일 (A Crude Look at the Whole)

 

+ Recent posts