Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 1.53 KB

README.md

File metadata and controls

26 lines (19 loc) · 1.53 KB

Exercise 1

IPv6地址测试宏的作用是什么?

在一些IPv6应用程序中,它必须知道与其通信的对方是使用IPv4协议还是使用IPv6协议,如果是使用 IPv4地址,那么这些IPv6的应用程序需要知道对方使用的通信地址是不是一个由IPv4地址映射到的IPv6 地址。为测试IPv6地址的某些特性,所以定义了12个宏来达到这个目的。

Exercise 2

IPv6服务器是如何为IPv4客户端服务的?

  1. 启动IPv6服务器,创建一个IPv6的监听套接口,我们假定该套接口绑定了通配地址。
  2. IPv4客户调用gethostbyname找到一个与该服务器对应的A记录。因为这台服务器主机同时支持 IPv4和IPv6,所以它既有一个A记录,又有一个AAAA记录,但IPv4的客户只需要一个A记录。
  3. 客户进程调用connect,客户主机向服务器发送一个IPv4的SYN。
  4. 服务器主机收到这个发往IPv6监听套接口的IPv4的SYN,置一个标志,表明这个连接使用IPv4映射 的IPv6地址,然后响应一个IPv4的SYN/ACK。当这个连接建立后,accept返回给服务器的地址就是这个 IPv4映射的IPv6的地址。
  5. 在客户和服务器之间的所有通信使用IPv4数据报。
  6. 双重协议屏蔽了服务器和客户端之间的协议细节。(即IPv4客户端不知道对方是IPv6服务器,IPv6 服务器不知道对方是IPv4客户端,除非服务器明确地去检查。)

上机实战

编写一个可以利用IPv4和IPv6进行网络连接的客户端,绑定端口为8888。