现在的位置: 首页 > 综合 > 正文

关于UDP与TCP的几点心得

2012年06月30日 ⁄ 综合 ⁄ 共 695字 ⁄ 字号 评论关闭

被大家都知道UDP是Connectionless oriented. TCP是Conenction Oriented

UDP的包头只有源端口,目标端口,包长度,校验位。也就是说,UDP只需要把包发出去即可,不需要建立连接,关闭连接。不关心对方是否收到。

而TCP的包头则比较复杂,有许多控制位,TCP需要建立连接,按顺序发送数据包,接收方需要向发送方确认数据包收到,当然确认消息可以跟数据发送合并(打开SYN,ACK控制位即可)。TCP具有超时重传等机制。

另外TCP的包头没有长度字段,TCP封装在IP包里,应该就是IP包的数据部分的长度-TCP包头的长度=TCP数据长度

UDP的数据长度用16bit表示,那么最大就是64K。IP包的长度用32bit表示,TCP的包头最多几十个字节。因此TCP包的最大长度基本为UDP包的2倍了。

UDP的优点:速度快  缺点:网络较差的时候容易丢消息。

TCP的优点:数据传输可靠  缺点:建立连接,确认包,速度比较慢。

适合应用UDP的场合:比如局域网内的消息传送,DNS协议,RTP类协议(用于实时传送的,比如看网络电视,如果网络较差的话,总不能因为一个包丢失了一直在那儿等,得继续往下收发,中间缺少的包可以通过插值的方式近似计算出来)等

适合TCP的场合:UDP不适合的场合应该都是TCP的天下啦。比如HTTP,FTP等,你总不能看个网页中间缺了内容,FTP下载的数据不完整,对吧。

当然UDP也可以自己来保证一下可靠性,这需要上层应用自己来做了,与对方约定有回包,若没有收到对方的回包,再重发。而TCP协议是协议本省实现了。UDP如果这样实现的话,那性能就下降了,哈哈。

抱歉!评论已关闭.