目录
一、TCP协议
TCP(Transmission Control Protocol),传输控制协议。是面向连接,可靠的传输层通信协议。
特点:
-
面向连接的协议。在传输数据之前必须先建立发送端和接收端的连接,而且连接只能是一对一的。
-
可靠。因为是基于连接的,所以TCP相对来说比较可靠,他确保数据是否完整被接收端收到。
-
以报文段为单位进行数据传输。因为基于报文段来传输数据,所以数据大小不受限制。
-
面向字节流。TCP把应用层传输过来的报文以字节流来处理,将字节流组织成大小不等的报文段。
-
性能差。因为每次传输都需要建立连接,所以消耗的资源多,传输效率低。
-
TCP首部最少20字节。20字节的固定首部和可变长度的其他选项。
-
TCP的应用场景:
因为TCP是基于连接的,保证数据的可靠性,所以经常用于:
1.FTP文件传输。
2.HTTP/HTTPS
... -
TCP编程的一般步骤:
客户端:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
服务器:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
二、UDP
UDP(User Datagram Protocol),用户数据包协议。面向无连接的通信协议。
特点:
-
面向无连接的通信协议。接收或者发送数据不需要建立连接,随时可发送,通信模式可以为一对一、一对多或者多对多。
-
不可靠。因为UDP传输数据无连接,所以不能保证数据传输的可靠性。
-
以数据包为单位进行数据传输。UDP不再是以报文段为单位来传输数据,而是以数据包为单位进行传输,所以传输的数据大小收到包的限制。
-
性能高。因为基于无连接且以数据包为单位发送数据,所以消耗的资源少,传输效率高。
-
UDP首部只有8个字节。(也是性能高的原因之一)
-
UDP的应用场景
因为UDP基于无连接,随时发送数据,简单高效,所以经常用于:
1.包总量较少的通信(DNS、SNMP等)
2.视频音频等多媒体通信。
3.被限定于LAN等特定网络中的通信
4.广播通信
... -
UDP编程的一般步骤:
客户端:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
服务器:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
三、总结
TCPheUDP的区别总结为以下几点:
TCP | UDP |
---|---|
面向有连接 | 面向无连接 |
一对一传输 | 一对一 一对多 多对多传输 |
可靠 | 不可靠 |
以报文段为单位进行数据传输 | 以数据包为单位进行数据传输 |
消耗资源多 | 消耗资源少 |
效率低 | 效率高 |
首部至少20字节 | 首部只有8个字节 |