📄 rfc1791.txt
字号:
RFC 1791 TCP And UDP Over IPX April 1995Appendix A.1 - TCP/IPX Packet Format A TCP/IPX Packet has following format: +-------+-------+-------+-------+ | IPX Checksum | IPX Pkt Len | +-------+-------+-------+-------+ | Zero |IPX PT | IPX Dest - +-------+-------+-------+-------+ Network | IPX Dest - +-------+-------+-------+-------+ Node | +-------+-------+-------+-------+ | IPX Dest Skt | IPX Src - +-------+-------+-------+-------+ Network | IPX Src - +-------+-------+-------+-------+ Node | +-------+-------+-------+-------+ | IPX Src Skt | TCP Header and +---------------+-------+-------+ Data... +----... IPX PT field contains the IPX packet type. It is set to 4 for TCP/IPX packet. Both Src Skt and Dest Skt field in IPX header must be set to 0x9091 for TCP/IPX packet. If the Src Skt is not set to 0x9091, the receiving TCP/IPX should discard the packet silently. (And increment tcpInErrs mib object if it is instrumented.)Sung [Page 7]RFC 1791 TCP And UDP Over IPX April 1995Appendix A.2 - TCP/IPX Pseudo Header Format TCP/IPX uses following pseudo header to compute checksum: +-------+-------+-------+-------+ | IPX Src Network | +-------+-------+-------+-------+ | IPX Src Node +-------+-------+-------+-------+ | IPX Src Skt | +-------+-------+-------+-------+ | IPX Dest Network | +-------+-------+-------+-------+ | IPX Dest Node +-------+-------+-------+-------+ | IPX Dest Skt | +-------+-------+-------+-------+ | Zero | TCP Length | +---------------+---------------+ IPX Src/Dest Network/Node/Skt are the fields from the IPX header. TCP Length is the IPX Pkt Len minus the IPX header length in octets. Note that IPX Src Skt is expected to be 0x9091 for TCP. As such, one may insert 0x9091 in IPX Src Skt field rather than getting the value from IPX header. Then the implementation will not have to check the IPX Src Skt field in the fast path since the checksum failure will also cover the unexpected value. In that case, the implementation may want to examine if the checksum failure was due to the IPX Src Skt value other than 0x9091, so that it can increment appropriate counter, if proprietary counters other than tcpInErrs are used.Sung [Page 8]RFC 1791 TCP And UDP Over IPX April 1995Appendix B.1 - UDP/IPX Packet Format without Fragmentation IPXF transmits UDP packets over IPX in this format if the UDP datagram does not have to be fragmented: +-------+-------+-------+-------+ | IPX Checksum | IPX Pkt Len | +-------+-------+-------+-------+ | Zero |IPX PT | IPX Dest - +-------+-------+-------+-------+ Network | IPX Dest - +-------+-------+-------+-------+ Node | +-------+-------+-------+-------+ | IPX Dest Skt | IPX Src - +-------+-------+-------+-------+ Network | IPX Src - +-------+-------+-------+-------+ Node | +-------+-------+-------+-------+ | IPX Src Skt | UDP Header and +---------------+-------+-------+ Data... +----... The IPX PT field contains IPX packet type. It should be set to 4 for all UDP/IPX packets. Both IPX Src Skt and IPX Dest Skt field must be set 0x9092. The receiving UDP/IPX should discard the packet silently if the IPX Src Skt field is not set to 0x9092. (And increment udpInErrors mib object if it is instrumented.)Sung [Page 9]RFC 1791 TCP And UDP Over IPX April 1995Appendix B.2 - UDP/IPX Packet Format With Fragmentation IPXF transmits fragmented datagrams over IPX in the following format: +-------+-------+-------+-------+ | IPX Checksum | IPX Pkt Len | +-------+-------+-------+-------+ | Zero |IPX PT | IPX Dest - +-------+-------+-------+-------+ Network | IPX Dest - +-------+-------+-------+-------+ Node | +-------+-------+-------+-------+ IPX Dest Skt | IPX Src - +-------+-------+-------+-------+ Network | IPX Src - +-------+-------+-------+-------+ Node | +-------+-------+-------+-------+ | IPX Src Skt | IPXF Offset | +---------------+-------+-------+ | IPXF Frag Identification | +-------------------------------+ | IPXF Dest Skt | IPXF DG Len | +-------------------------------+ | UDP Header and Data ... +--------... The IPX PT field contains IPX packet type. It is set to the value set by the IPXF user in the IPX packet passed to IPXF. (UDP sets it to 4.) IPX Dest Skt field must be set to 0x9093 for all IPXF Packets. The value for IPX Src Skt field is variable, and must be set to the actual IPX socket number of the IPXF user. (For example, it must be set to 0x9092 for UDP.) IPXF Offset field indicates where the fragment belongs in the datagram. The offset is measured is octet from the begining of the UDP datagram. The first fragment has the offset of 0. IPXF Frag Identification field is assigned a same value by the sender for all fragements belonging to the same datagram. The receiver then uses this field to reassemble all fragments with same ID into a datagram.Sung [Page 10]RFC 1791 TCP And UDP Over IPX April 1995 IPXF Dest Skt field contains the IPX socket number of the actual recipient that the reassembled datagram will be delivered to. (It is 0x9092 for UDP.) All fragments of a datagram must have the same value in this field. IPXF DG Len field is the total length of the IPX datagram before the fragmentation. The sender should set it to the value of IPX Pkt Len of the original IPX datagram. All fragments of a IPX datagram must have the same value in this field.Sung [Page 11]RFC 1791 TCP And UDP Over IPX April 1995Appendix B.3 - UDP/IPX Pseudo Header Format UDP/IPX uses following pseudo header for computing the checksum: +-------+-------+-------+-------+ | IPX Src Network | +-------+-------+-------+-------+ | IPX Src Node +-------+-------+-------+-------+ | IPX Src Skt | +-------+-------+-------+-------+ | IPX Dest Network | +-------+-------+-------+-------+ | IPX Dest Node +-------+-------+-------+-------+ | IPX Dest Skt | +-------+-------+-------+-------+ | Zero | UDP Length | +---------------+---------------+ IPX Src/Dest Network/Node/Skt fields are from the IPX packet. Note that, if UDP is running over IPXF, the IPX Dest Skt field in IPX packet header is copied over from IPXF header before the reassembled IPX packet is delivered to UDP, Hence, the pseudo header must be derived from the reassembled IPX header. UDP Length is from UDP header. Note that IPX Src Skt is expected to be 0x9092 for UDP. As such, one may insert 0x9092 in IPX Src Skt field rather than getting the value from IPX header. Then the implementation will not have to check the IPX Src Skt field in the fast path since the checksum failure will also cover the unexpected value. In that case, the implementation may want to examine if the checksum failure was due to the IPX Src Skt value other than 0x9092, so that it can increment appropriate counter, if proprietary counters other than udpInDatagramErr are DatagrSung [Page 12]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -