TCP和UDP是传输层协议。
七层协议
image.pngimage.png
UDP :(用户数据报协议)
01 UDP特点:
- 无连接
- 尽最大努力交付
- 面向报文
面向报文:
面向报文.png02 UDP功能:
- 复用
- 分用
- 差错检测
复用、分用:
image.png差错检测:
差错检测.pngTCP:(传输控制协议)
TCP特点:
- 面向连接
- 可靠传输
- 面向字节流
- 流量控制
- 拥塞控制
TCP特点——01 面向连接
面向连接.png 三次握手.png四次挥手.png为什么要进行三次握手???
假设建立连接只需要两次,客户端发送syn请求报文超时了,客户端有超时重传机制,此时服务端收到重传的syn建立连接,同时超时的那次syn也到达了,服务端以为客户端又想建立连接,这样就会建立2次话会。
使用三次握手可以解决同步请求连接建立报文超时的问题。
为什么要进行四次挥手???
全双工:一条通道双方面的接受和发送。所以需要双方面的确认。
TCP特点——02 可靠传输
- 无差错
- 不丢失
- 不重复
- 按需到达
无差错.png停止等待协议:实现可靠传输
- 无差错情况
- 超时重传
- 确认丢失
- 确认迟到
超时重传.png标准情况:客户端发送请求报文m1,服务端收到确认m1,客户端再发送m2
确认丢失.png超时重传:保证不丢失,差错校验
客户端发送请求报文m1,超时重传m1,服务端收到确认m1,客户端再发送m2
确认迟到.png客户端发送请求报文m1,服务端确认m1丢失,超时重传m1,丢弃重传的m1,重传确认m1,客户端再发送m2
客户端发送请求报文m1,服务端确认m1丢失,超时重传m1,丢弃重传的m1,重传确认m1,客户端再发送m2,对于服务端超时回来的m1,收到什么也不做。
TCP特点——03 面向字节流
image.png不管发送方给发送多少个字节数据,比如发送方发送10个字节,TCP会根据实际情况,可能一次或者拆分成多次发送给接收方
TCP特点——04 流量控制
滑动窗口协议:(难点)
image.png
按序到达通过
字节编号
控制,从左到右排序序号增大
发送窗口的大小一方面取决于发送缓存
的大小 另一方接收方的接受窗口
的大小控制
比如:发送方是wifi网络,接收方2g3g,发送太快,接受方的接受缓存会大量累计数据,缓存溢出。
接收方可以反向制约(动态调整)发送方的发送窗口大小。体现出来流量控制的特点。
TCP报文首部字段
控制窗口值
例如:接受窗口较小,发送方发送窗口较大,会以很快的速率发送,需要由接口窗口通过向TCP报文首部字段更改窗口值,去调整发送方的发送速率!
TCP特点——05 拥塞控制
- 慢开始、拥塞控制
纵轴代表:交互次数或者轮询次数
横轴代表:窗口值的大小
1、开始发送2个报文,没发生
拥塞
继续发送4个报文,指数增长
。此阶段是慢开始
2、当增长到门限值
的时候,会采用拥塞避免
的算法,16,17~24线性增长
3、如果连续3个ack
都没收到的话,就认为发生了网络拥塞
。使用乘法减小
,恢复到只发送一个报文,重新慢开始
。
同时门限值降低为原来的一半
(24降级为12)重复上述流程。
- 快恢复,快重传
到达拥塞上限
时,在新的门限值
,进行操作,不重新进行慢开始
。
网友评论