UDP是一个简单的,不可靠的数据报协议。TCP是一个复杂的、可靠的字节流协议
UDP的特点如下:
(1)无链接
(2)UDP使用尽最大努力交付,不保证可靠性
(3)UDP是面向报文的,UDP对应用层交付下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
(4)UDP没有拥塞控制
(5)UDP支持一对一、一对多、多对一和多对多的交互通信
(6)UDP的首部开销小,只有8字节
TCP的特点:
(1)TCP是面向连接的
(2)每条TCP连接只能用于两个断点,一对一
(3)TCP提供可靠交付的服务:连接传输数据、无差错、不丢失、不重复、并且按序到达
(4)TCP提供全双工通信
(5)面向字节流。TCP根据对方给出的窗口和当前网络拥塞的程度来决定一个报文应该包含多少个字节
TCP如何提供可靠性的连接:
(1)数据被分割成TCP认为最合适发送的数据块
(2)重传机制:TCP发出一个段后,启动定时器,如果不能及时收到报文段,则重发一个报文段
(3)当TCP收到一个段后,会发送一个确认
(4)TCP将保持它首部和数据的校验和
(5)TCP对收到的数据进行重新排序,保证数据的有序
(6)TCP会丢弃重复的数据
(7)TCP提供流量控制
1.TCP连接的11种状态
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
2.TCP连接中,第三次握手的必要性?TCP终止连接中,主动关闭端的经历TIME_WAIT的理由?
MSL是任何IP数据报能够在网络中存活的最长时间,TIME_WAIT是2MSL
(1)可靠的实现TCP全双工连接的终止。最终的ACK丢失为例
(2)允许老的重复分节在网络中消逝。现在有一个连接,关闭之后,过一段时间相同的IP和端口之间建立另一个连接,称为前一个连接的化身。旧连接上的分组有可能被误认为是该化身的。TIME_WAIT是2MSL足以保证某个方向上的分组最多存活MSL秒,另一个方向上的确认最多存活MSL秒也被丢弃。共2MSL.