1.3.2 SYN 세그먼트
SYN은 두 호스트간에 연결할 때 시퀀스 넘버를 동기화 할 때 사용한다. 이 세그먼트를 포함한 패킷에는 연결에 필요한 협상정보(negotiable parameters)를 포함한다. 설정가능한 모든 파라미터는 상대방이 알아야 하므로 협상을 위하여 포함시킨다. SYN은 유저 디파인 데이터를 포함 할 수 없다. SYN 세그먼트는 연결을 자동으로 리셋시키는데 사용될 수 도 있다. ( 대충 연결되어 있는데
다시 싱크 날리면 연결정보를 재설정하는가 보다. )
아래 그림은 SYN 세그먼트이다.
0 7 8 15
+-+-+-+-+-+-+-+-+---------------+
| |A| | | | | | | |
|1|C|0|0|0|0|0|0| 28 |
| |K| | | | | | | |
+-+-+-+-+-+-+-+-+---------------+
+ Sequence # + Ack Number |
+---------------+---------------+
| Vers | Spare | Max # of Out |
| | | standing Segs |
+---------------+---------------+
| Option Flags | Spare |
+---------------+---------------+
| Maximum Segment Size |
+---------------+---------------+
| Retransmission Timeout Value |
+---------------+---------------+
| Cumulative Ack Timeout Value |
+---------------+---------------+
| Null Segment Timeout Value |
+---------------+---------------+
| Transfer State Timeout Value |
+---------------+---------------+
| Max Retrans | Max Cum Ack |
+---------------+---------------+
| Max Out of Seq| Max Auto Reset|
+---------------+---------------+
| Connection Identifier |
+ +
| (32 bits in length) |
+---------------+---------------+
| Checksum |
+---------------+---------------+
Figure 2, SYN segment
Sequence Number
이 연결을 위한 초기 시퀀스 번호를 포함하고 있다. (랜덤하게 생성한다.)
Acknowledgment Number
이 필드는 ACK가 설정되어 있을 경우만 유효하다. 이 케이스에서 , 필드는 상대측에서 보낸 SYN 세그먼트의 시퀀스 넘버가 포함된다.
Version
RUDP버전. 초기 버전은 1이다.
Maximum Number of Outstanding Segments
위 정보는 ACK 없이 보내져야한다. 이 정보는 받는 측에서 플로우 컨트롤에 사용된다. 이 값은 초기에 설정되면 연결이 유지되는 동안에는 변경될 수 없다. 이 정보는 협상대상이 될 수 없다.
Options Flag Field
이 플래그는 2바이트짜리다. 아래 보이는것 처럼 디자인되어있다.
BIT# Name Description
0 not used ---
1 CHK 데이타 첵섬 인에이블. 이게 1로 설정되어 있으면 헤더와
데이터를 포함한 첵섬을 포함한다. 협상가능한 파라미터
2 REUSE 이 비트는 오토리셑ㄷ되는 동안에 이전에 협상된 파라미터의
사용 여부를 결정하기 위하여 꼴 설정되어야 한다. 1로 설정
되면 이전 껄 쓰고 따라붙는 항목을 무시하고, 0이면 새걸쓴다
3-7 Spare
Maximum Segment Size
이 값은 상대측에서 SYN을 보낼 때 내가 받는 정보이다. 이 값은 서로 다른 값을 가질 수도 있다.
서로가 연결 협상을 하고 있는 동안 서로가 받게되며, 각각은 상대에게 이 값보다 크게 패킷을 전송하면 않된다. 이 숫자는 RUDP으 헤더의 크기도 포함한다. 이 정보는 협상대상이 될 수 없다.
Retransmission Timeout Value
패킷이 응답하지 않을 경우 재전송까지 기다리는 시간값. 밀리세컨단위. 레인지는 0 - 65536. 협상가능한 값으로 양쪽이 모두 같은 값에 동의해야한다.
Cumulative Ack Timeout Value
연속된 세그먼트중에 하나를 보내지 않았을 경우 다음 세그먼트를 보내기까지 사이 값에 해당하는 타임아웃 값. 밀리세컨단위. 레인지는 100-65536. 양쪽이 동의한 값에 협상이 가능하다. 추가적으로 이 값은 무조껀 Retransmission Timeout Value 보다는 작아야한다.
Null Segment Timeout Value
데이터 세그먼트를 보내지 않았을 경우, 널 세그먼트를 보내기 위한 타임아웃. 널 세그먼트는 킾 얼라이브와 같은 메카니즘이다. 밀리세컨단위. 레인지는 0-65536. 협상가능한 파라미터.
Transfer State Timeout Value
자동 리셋이 발생하기전의 연걸을 위하여 저장되어 있어야 하는 상태 정보의 타임아웃. 밀리세컨단위. 레인지는 0-65536. 협상가능한 파라미터. 만약 이 값이 0이면 상태정보의 저장 없이 바로 재연결이 이루어진다.
Max Retrans
재 전송이 연속적으로 이루어질 때 몇번을 할것인지를 알려주는 최대값. 레인지는 0-255. 이 값이 0이면 계속 재전송을 한다. 협상가능한 파라미터.
Max Cum Ack
The maximum number of acknowledgments that will be accumulated before sending an acknowledgment if another segment is not sent. 레인지는 0-255. 이 값이 0이면 데이터, 널, 리셋 세그먼트를 받았을 경우 acknowledgment segment를 바로 보낸다. 협상 가능한 파라미터.
Max Out of Seq
EACK를 보내기 전까지 누적된 시퀀스 넘버가 잘못된 패킷의 최대 값. 레인지는 0-255. 이 값이 0이면 EACK를 바로 보낸다. 협상가능한 파라미터.
Max Auto Reset
연결을 리셋하기 전까지 수행된 연속적인 오토 리셋의 최대값. 레인지는 0-255. 이 값이 0이면
토리셋은 수행되지 않고, 바로 리셋되어 버린다. 협상가능한 파라미터. 이 카운터는 연결이 새로 열리면 클리어된다.
Connection Identifier
새로운 연결이 설정되면 현재 연결사이에서 구분될 수 있는 유일값을 주고 받는다. 양쪽에서는 이값을 저장하고 있어야한다. 오토리셑이 수행되면 상대측에서는 저장해 두었던 오리지날 ID를 전송하여 오토리셋이 수행되는 동안 사용한다.
to bo continue...