2024年3月20日发(作者:)

《网络程序设计》复习题2

1、什么叫套接字?套接字按通信性质可以分为哪两类?

多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为

了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互

提供了称为套接字(Socket)的接口。

套接字按通信性质分:会话套接字和数据报套接字。

2、理解线程的创建与使用方法,并能应用到程序设计中。P66

3、异构环境下的网络程序设计需要考虑哪些问题?

1)字节顺序:不同的平台以不同的方式存放一个二进制数。最常见的有两种格式:大

在前的字节顺序和小数在前的字节顺序。大数在前的字节顺序是指将一个多字节数的

高序字节存储在内存的起始地址;而小数在前的字节顺序则相反,将低序字节存储在内存

的起始地址。

2)字的长度:不同的实现对于相同的数据类型可能有不同的表示长度。

3)字节定界问题:不同的平台上为结构体(struct)或共同体(union)打包的方式

也是

不同的,这取决于所有数据类型的位数及机器的定界限制。

4、为什么在数据结构struct sockaddr_in中,成员变量sin_addr和sin_port需要

转换为网络字节顺序,而sin_family不需要呢?

Sin_addr和sin_port分别封装在包的IP和UDP层,必须要是网络字节顺序。

Sin_family域只是被内核使用来决定在数据结构中包含什么类型的地址,没有发送到

网络上,所以它必须是本机字节顺序

5、从网络编程的角度来简述和比较IP地址和端口的作用。

端口:是一种抽象的软件结构。应用程序通过系统调用与某端口建立连接(binding)

后,传输层传给该端口的数据都被相应进程所接受,相应进程发给传输层的数据都通过该

端口输出。在TCP/IP协议的实现中,端口操作类似一般的I/O操作,进程获取一个端口,

相当于获取本地唯一的I/O文件。

地址:网络通信中通信的两个进程在不同的机器上。这两个机器可能位于不同的网络,

这些网络通过网络互联设备连接。因此需要三级寻址:某一主机与多个网络相连,必须指

定一特定网络地址;网络上每一主机应有唯一的地址;每一主机上的每一进程有在主机上

的唯一标识符。

6、为什么网络编程时需要考虑字节顺序问题?

7、WinSock编程中需要哪些文件?