1.TCP和UDP的区别:
1.是否面向连接?
- TCP通过三次握手,建立连接。
- UDP是不用建立连接。
2.是否可靠?
- TCP传输的是可靠并有序的数据
- UDP只是尽最大努力交付,不一定可靠
3.UDP具有较好的实时性 适用场景:短消息,多客户端,对信息可靠性要求不高,对效率要求高。
4.每一条TCP是点对点的,UDP支持更广泛 一对一,多对一,多对多。
5.TCP对资源要求较高,UDP对资源要求较少。
6.TCP面向数据流, UDP面向数据报。
2.TCP/IP 实现可靠传输的方式:
- 序列号,ACK信号:发送方给每个要发送的数据包都标有一个序列号。接受方在接收到数据包后,给发送送发送一个ACK信号包含了,要求的下一个数据包的序列号。
- 超时重发:当发送方在规定时间内没有接收到接收方的ACK时,将会重发送该数据包,并下一次等待重发的时间成指数增长。当重发一定次数后,若还没有收到ACK,就会强制的断开连接。
- TCP的连接管理:三次握手,四次挥手。
- 以段为单位发送数据包:在通信双方建立连接的同时,协商数据包的单位即(最大的消息长度(MSS))。
- 滑动窗口:包括前端已发送未收到ACK的数据包,和后端待发送的数据包。接收端收到ACK后,窗口向前滑动,直到有数据未确认时停止。
- 流量控制:TCP数据报首部字段来控制滑动窗口的大小。
- 拥塞控制:发送端通过拥塞窗口主动控制数据流量。 慢启动:防止通信双方一开始就发送大量的数据包,拥塞窗口一开始的大小为:1MSS,每收到一个ACK拥塞窗口就扩大两倍,发送数据包时选择拥塞窗口和滑动窗口的较小值。拥塞避免算法:相比慢启动,拥塞窗口的增长速度更慢。快速重传:当在规定时间限度内没有收到ACK,那么很可能就是网络出现问题。此时将拥塞窗口减小为一,重新慢开始。