您的位置:首页 > 理论基础 > 计算机网络

TCP与UDP的区别

2014-04-24 20:27 316 查看
今天去阿里面试,面试官问了几个问题:

(1)C和C++的区别、以及内存管理上的区别?

(2)TCP、UDP协议的区别?

(3)C++中的集合,map与set的区别?

(4)C++中静态变量放在哪个内存区?

第一个题至今不知道有什么区别,map是key和value对应,set只有键没有值。C++中静态变量应该是放在全局数据区。

TCP与UDP都属于传输层协议,TCP是面向连接的协议,发送数据之前需要与接收端进行3次会话,建立有效的连接,

UDP协议时用户数据报协议,是面向非连接的,适用于少量数据传输对可靠性要求不高的场景,比如QQ。

在网上找了一些答案,记下来以便自己复习。

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

TCP与UDP的区别:

1。基于连接与无连接

2。对系统资源的要求(TCP较多,UDP少)

3。UDP程序结构较简单

4。流模式与数据报模式

5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

1。TCP传输存在一定的延时,大概是1600MS(移动提供),UDP响应速度稍微快一些。

2。TCP包头结构

  源端口16位

  目标端口 16位

  序列号 32位

  回应序号 32位

  TCP头长度 4位

  reserved 6位

  控制代码6位

  窗口大小16位

  偏移量16位

  校验和16位

  选项 32位(可选)

  这样我们得出了TCP包头的最小大小.就是20字节.

  UDP包头结构

  源端口16位

  目的端口16位

  长度 16位

  校验和 16位

  UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协议显得非常精简.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: