在尝试进行一些套接字编程时,我遇到了一些有趣的细节,细节是sockaddr_in
结构大小,它的大小为14个字节
根据我的理解,额外的填充用于对不同类型的IP地址进行类型转换,但理论上,如果在类型转换后留下任何填充,你是否可以潜入恶意代码?
对我来说额外填充似乎是未使用的内存。
答案 0 :(得分:2)
sockaddr
和sockaddr_in
结构通常仅用于应用程序与内核/运行时之间的通信。它们由inet_aton()
等函数构造,并传递给bind()
等函数。它们通常不通过网络发送,也不存储在文件中。因此,没有办法“潜入”“恶意”(或其他错误的)价值。即使确实发生了这种情况,收件人也会忽略额外的数据。
可能添加了填充以试图支持可能比IPv4地址更大的未来网络地址格式。具有讽刺意味的是,这不足以支持16字节长的IPv6地址。