TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践

科技资讯 投稿 28700 0 评论

TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践

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位的二进制数,然后把前八个和和八个调换位置在转成十进制就是网络字节序。

编程笔记 » TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践

赞同 (43) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