除了我自己能提供的以外,请其他人对此提供解释吗?
offset = (tcp_hdr_len << 4)
我的理解不足:好的,是的,我们知道的tcp标头长度以4字节(32位)的倍数表示,可以在5到15之间,因此,如果是5,我们在说的是160位(20个字节)。我是否应该理解,由于此处的长度5以十六进制表示,即20字节,因此将以二进制表示为 0010 0000左操作数的值向左移动了右操作数指定的位数,因此,如果我们指定4(为什么选择4?),它将变为:
0000 0010,但是即使我是正确的人,我仍然看不到任何意义(对双关语),我不明白这对我有什么帮助。我知道偏移量用于指示标头的长度并告诉数据开始和结束的位置(但我不知道如何)
第二件事:
我不明白这些信件的来源:
pack_arg = '!HHLLBBHHH'
我看过类似的事情:
ip_header = pack('!BBHHHBBH4s4s' ...
tcp_header = pack('!HHLLBBHHH'
最后是这个:
tcp_flags = tcp_fin + (tcp_syn << 1) + (tcp_rst << 2) + (tcp_psh <<3) + (tcp_ack << 4) + (tcp_urg << 5)
为什么这些按位运算的数字不断增加?
这是python函数的一部分
我在Wikipedia中看到了关于校验和如何工作的解释,这些解释很容易理解,但是如上所述,当涉及到函数的详细信息时,我还不太了解。
谢谢