::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2004-07-16 15:01:13, Hit : 9623, Vote : 1912
 http://www.howto.pe.kr
 [참고] TCP 에서 사용되는 효율향상 알고리즘

1.Sliding Window
  full-duplex로 통신하는 두 주체에는 각각 송/수신 버퍼가 존재한다. 수신측에 n개의 프레임을 수용할 수
  있는 버퍼가 존재할경우 송신측은 ACK를 기다리지 않고, n개의 프레임을 전송함으로서 불필요한 ACK
  대기시간을 줄일 수 있다. 참고로 송/수신측은 흐름제어를 위해 세 개의 포인트를 유지하는데 각각은
  송신하고 수신확인을 받은 프레임의 포인트, 송신하고 아직 수신확인을 받지않은 프레임의 포인트 그리고
  아직 송신하지 않은 프레임의 포인트가 있다.
  
2.Acknowledgement delay
  일명 'piggy-backed' 라 하여 돼지 꼬리처럼 여러개의 플래그가 하나의 세그먼트에 '편승'한다는 뜻이다.
  이것은 이미 4.2BSD에 포함되어있던 오래된 유용한 기법이다.  일반적으로 목적지 TCP는 세그먼트를 수신한
  이후 응답 세그먼트를 즉시 전송하는데 이 응답 세그먼트는 윈도우의 크기를 줄이고 수신한 데이타에 대한
  억놀리지먼트를 담당한다.  수신 프로세스에 의해 데이타가 프로세스로 복사된 후 시스템의 데이타 버퍼는
  재사용을 위해 반납되며 윈도우의 크기를 증가시키기 위한 세그먼트가 전송된다.  프로그램이 데이타를
  처리하고 나면 대부분 잠시후 응답(수신측에서 보낼 data)이 뒤따른다.  따라서 하나의 트랜잭션
  (transaction)은 세개의 세그먼트가 필요하다.
  TELNET에서 처럼 많은 경우에 있어 억놀리지먼트 세그먼트를 10분의 2초정도 지연하는 것이 유익하다는
  것이 알려져왔다.  이 짧은 시간후에 3개의 모든 정보(윈도우 크기, 억놀리지먼트, 응답)가 하나의
  세그먼트에 담겨져 전송될 수 있다.  높은 처리율을 요구하는 데이타 전송의 속도를 늦추지 않기 위해서
  윈도위의 크기가 최소 35%또는 2개의 최대 세그먼트 이상 변화하는 경우 이러한 지연은 생략할 수 있다.
  
3.Silly window syndrome avoidance
  어떤 상황에서는 전송되는 수신 윈도우의 항목이 너무 작아서 네트워크와 컴퓨터가 많은 수의 억놀리지먼트에
  의해 과부하 상태가 될 수 있다.  이것을 방지하기 위해 수신측은 윈도우의 크기가 one-full-sized segment로
  증가할 때나 최소한 세그먼트가 수신 버퍼의 1/2로 증가 할 때 전송해야 한다. 또한 송신측도 one-full-sized
  segment를 전송할 수 있을 때, 수신측에 의해 통보된 maximum sized window의 1/2 이상을 전송할 수 있을 때,
  모든 데이터를 전송할 수 있고 ACK를 기대하지 않을 때, Nagle algorithm이 enable 되어 있는 상태가 아닐 때
  데이터를 전송해야 한다.

4.Nagle algorithm or samll packet avoidance
  개발자인 John Nagle의 이름을 딴 이 알고리즘은 작은 크기의 TCP 세그먼트의 전송을 방지하도록 시도한다.  
  이경우, 응용 프로그램으로부터 작은 크기의 단위로 TCP에 데이타가 전달될 때 어떻게 그 형태대로 전송되는
  것을 막을 것인가가 문제이다.  첫 세그먼트는 즉시 전송되며 그 다음의 데이타는 최대 크기의 세그먼트를
  전송할 수 있게 되거나 첫 세그먼트에 대한 억놀리지먼트가 도착할 때 까지 버퍼에 저장되어진다.  이러한
  알고리즘은 응용 프로그램이 많은 수의 작은 크기의 메세지를 (예를 들어 X 윈도우 시스템) 응답의 수신과
  상관없이 전송하는 경우 문제가 발생한다.  이런 경우에는 연결 의존적인 방법에 의해 Nagle 알고리즘을
  비활성화시킬 수 있다. 응용 프로그램은 socket 인터페이스의 TCP-NODELAY 옵션을 이용하여 비활성화시킨다.
  (setsockopt() 소켓 함수의 TCP_NODELAY 옵션으로 설정)

