![]()
TCP和UDP的区别
TCP是一个面向连接的、可靠的、基于字节流的传输层协议。
而UDP是一个面向无连接的传输层协议。
具体来分析,和 UDP 相比,TCP 有三大核心特性:
面向连接:所谓的连接,指的是客户端和服务器的连接,在双方互相通信之前,TCP 需要三次握手建立连接,而 UDP 没有相应建立连接的过程。
可靠性:TCP 花了很多的功夫来保证连接的可靠,这个可靠性体现在哪些方面呢?一个是有状态,另一个是可控制。
TCP 会精准记录哪些数据发送了,哪些数据被对方接收了,哪些没有被接收到,而且保证数据包按序到达,不允许半点差错。这是有状态。
当意识到丢包了或者网络环境不佳,TCP 会根据具体情况调整自己的行为,控制自己的发送速度或者重发。这是可控制。
相应的,UDP 就是无状态, 不可控的。
面向字节流:UDP 的数据传输是基于数据报的,这是因为仅仅只是继承了 IP 层的特性,而 TCP 为了维护状态,将一个个 IP 包变成了字节流。
举个例子就是说,我们的视频通话就是使用UDP协议来尽最大能力让你听完,不管有的没的;而下载文件就是TCP,一定要保障文件的完整性。
TCP和UDP的联系
网络字节序和主机字节序的转换函数实践
代码如下:
addrSrv.sin_addr.S_un.S_addr=htonl(2130706689;
addrSrv.sin_addr.S_un.S_addr=htonl(2130706689;这句还可以写为:
可见inet_addr函数的转换作用就是上面的第一步到第三步的转换。
然后就是端口的主机字节序和网络字节序也是同理,端口号就是主机字节序,先把端口转成16位的二进制数,然后把前八个和和八个调换位置在转成十进制就是网络字节序。