通信过程上下层关系
UDP简介
是把数据直接发出去,而不管对方是不是在收信,就算是UDP无法送达,也不会产生ICMP差错报文。
概述
(1)UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能
(2)优点
(3)发送数据之前不需要建立连接
(4)UDP 的主机不需要维持复杂的连接状态表。
(5)UDP 用户数据报只有8个字节的首部开销。
(6)网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。
UDP数据包首部
TCP简介
提供了一种可靠的数据传输服务,TCP是面向连接的,只有链接建立起来后才能通信。
优点
(1)面向连接
(2)可靠
(3)全双工
(4)面向字节流
TCP数据包头部
注:
数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号:下一报文的序号
URG = 1 :紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
ACK = 1 : 确认号字段才有效
PSK = 1 :尽快交付给接受进程
RST = 1 :严重错误,重新连接
SYN = 1 :链接请求
FIN = 1 :链接结束
选项字段:长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
UDP和TCP对比:
概念:
1、UDP 报文头
可以看到,相比 TCP 报文,UDP 的报文的域相对少了很多,有源端口、目标端口、数据包长度、奇偶校验值、和用户数据来组成。
2、UDP 的特点
简单的报文结构,也就意味着 UDP 不像 TCP 那样支持错误重传、滑动窗口等精细控制,其特点如下:
3、UDP简介
(1)、面向非链接
UDP 是一个无连接的协议,连接之前,源端和终端之间不建立连接,当它想传送时,就简单的去抓取来自应用程序的数据,并尽可能快的把它扔到网络上。
在发送端,UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力、和传输带宽的限制。在接收端,UDP 把每个消息段放在队列中,应用程序每次从队列中读取一个消息段。
(2)、不维护链接状态,支持同时向多个客户端传输相同的信息
由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态。因此一台服务器可同时向多个客户机传输相同的消息。
(3)、数据包报头只有8个字节,额外开销较小
相对于 TCP 的20个字节,UDP 包的额外开销小很多。
(4)、吞吐量受限于数据生成速率、传输速率以及机器性能
吞吐量不受拥挤控制算法的调节,只受限于数据生成速率、传输带宽、源端和终端主机性能的限制。
(5)、尽最大努力交付、不保证可靠交付、不需要维持复杂的链接状态
(6)、面向报文,不对应用程序提交的报文信息进行拆分或者合并
发送方的 UDP 对应用程序交下来的报文,在添加首部后,就向下交付给 IP 层,
既不拆分,也不合并,而是保留这些报文的边界。因此,应用程序需要选择合适的报文大小。上层解决。
结论:
TCP 和 UDP 是 OSI 模型中的运输层中的协议,TCP 提供可靠的通信传输,而 UDP 则常被
用于让网络和细节控制交给应用层的通信传输,两者区别如下:
TCP:面向连接 VS UDP:面向无连接
1、TCP 有三次握手的连接过程,UDP 适合消息的多播发送,从单个点向多个点传输信息。
2、可靠 VS 不可靠
3、有序性(利用了序列号保证了消息报文顺序交付,到达可能无需,但是TCP最终会排序)VS无序
4、速度(慢:因为要创建链接,保证消息的可靠性,和有序性,需要做额外的很多事情)VS(快:速度比较敏感的应用,比如在线视频媒体,电视广播,多人在线游戏)
5、量级(重量级,20字节)VS轻量级:体现在源数据的头大小为8个字节