Skip to content

Latest commit

 

History

History
27 lines (23 loc) · 1.46 KB

习题.md

File metadata and controls

27 lines (23 loc) · 1.46 KB

18.1 对于一个名为 eth10 且链路层地址是一个 64 位 IEEE EUI-64 地址的接口而言,你预期它的数据链路套接字地址结构中的 sdl_len 成员会是什么?

struct sockaddr_dl {
    u_char  sdl_len;    /* Total length of sockaddr */
    u_char  sdl_family; /* AF_LINK */
    u_short sdl_index;  /* if != 0, system given index for interface */
    u_char  sdl_type;   /* interface type */
    u_char  sdl_nlen;   /* interface name length, no trailing 0 reqd. */
    u_char  sdl_alen;   /* link level address length */
    u_char  sdl_slen;   /* link layer selector length */
    char    sdl_data[12];   /* minimum work area, can be larger;
                   contains both if name and ll address */
#ifndef __APPLE__
    /* For TokenRing */
    u_short sdl_rcf;    /* source routing control */
    u_short sdl_route[16];  /* source routing information */
#endif
};
  • 由上图可知,除了 sdl_data 外总共需要 8 字节,因此再加上名字 "eth10" 5 个字节和地址 8 个字节,总共是 21 字节,那么根据 8 字节对齐,则向上舍入到 24 字节。

18.2 图 18-6 种若在调用 write 之前禁止 SO_USELOOPBACK 套接字选项,将会发生什么?

  • Practise_02.c
  • 该选项默认是开启的,如果被禁止,那么内核不会向进程发送数据,该程序会阻塞在 read 调用上。