TCP:面向连接
传输控制协议
,提供的是
面向连接
、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,
流量控制
等功能,保证数据能从一端传到另一端。
UDP:面向无连接
用户数据报协议
,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而
传输速度
很快。
TCP创建流程:
服务器:
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
开启监听,用函数listen();
接收客户端上来的连接,用函数accept();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
关闭监听;
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
开启监听,用函数listen();
接收客户端上来的连接,用函数accept();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
关闭监听;
客户端:
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
设置要连接的对方的IP地址和端口等属性;
连接服务器,用函数connect();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
设置要连接的对方的IP地址和端口等属性;
连接服务器,用函数connect();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
UDP创建流程:
服务器:
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
循环接收数据,用函数recvfrom();
关闭网络连接;
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
循环接收数据,用函数recvfrom();
关闭网络连接;
客户端:
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
设置对方的IP地址和端口等属性;
发送数据,用函数sendto();
关闭网络连接;
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
设置对方的IP地址和端口等属性;
发送数据,用函数sendto();
关闭网络连接;
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。