在tcp/ip中能够实现传输层功能的、具有代表性的协议是TCP/UDP
*****************TCP流程*******************************
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
TCP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
*************************************UDP****************************
与之对应的UDP编程步骤要简单许多,分别如下:
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
*************************区别************************************************
TCP: 它是面向连接的、可靠的流协议,即不间断的数据结构。
提供可靠性传输,实行“顺序控制、重发机制、流控制、拥塞控制”
UDP: 不具有可靠性的数据报协议,细微处理它会交给上层的应用去完成。在UDP情况下,可确保发送信息的大小,却无法保证一定能收到(属于那种不管三七二十一,直接全部接受,收不收到那就不确定了)
*****************************************************************************
其实UDP/TCP 并没有谁比谁好,只是看相对使用情况!
tcp在传输层有必要实现可靠的情况,它可以提供可靠传输;
udp用于高速传输和实时性有较高要求的通信或广播通信。
例如我们通过ip电话通信,如果使用tcp数据丢失了会被重发,但却无法流畅传输通话,导致无法正常交流。而采用UDP
它不会进行重发,但即使有丢失,也只影响一小部分,因此应该根据应用目的按需使用。