답변:
RFC 793 에 따르면 :
실제 시퀀스 번호 공간은 매우 크지 만 유한하다는 것을 기억해야합니다. 이 공간의 범위는 0에서 2 ** 32-1입니다.이 공간은 유한하기 때문에 시퀀스 번호를 다루는 모든 산술은 모듈로 2 ** 32로 수행되어야합니다. 이 부호없는 산술은 시퀀스 번호가 2 ** 32-1에서 0으로 다시 순환 할 때 시퀀스 번호의 관계를 유지합니다. 컴퓨터 모듈로 산술에는 미묘한 부분이 있으므로 이러한 값의 비교를 프로그래밍 할 때는 각별히주의해야합니다. "= <"기호는 "작거나 같음"을 의미합니다 (모듈로 2 ** 32).
예. 모든 세부 사항은 TCP 사양 RFC 793- 전송 제어 프로토콜 에서 찾을 수 있습니다 .
실제 시퀀스 번호 공간은 매우 크지 만 유한하다는 것을 기억해야합니다. 이 공간은 0 내지 2의 범위 32 - 1 사이입니다.
공간이 유한하기 때문에 시퀀스 번호를 다루는 모든 산술은 모듈로 2 32 로 수행되어야합니다 . 이 부호없는 산술은 시퀀스 번호가 2 32-1 에서 0으로 다시 순환 할 때 시퀀스 번호의 관계를 유지 합니다.
컴퓨터 모듈로 산술에는 미묘한 부분이 있으므로 이러한 값의 비교를 프로그래밍 할 때는 각별히주의해야합니다. "= <"기호는 "작거나 같음"을 의미합니다 (모듈로 2 32 ).
x
and y
유형 인 경우 mean uint32_t
을 정의 x<=y
하는 것이 실용적 (uint32_t)(y-x) < 0x80000000
입니다.
그렇습니다. 랩핑 된 시퀀스 번호로부터 보호하는 방법을 보여주는 Wikipedia 또는 RFC1323 에서 읽을 수 있습니다 .
인용하겠습니다 :
TCP 타임 스탬프는 랩핑 된 시퀀스 번호 또는 PAWS로 알려진 알고리즘에 사용됩니다 (자세한 내용은 RFC 1323 참조). 수신 창이 시퀀스 번호 랩 어라운드 경계를 교차 할 때 PAWS가 사용됩니다. 패킷이 재전송 될 가능성이있는 경우 "이 시퀀스 번호는 처음 4GB 또는 두 번째입니까?"라는 질문에 대답합니다. 그리고 타임 스탬프는 넥타이를 끊는 데 사용됩니다.
과:
PAWS는 앞에서 설명한 RTTM 메커니즘과 동일한 TCP 타임 스탬프 옵션을 사용하며, 수신 된 모든 TCP 세그먼트 (데이터 및 ACK 세그먼트 포함)에는 타임 스탬프 SEG.TSval이 시간에 따라 모노톤 감소하지 않는 타임 스탬프를 포함한다고 가정합니다. 기본 아이디어는 세그먼트가이 연결에서 최근에 수신 된 일부 타임 스탬프보다 적은 타임 스탬프 SEG.TSval로 수신 된 경우 이전 복제본으로 버려 질 수 있다는 것입니다.
PAWS와 RTTM 메커니즘에서 "타임 스탬프"는 모듈 식 32 비트 공간에서 부호없는 32 비트 정수입니다. 따라서 "보다 작음"은 TCP 시퀀스 번호와 동일한 방식으로 정의되며 동일한 구현 기술이 적용됩니다. s 및 t가 타임 스탬프 값이면 s <t if 0 <(t-s) <2 ** 31이며 부호없는 32 비트 산술로 계산됩니다.