关闭

TCP和UDP的区别(热门面试题目)

标签: TCP-IPlinux
97人阅读 评论(0) 收藏 举报
分类:

TCP和UDP都是TCP/IP里传输层的协议,但是两者却有明显区别。

首先,我们来看看TCP和UDP的报文结构
TCP报文结构
UDP报文结构
从两张图,我们不难看出,TCP的报文要比UDP的报文复杂得多。但是复杂是有好处的,因此我们得出如下结论:
**1、TCP的报文头比UDP的报文头长;
2、TCP的可靠性要比UDP的可靠性要强;
3、TCP的效率要比UDP的效率低。**

再来看看标准的说法:
一、UDP(User Datagram protocol)用户数据报协议,它只是在网络层IP协议的基础上增加了一点功能,其特点有:
(1)UDP是无连接的,发送数据之前不需要建立连接(而TCP需要,这是最重要的区别!),减少了开销和延时。
(2)UDP尽最大努力交付,所以不能保证数据传输的可靠性。这也就是牺牲了可靠性而换区了实时性
(3)UDP是面向报文的,对于应用层传输下来的数据进行简单的报文头(8字节)封装,首部开销小。
(4)UDP**没有拥塞控制**,出现网络拥塞时,发送方也不会减缓发送的速度,这种特性,对某些实时性要求较高的应用是很重要的,比如IP电话,视频会议等,他们允许拥塞时丢弃掉一些数据,以避免造成延时的积累。
(5)UDP支持一对一、一对多、多对一、多对多的通信模式。
这里写图片描述

二、TCP(Transmisson Control Protocol)传输控制协议。
(1)TCP提供可靠的数据传输服务,TCP是面向连接的(很重要)。应用程序在使用使用TCP协议传输数据之前,需要建立连接,就类似于打电话一样,需要接通,最后还需要挂电话。
(2)TCP连接是点对点的,一条TCP连接只能连接两个点。
(3)TCP提供可靠传输,无差错、不丢失、不重复、按顺序。
(4)TCP提供全双工通信,允许通信双方在任何时候都能发送数据和接受数据。因为TCP连接的两端都设有发送缓存和接收缓存。
(5)TCP面向字节流,TCP并不知道传输的数据的具体含义,仅把数据看错一连串的字节进行传输,而且也不保证发送的数据快和接受的数据块具有大小对应的关系。

TCP的三次握手连接
(1) 客户端发出请求连接报文段,其中报头控制位 SYN=1,初始序号 seq=x。客户端进入 SYN-SENT(同步已发送)状态。

(2) 服务端收到请求报文段后,向客户端发送确认报文段。确认报文段的首部中 SYN=1,ACK=1,确认号是 ack=x+1,同时为自己选择一个初始序号 seq=y。服务端进入 SYN-RCVD(同步收到)状态。

(3) 客户端收到服务端的确认报文段后,还要给服务端发送一个确认报文段。这个报文段中 ACK=1,确认号 ack=y+1,而自己的序号 seq=x+1。这个报文段已经可以携带数据,如果不携带数据则不消耗序号,则下一个报文段序号仍为 seq=x+1。

至此 TCP 连接已经建立,客户端进入 ESTABLISHED(已建立连接)状态,当服务端收到确认后,也进入 ESTABLISHED 状态,它们之间便可以正式传输数据了。
当传输数据结束后,通信双方都可以释放连接,这个释放连接过程被称为 释放连接(具体过程略) 。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:236次
    • 积分:24
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档