5.Slow start with congestion avoidance
  때때로 Jacobson 알고리즘이라고도 불리는, 이와 연관된 알고리즘들은 최근에 들어서야 알려지게 되었고
  주로 낮은 속도의 네트워크와 게이트웨이를 가진 네트워크의 기능에 매우 증요한 역할을 한다.  
  최근 몇년 동안 부하가 증가함에 따라 인터넷은 점점 더 낮은 처리량율을 나타내게 되었고 다소 고장이
  증가하게 되었음을 발견하였다.  처리 과정들을 좀 더 자세히 살펴 보면, 네트워크상의 패킷의 반 이상이
  분실된 TCP 세그먼트에 대한 재전송 패킷임이 명확하게 들어났다.  네트워크 상의 경로(여기서 말하는 경로는
  송신자의 데이타 버퍼로부터, 가능한 게이트웨이들 그리고 목저지까지를 말함)는 단지 유한한 양의 데이타를
  전송할 수 있다.  게이트웨이나 호스트가 과부하상태일 때, 세그먼트를 넣어둘 충분한 버퍼 공간이 없을 수
  도 있다.  이런 경우, 게이트웨이에 의해 세그먼트는 무시되고, 패킷의 송신자는 RTO만큼 지연된 후 재전송을
  결정할 것이다.  그러면 결과적으로 전체 네트워크의 부하는 다시 불필요하게 증가하게되는 것이다.  
  slow-start 알고리즘은 주어진 시간동안 얼마나 많은 데이타가 분실없이 목적지까지 전송되는가를 측정하도록
  시도한다.  이것은 측정은 재전송 없이 동일한 데이타의 흐름을 가지는 시점까지 전송하는 데이타의 집합의
  크기를 점차 증가시킴으로써 이루어진다.  앞에서 전송될 데이타의 집합에 의해 크기가 측정되었듯이, 소위
  밀집 윈도우(congestion window)라 불리는 네트워크 경로상의 저장 용량도 측정대상이다.  Congestion window는
  항상 수신 윈도우보다 작거나 같다.  Congetstion window가 일단 일정한 값을 가지게되면 재전송의 발생으로
  네드워크의 부하가 증가되는 경우에만 변경된다.  이 경우 밀집 회피(congestion avoidance)알고리즘이 작업을
  하게된다.  동시에 congestion window의 상수배의 잘 고려된 크기만큼 할당되어질 수 있는 어떠한 자원도
  이용하려는 시도가 이루어진다.  이러한 조심스러운 작업 방식으로 처리율은 30%까지 증가될 수 있으며
  재전송되는 세그먼트는 50%이상 감소될 수 있다.
  이 두 알고리즘과 관련하여 retransmission timeout도 또한 향상되었다.  새로운 알고리즘은 round trip time에
  있어서 더 신속한 변화를 얻을 수 있다.  따라서 추가적인 패킷의 재전송을 막을 수 있다.

주) 윗글의 출처를 찾지 못하여 저자명을 게재하지 못하였습니다





  [네트워크/보안] [참고] TCP 에서 사용되는 효율향상 알고리즘  김영대 2004/07/16 9623 1912
7   [네트워크/보안] [참고] TCP 에서 사용되는 내부 타이머  김영대 2004/07/13 9482 1761
6   [네트워크/보안] [강좌] ucd-snmp 설치  김영대 2003/11/29 8168 1607
5   [네트워크/보안] [소스] 비동기 timeout read()/write()  김영대 2003/07/29 6838 1571
4   [네트워크/보안] [참고] 다중연결(multiple sockets) 서버의 구현방법 종류  김영대 2003/07/17 9865 2063
3   [네트워크/보안] [소스] 멀티캐스트를 이용한 채팅 프로그램  김영대 2003/03/19 10051 1903
2   [네트워크/보안] [소스] 간단한 채팅 클라이언트/서버  김영대 2003/03/13 10896 1707
1   [네트워크/보안] [소스] Multi Chatting Server  김영대 2003/03/12 7480 1599

1
 

Copyright 1999-2017 Zeroboard / skin by zero