网络编程与协议分析36问

1、如何发现网络拓扑信息?

虽然目前 Unix 系统在网络配置和管理方面没有统一标准,但大多数 Unix 系统提供了两个基本命令来发现网络的一些细节: netstat ifconfig

可查看系统上这些命令的手册( man )页面,以了解输出信息的详细内容。

需注意,一些厂商会将这些命令放在管理目录(如 /sbin /usr/sbin )而非普通的 /usr/bin 目录中,这些目录可能不在正常的 shell 搜索路径( PATH )中。

具体步骤如下:

  1. 使用 netstat -i 命令提供接口信息,同时指定 -n 标志以打印数字地址,而非尝试查找网络名称,这样能显示接口及其名称。

2、获取TCP日间客户端的源代码。编译并测试该客户端程序。多次运行该程序,每次都将不同的IP地址作为命令行参数指定。

首先获取TCP日间客户端代码,进行编译。编译完成后,多次运行该程序,每次运行时在命令行传入不同的IP地址作为参数进行测试。

3、我们提到了 IP 版本 4 和 6。版本 5 是怎么回事,版本 0、1、2 和 3 又是什么情况?

访问 http://www.iana.org/numbers.htm 并找到“IP 版本号”注册表可知,版本 0 保留,版本 1 - 3 未分配,版本 5 是互联网流协议。

4、在一个以太网主机(其TCP通告的最大段大小(MSS)为1460)和一个令牌环网主机(其TCP通告的MSS为4096)之间建立了连接。两台主机都未实现路径最大传输单元(MTU)发现。观察数据包时,我们在任何方向上都从未看到超过1460字节的数据。为什么?

因为在未实现路径MTU发现时,连接会采用双方中较小的MSS值来传输数据,所以数据传输中不会超过1460字节。

5、开放式最短路径优先协议(OSPF)直接使用IP。对于这些OSPF数据报,IPv4报头中的协议字段值是多少?

89

6、为什么像套接字地址结构长度这样的值 - 结果参数必须通过引用传递?

因为这个长度参数在函数调用时是一个值(它告知内核该结构的大小,以便内核在填充结构时不会越界写入),在函数返回时是一个结果(它告知进程内核实际存储在该结构中的信息有多少)。

7、由 头文件定义的INADDR_常量是主机字节序的,我们如何判断这一点呢?

  • 查看除 INADDR_ANY (全为零比特)和 INADDR_NONE (全为一比特)之外以 INADDR_ 开头的常量定义。
  • 例如,类D组播地址 INADDR_MAX_LOCAL_GROUP 被定义为 0xe00000ff ,注释为 “224.0.0.255”,这显然是主机字节序。

8、在并发服务器中,假设调用fork后子进程先运行。子进程在fork调用返回给父进程之前完成了对客户端的服务。两次close调用会发生什么情况?

以下是调整为 Markdown 格式的文本内容:

子进程调用 close(connfd) 时,由于 fork connfd 在父子进程间共享,其文件表项引用计数为 2,此次调用将引用计数从 2 减为 1;父进程调用 close(connfd) 时,会将引用计数从 1 减为 0,此时才会进行套接字的实际清理和释放。

9、编写一个SIGPIPE信号处理函数,该函数仅打印一条消息并返回。在调用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值