Xem định nghĩa của TCP header trong /netinet/tcp.h:Tại sao trường 8 bit lại có độ bền?
struct tcphdr
{
u_int16_t th_sport; /* source port */
u_int16_t th_dport; /* destination port */
tcp_seq th_seq; /* sequence number */
tcp_seq th_ack; /* acknowledgement number */
# if __BYTE_ORDER == __LITTLE_ENDIAN
u_int8_t th_x2:4; /* (unused) */
u_int8_t th_off:4; /* data offset */
# endif
# if __BYTE_ORDER == __BIG_ENDIAN
u_int8_t th_off:4; /* data offset */
u_int8_t th_x2:4; /* (unused) */
# endif
u_int8_t th_flags;
# define TH_FIN 0x01
# define TH_SYN 0x02
# define TH_RST 0x04
# define TH_PUSH 0x08
# define TH_ACK 0x10
# define TH_URG 0x20
u_int16_t th_win; /* window */
u_int16_t th_sum; /* checksum */
u_int16_t th_urp; /* urgent pointer */
};
Tại sao lĩnh vực 8-bit có một thứ tự khác nhau trong endianness? Tôi nghĩ rằng chỉ có các trường 16 bit và 32 bit quan trọng với thứ tự byte, và bạn có thể chuyển đổi giữa các endian với ntohs và ntohl, tương ứng. Chức năng này sẽ dùng để xử lý những thứ 8 bit? Nếu không có, có vẻ như là một TCP sử dụng tiêu đề này trên một máy cuối nhỏ sẽ không làm việc với một TCP trên một máy cuối lớn.
Thật lạ, bạn đã tìm thấy tệp tiêu đề này trên hệ thống nào? – fbonnet
debian linux. phiên bản này được bao gồm nếu __USE_BSD là #defined. – Claudiu