实验三、嵌入式 Linux 网络通信实验
一、实验目的
1. 掌握 TCP 与 UDP 协议原理
2. 掌握套接字通信原理。
2. 掌握 TCP 套接字服务器端与客户端通信方法。
二、实验基本要求
1. 学习 TCP 与 UDP 协议原理。
2. 掌握 TCP 套接字服务器端与客户端通信方法,实验箱和 Ubuntu 进行 TCP 通信。
三、实验原理
1.TCP 协议与 UDP 协议
TCP 协议(传输控制协议)是面向连接的通信协议,TCP 提供两台计算机之间的可靠无
差错的数据传输。应用程序利用 TCP 进行通信时,客户端和服务器端之间建立一个套接字
连接,可以把套接字连接想象为一个电话呼叫,只有呼叫成功时,双方就能进行通话。建
立连接的两计算机之间就可以把数据当作一个双向字节流进行传输。一般把在最初建立呼
叫时,主动呼叫方称为“客户端”,负责监听方称为“服务器端”。
UDP 协议(用户数据报协议)是无连接通信协议,UDP 不保证可靠的数据传输。如果一个
主机向另一个主机发送数据,无需建立连接就会直接将数据发出去,而不管另一台主机是
否准备接受数据。如果另一个主机收到了数据,它不会向对方发送收到确认信息。这一过
程,类似于从邮局发送信件,无法确认收信人一定能收到发出去的信件。
2.套接字概述
通过 IP 地址可以在网络上找到主机,通过端口号找到主机上正在运行的程序(进程)。
也就是说,网络通信不能简单地说成是两台计算机之间的通信,而是两台计算机上执行的
应用程序间收发数据。套接字就是 IP 地址和端口号的组合,用以表征一个虚拟的文件句柄。
根据网络传输协议类型的不同,套接字分为以下三种类型:
(1)字节流套接字。又称 TCP 套接字,基于 TCP 协议连接和传输方式,能保证数据传输
的正确性和顺序性。
(2)数据报套接字。又称 UDP 套接字,基于 UDP 协议的连接和传输方式,它定义了一种
无连接的服务,数据通过相互独立的数据报进行传输,并且无需对传输的数据进行确认,
传输速度快。
(3)原始套接字。原始套接字允许对底层协议如 IP 或 IMCP 进行直接访问,主要用于对
一些协议的开发,构造自己的数据报分组。
3.TCP 套接字通信步骤
3.1 服务器端
(1)调用 socket()创建套接字,然后初始化 struct sockaddr_in 结构体。
(2)调用 bind 函数()为套接字绑定一个 IP 地址和一个端口号。
(3)调用 listen()函数使套接字成为监听套接字,侦听指定的端口。