文件名称:实验原理-索尼a6000说明书
文件大小:91KB
文件格式:PDF
更新时间:2024-06-27 13:05:13
TCP、UDP
§ 2.1 实验目的 1. 深入了解 TCP 和 UDP 的区别与联系。 2. 掌握网络 Socket 编程的基本概念和基本编程方法。 3. 掌握 TCP 和 UDP 的 Client/Server 结构的程序的基本编程方法。 § 2.2 预备知识 1. 了解 Windows、Linux/Unix 等不同操作系统下的 TCP、UDP 编程环境。 2. 学习 TCP、UDP 编程接口──Socket 函数调用。 § 2.3 实验原理 Socket 编程基本原理参见参考文档 传输层和应用层之间进行交换的数据称为报文(Message),而在传输层和 网络层之间进行交换的数据被称为数据报(Datagram)。传输层可以使用传输控 制协议(TCP)来封装数据,也可以使用用户数据报协议(UDP)来封装数据。 TCP 协议面向连接,使用字节流传送服务,是可靠的;而 UDP 协议面向非连 接,使用数据报服务,是非可靠的。TCP 协议提供高可靠性的传输,UDP 协议 提供高效的传输。在实际应用中,它们有其各自所适应的场合。 在面向连接的 Client/Server 结构中:服务器首先启动,通过调用 socket()建立 一个套接口,然后调用 bind()将该套接口和本地网络地址联系在一起,再调用 listen()使套接口做好侦听的准备,并规定它的请求队列的长度,之后就调用 accept()来接收连接。客户在建立套接口后就可调用 connect()和服务器建立连 接。连接一旦建立,客户机和服务器之间就可以通过调用 read()和 write()来发送 和接收数据。最后,待数据传送结束后,双方调用 close()关闭套接口。 在无连接的 Client/Server 结构中,服务器使用 socket()和 bind()函数调用建立 和连接 socket。由于此时的 socket 是无连接的,服务器使用 recvfrom()函数从 socket 接收数据。客户端也只调用 bind()函数而不调用 connect()函数。注意:无 连接的协议不在两个端口之间建立点到点的连接,因此 sendto()函数要求程序在 一个参数中指明目的地址。recvfrom()函数不需要建立连接,它对到达相连协议 端口的任何数据作出响应。当 recvfrom()函数从 socket 收到一个数据报时,它将 保存发送此数据包的进程的网络地址以及数据包本身。程序(服务器和客户)用 保存的地址去确定发送(客户)进程。在必要的条件下,服务器将其应答数据报 送到从 recvfrom()函数调用中所得到的网络地址中去。