TCP(Transmission Control Protocol,传输控制协议)

他是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。

这说明TCP连接是一个非常复杂的过程,需要进行“三次握手”才可以建立连接。

以下是我在查阅资料的时候看到的例子,便于更加深刻理解

我们来看看这三次对话的简单过程:

1.主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

2.主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;

3.主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
UDP(User Data Protocol,用户数据报协议)

是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。

这就说明UDP连接是一个简单,但是是不太安全的。即他适用于可靠性要求不高的环境,例如:打电话,Ping指令......

这个也是我在查阅资料的时候看到的例子,便于更加深刻理解:

比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包。大家都知道,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。

这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;

但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的bai通信传输。
总结:

1.TCP是面向连接的,UDP是无连接的
2.TCP是可靠的,UDP是不可靠的
3.TCP是面向字节流的,UDP是面向数据报文的
4.TCP只支持点对点通信,UDP支持一对一,一对多,多对多
5.TCP报文首部20个字节,UDP首部8个字节
6.TCP有拥塞控制机制,UDP没有
7.TCP协议下双方发送接受缓冲区都有,UDP并无实际意义上的发送缓冲区,但是存在接受缓冲区
选择依据(即什么时候选TCP或者UDP):

对某些实时性要求比较高的情况,选择UDP,比如游戏,媒体通信,实时视频流(直播),即使出现传输错误也可以容忍;其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失。

参考文献:

(33条消息) TCP和UDP的区别和联系_典韦-码农的博客-CSDN博客_tcp和udp的区别与联系

(33条消息) TCP与UDP的区别(超详细)_董HaoYu的博客-CSDN博客_tcp与udp的区别

最新文章

  1. spark1.4.1 启动过程
  2. Ubuntu14.04安装pip及配置
  3. DigitalOcean 建站笔记
  4. rsync使用
  5. phpcms 导航栏点击栏目颜色定位方法和phpcms list页实现分页
  6. C#winform中使用控件的Dock属性进行布局
  7. Swift实战-豆瓣电台(三)获取网络数据
  8. hdu 1403 Longest Common Substring(最长公共子字符串)(后缀数组)
  9. 由于 UNION ALL Chinese_PRC_CI_AS”之间的排序规则冲突,值的排序规则未经解析
  10. uva 10003 Cutting Sticks (区间dp)
  11. Linux安装 Mysql
  12. css学习の第一弹—格式创建
  13. RAD Studio 10.3 来了
  14. 【ASP.NET 插件】Plupload多格式多文件上传实现
  15. .NET4.0的listview与DataPager的结合使用时的模板编辑
  16. python之旅:网络基础之网络协议篇
  17. 让Flask-admin支持markdown编辑器
  18. XML_CPP_ZC_libXml2
  19. 系统蓝屏stop:ox000007B错误解决方案
  20. 在Unity控制台下使用富文本

热门文章

  1. TCP/IP协议三次握手、四次断开
  2. 用js获取当前页面的url
  3. LuoguP2876 [USACO07JAN]解决问题Problem Solving (区间DP)(未完成)
  4. CF906C Party (状压DP)(未完成//鬼知道啥情况)
  5. Luogu3402【模板】可持久化并查集 (主席树)
  6. Spring源码 16 IOC refresh方法11
  7. Java SE 10 新增特性
  8. iommu分析之---smmu v3的实现
  9. JavaScript设计模式及代码实现——单例模式
  10. Jenkins+SpringCloud(多模块)+Vue项目详细配置