본문 바로가기
Computer Science/컴퓨터 네트워크

컴퓨터 네트워크: Options

by 청량리 물냉면 2021. 11. 27.
반응형

TCP: Transmission Control Protocol

11. Options

TCP 헤더에는 최대 40바이트의 optional information이 포함될 수 있다(옵션을 안 쓴 기본 헤더는 20바이트. 따라서 헤더는 20 - 60바이트). 옵션은 대상에 추가 정보를 전달하거나 다른 옵션을 정렬한다. 우리는 크기에 따라 single-byte optionsmultiple-byte options 두 가지 범주의 옵션을 정의할 수 있다.

 

Options

single-byte options ☞ 아무 일도 안 함

  • end of option list
  • no operation 

multiple-byte options

  • maximum segment size
  • window scale factor
  • timestamp
  • SACK-permitted
  • SACK

 

End-of-option option

TCP 헤더는 무조건 한 줄에 32bits(4byte)을 맞춰야 하므로 3-byte option 뒤 빈 공간 1byte는 EOP로 채워준다. 

따라서 EOP: 빈칸 채우기(padding) 용

 

*EOP는 오직 한번만 사용된다. 

 

 

No-operation option

NOP: 빈 칸 채우기(padding)

1byte나 2byte 등 원하는 byte만큼 띄우고 옵션을 시작할 수 있다. 

보통 뒤에는 EOP, 앞에는 NOP를 사용한다. 

 

*NOP는 여러 번 쓰일 수 있다. 

 

 

Maximum-segment-size option

    • MSS: Maximum-segment-size
      • MSS를 사용했던 부분↓
      • cwnd = 1MSS
      • Nagle 알고리즘: 소량의 데이터 전송 시 처음 n byte는 그냥 보내고, 그 뒤로 n byte씩 데이터가 도착하면 그 데이터는 보내지 않고 우선 대기시킨다. 데이터가 MSS만큼 쌓이면, 즉시 해당 패킷을 전송한다. 가장 처음 보냈던 1byte에 대한 ACK이 도착할 때까지 데이터가 MSS만큼 쌓이지 않는다면, 데이터가 꽉 차지 않아도 해당 패킷을 전송한다.
  • 한 segment의 size는 디폴트(560바이트)로 정해져 있다.
  • 그러나 이 옵션을 사용하면 sender와 receiver가 setup과정에서 협의를 통해 segment size를 정할 수 있다

※ sender와 receiver가 이미 연결되었다면 도중에는 segment size를 변경할 수 없다

 

 

Window-scale-factor option

RTT 1초일 경우 의 maximum Troughput은?

  • maximum: 보낼 수 있는 최대치를 보내는 것
  • window size는 rwnd와 cwnd의 최솟값이다.
  • 혼잡이 많을 경우 cwnd는 rwnd보다 작다. / 혼잡이 없다는 가정 하에, cwnd는 계속 늘어난다. 만약 rwnd < cwnd라면 윈도우 사이즈는 rwnd의 영향을 받는다.

TCP 헤더

  • TCP 헤더는 한줄에 32bits (4byte)의 정보를 저장한다. 
  • rwnd를 저장하는 데는 이 중 16bits가 사용된다. 해당 16비트를 전부 1로 채운다면 rwnd의 maximum은 2^16이다. 

ex. RTT = 100ms일 경우 Throughput
64KB / 0.1s = 5Mbps

ex. RTT = 10ms일 경우 Throughput

64KB / 0.01s = 50Mbps→ 이 이상 못 보냄 (TCP를 그냥 쓰면 집에 기가bps 라인을 깔아도 sender는 50Mbps밖에 못 보내기 때문에 성능이 안 나옴)


처음 디자인할 때 scale factor 옵션으로 window size 값을 키울 수 있다.

  • scale factor는 window size의 크기를 2의 n제곱만큼 늘리는 옵션이다.
  • 만약 window size를 8배 늘리고 싶다면, sender는 setup과정에서 scale factor의 값을 3으로 작성하여 상대방에게 보낸다. receiver는 scale factor의 3을 2^3으로 이해하고 sender의 제안을 수락하거나 거절한다.

※ MSS와 마찬가지로, sender와 receiver가 이미 연결되었다면 도중에는 scale factor를 변경할 수 없다. 

 

 

Timestamp option

 

Timestamp value: 출발시간, 도착시간 기록(RTT 측정 시 사용)

 

 

Example 15.5

RTT 계산 예시

* 타임스탬프 옵션은 PAWS(Protection Against Wrapped Sequence number)에도 사용된다.

  • sequence number로는 32bits가 사용된다. 따라서 패킷은 2^32(대략 40억)개의 번호를 sequence number로 가질 수 있다. 

  • 파일 용량이 큰 경우 주어진 seq 번호를 다 쓰고 기존에 사용했던 번호를 재사용할 수도 있다. 동일한 패킷 번호가 들어오면 혼동할 수 있기 때문에 출발시간을 함께 써 놓으면 receiver는 두 패킷을 수월하게 구별할 수 있다. 

 

SACK

accumlative 방식의 단점

한 패킷이 없어지면 뒤의 패킷도 한꺼번에 모두 재전송(하나하나씩 대조해가며 상대가 패킷을 받았는지 안 받았는지 확인하기에는 시간이 너무 오래 걸림)

이러한 단점을 보완하기 위해 SACK 옵션을 사용한다. (setup과정에서 상대방과 합의를 해야함)

 

Example 15.6

  • 2001:3001을 받지 못한 상황.
  • 기존의 sender는 상대가 받지 못한 2001번 패킷부터 그 뒤 패킷을 모두 재전송한다. (낭비)
  • 이를 보완하기 위해 SACK 옵션을 사용하면, 상대방은 제대로 받은 패킷 번호를 block 단위로 저장해 둔다. (해당 블록의 시작주소와 끝주소+1을 세트로 저장)
  • sender는 receiver가 제대로 받은 패킷을 제외한 나머지 block만 재전송해주면 된다. 

 

Example 15.7

중복된 패킷을 받았을 때 첫번째 block에 중복된 주소를 써준다. 

 

 

 

 

 


자료 출처

 

TCP/IP Protocol Suite 4th Edition Slide
(Behrouz A. Forouzan 저, McGraw-Hill, 2010)

반응형