Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
148 lines (83 sloc) 3.88 KB

网络:复习题

原文:https://github.com/angrave/SystemProgramming/wiki/Networking%3A-Review-Questions

简答题

Q1

什么是插座?

Q2

在端口 1000 和端口 2000 上侦听有什么特别之处?

  • 端口 2000 的速度是端口 1000 的两倍
  • 端口 2000 的速度是端口 1000 的两倍
  • 端口 1000 需要 root 权限
  • 没有

Q3

描述 IPv4 和 IPv6 之间的一个重要区别

Q4

你何时以及为什么要使用 ntohs?

Q5

如果主机地址是 32 位,我最有可能使用哪种 IP 方案? 128 位?

Q6

哪种常见的网络协议是基于数据包的,可能无法成功传送数据?

Q7

哪种常见协议是基于流的,如果数据包丢失会重新发送数据?

Q8

什么是 SYN ACK ACK-SYN 握手?

Q9

以下哪一项不是 TCP 的功能?

  • 数据包重新排序
  • 流量控制
  • 数据包重传
  • 简单的错误检测
  • 加密

Q10

什么协议使用序列号?他们的初始价值是多少?为什么?

Q11

构建 TCP 服务器需要的最小网络调用是多少?他们的正确顺序是什么?

Q12

构建 TCP 客户端需要的最小网络调用是多少?他们的正确顺序是什么?

Q13

你何时会在 TCP 客户端上调用 bind?

Q14

socket bind listen accept 的目的是什么?

Q15

以上哪个调用可以阻塞,等待新客户端连接?

Q16

什么是 DNS?它对你有什么用?哪个 CS241 网络电话会使用它?

Q17

对于 getaddrinfo,如何指定服务器套接字?

Q18

为什么 getaddrinfo 会生成网络数据包?

Q19

哪个网络调用指定允许的积压的大小?

Q20

哪个网络调用返回一个新的文件描述符?

Q21

何时使用被动插座?

Q22

epoll 什么时候比选择更好?何时选择比 epoll 更好的选择?

Q23

write(fd, data, 5000)总是会发送 5000 字节的数据吗?什么时候会失败?

Q24

网络地址转换(NAT)如何工作?

Q25

@MCQ 假设网络在客户端和服务器之间有 20ms 的传输时间,建立 TCP 连接需要多长时间? 20 ms 40 ms 100 ms 60 ms @ANS 3 Way Handshake @EXP @END

Q26

HTTP 1.0 和 HTTP 1.1 之间有什么区别?如果网络传输时间为 20 毫秒,将 3 个文件从服务器传输到客户端需要多少 ms? HTTP 1.0 和 HTTP 1.1 之间的时间差异如何?

编码问题

问 2.1

写入网络套接字可能不会发送所有字节,并且可能会因信号而中断。检查write的返回值以实现write_all,该 COD1 将使用任何剩余数据重复调用write。如果write返回-1,则立即返回-1,除非errnoEINTR - 在这种情况下重复最后一次write尝试。您将需要使用指针算法。

// Returns -1 if write fails (unless EINTR in which case it recalls write
// Repeated calls write until all of the buffer is written.
ssize_t write_all(int fd, const char *buf, size_t nbyte) {
  ssize_t nb = write(fd, buf, nbyte);
  return nb;
}

问 2.2

实现一个侦听端口 2000 的多线程 TCP 服务器。每个线程应从客户端文件描述符中读取 128 个字节,并在关闭连接并结束线程之前将其回送给客户端。

问 2.3

实现侦听端口 2000 的 UDP 服务器。保留 200 字节的缓冲区。听取到达的数据包。有效数据包为 200 字节或更少,以 4 字节 0x65 0x66 0x67 0x68 开头。忽略无效的数据包。对于有效数据包,将第五个字节的值作为无符号值添加到运行总计中,并打印到目前为止的总数。如果运行总计大于 255,则退出。

You can’t perform that action at this time.