1.3.3  ACK Segment
ACK 세그먼트는 연속적인 세그먼트 사이에 사용된다. 이는 RUDP 헤더에 다음 시퀀스 번호와 액크넘버를 포함하고 있다. ACK 세그먼트는 세그먼트를 구분할 때 보내어지나, 전송할 때 데이터를 포함하여 전송이 가능하다. DATA세그먼트와 NULL 세그먼트는 항상 ACK 필드를 포함해야 하며
Acknowledgment Number 를 채워야한다. 독립적인 ACK 세그먼트는 6바이트로 구성되어있다.

   0 1 2 3 4 5 6 7 8              15
   +-+-+-+-+-+-+-+-+---------------+
   |0|1|0|0|0|0|0|0|       6       |
   +-+-+-+-+-+-+-+-+---------------+
   | Sequence #    |   Ack Number  |
   +---------------+---------------+
   |           Checksum            |
   +---------------+---------------+

    Figure 3, Stand-alone ACK segment

1.3.4 EACK segment
EACK 세그먼트는 out of sequence(시퀀스 번호가 잘못됨)를 받았을 경우 보내는 acknowledge segments 이다. 이 세그먼트는 잘못된 시퀀스 번호를 포함한게 몇개였는지 정보가 포함되어있다.
항상 ACK 세그먼트아 함께 보내지며, 마지막에 제대로 전송된 시퀀스 번호를 넣어서 보낸다. 헤더의 길이는 확정되어 있지 않다(variable). 최소 길이는 7바이트이며 최대 길이는 maximum receive queue length 값에 의존한다.

    0 1 2 3 4 5 6 7 8            15
   +-+-+-+-+-+-+-+-+---------------+
   |0|1|1|0|0|0|0|0|     N + 6     |
   +-+-+-+-+-+-+-+-+---------------+
   | Sequence #    |   Ack Number  |
   +---------------+---------------+
   |1st out of seq |2nd out of seq |
   |  ack number   |   ack number  |
   +---------------+---------------+
   |  . . .        |Nth out of seq |
   |               |   ack number  |
   +---------------+---------------+
   |            Checksum           |
   +---------------+---------------+

       Figure 4, EACK segment


1.3.5 RST segment
RST 세그먼트는 연결을 닫거나 리셋활 때 사용된다. RST 세그먼트를 받았을 경우, 전송자는 반드시 새로운 패킷을 보내는 것을 중지해야한다. 그러나 이미 보내어지고 있던 패킷은 모두 보내어야한다. RST 세그먼트는 구분자로써 사용되너 어떠한 데이터도 포함해서는 않된다.

   0 1 2 3 4 5 6 7 8              15
   +-+-+-+-+-+-+-+-+---------------+
   | |A| | | | | | |               |
   |0|C|0|1|0|0|0|0|        6      |
   | |K| | | | | | |               |
   +-+-+-+-+-+-+-+-+---------------+
   | Sequence #    |   Ack Number  |
   +---------------+---------------+
   |         Header Checksum       |
   +---------------+---------------+

          Figure 5, RST segment


1.3.6 NUL segment
NUL 세그먼트는 상대측이 아직도 살아있나를 결정하는데 사용된다(일종의 Keep-Alive). 그래서 일걸 keep-alive 라고 부르기도 한다. NUL 세그먼트를 전송받으면, 그 즉시 ACK 세그먼트로 응답해야 하며, 다음 시퀀스 번호를 넣어서 연결이 유효함을 알려주어야한다. 그리고 받은 NUL 세그먼트는 그냥 버린다. NUL 은 반드시 ACK를 포함해야하며 유저데이터는 절대 포함되어서는 않된다.

    0 1 2 3 4 5 6 7 8             15
   +-+-+-+-+-+-+-+-+---------------+
   |0|1|0|0|1|0|0|0|       6       |
   +-+-+-+-+-+-+-+-+---------------+
   | Sequence #    |  Ack Number   |
   +---------------+---------------+
   |            Checksum           |
   +---------------+---------------+

        Figure 6, NUL segment


1.3.7 TCS Segment
TCS 세그먼트는 현재 연결의 상태정보를 전달한다.

    0 1 2 3 4 5 6 7 8             15
   +-+-+-+-+-+-+-+-+---------------+
   | |A| | | | | | |               |
   |0|C|0|0|0|0|1|0|       12      |
   | |K| | | | | | |               |
   +-+-+-+-+-+-+-+-+---------------+
   | Sequence #    |   Ack Number  |
   +---------------+---------------+
   | Seq Adj Factor|      Spare    |
   +---------------+---------------+
   |      Connection Identifier    |
   +                               +          
   |       (32 bits in length)     |
   +---------------+---------------+
   |            Checksum           |
   +---------------+---------------+

          Figure 7, TCS segment


Sequence Number
현재 연결에 선택되었던 초기의 시퀀스 번호...

Acknowledgment Number
마지막 시퀀스 넘버에 대응하는 ack number를 만들어 넣는다.

Seq Adj Factor
This field is used during transfer of state to adjust sequence numbers
between the old and current connections.

Connection Identifier
새로 열린 RUDP 연결에서 전 구간에 걸쳐 유일하게 연결을 구분할 수 있도록 해주는 ID값이다.
여러개의 연결이 있을 경우 각각의 연결을 구분해주는데 사용된다.

1.3.8 Detailed Design
A separate internet draft is being prepared which details in connections
state transitions in Specification and Description Language (SDL) format. 
It also contains more details on the internal design of RUDP.

to bo continue...




+ Recent posts