Python 네트워크 프로그래밍 3 - IP 원본 라우팅 구현
?소스 사이트 라우팅에서는 IP 데이터 패킷이 통과하는 라우터를 미리 지정하고, 라우터를 통과할 때마다 데이터 패킷의 대상 주소(다음 홉)를 변경할 수 있습니다.
?IP 헤더를 사용합니다. 옵션 필드에는 라우팅 IP가 기록됩니다. 이 필드의 최대 길이는 40바이트이므로 최대 9개의 IP를 저장할 수 있습니다.
유형: 1바이트를 차지하며, 여기서 코드 값은 137로 설정됩니다.
길이: 1바이트, 전체 옵션의 길이를 기록합니다.
포인터: 포인터 항목은 1바이트를 차지하고 다음 처리 소스 주소를 가리키며 최소값은 4입니다.
?보내는 호스트는 애플리케이션으로부터 소스 사이트 라우팅 목록, 마지막 항목(데이터그램의 최종 대상 주소)을 수신하고 나머지는 전달된 모든 다음 홉이며 각 장치는 최종 목적지인가? 그렇지 않다면, 목록에서 다음 항목을 데이터 패킷의 다음 홉의 목적지 주소로 읽는다. 동시에, 라우터에서 데이터 패킷이 전송될 때마다 그 주소를 읽는다. 나가는 인터페이스는 기록되어 목록에 이전 홉 주소로 대체되며, 데이터 패킷은 반환될 때 원래 경로를 따라 반환됩니다.
아래 그림에 표시된 것처럼 호스트 S의 전송 애플리케이션은 소스 경로를 R1, R2 및 R3으로 지정하여 데이터그램을 D로 보냅니다. #은 포인터 필드를 나타내며 해당 값은 각각 4, 8, 12 및 16입니다(한 값은 32비트 IP를 나타냄). 길이 필드는 항상 1 5(3개의 IP 주소와 3바이트 헤더)입니다. IP 데이터그램의 대상 주소가 각 홉마다 변경되는 것을 볼 수 있습니다.