0.运输协议数据单元
TCP报文段,UDP用户数据报
1.用户数据报协议UDP特点
(1)UDP是无连接的
(2)UDP使用最大努力交付,不保证可靠交付
(3)UDP是面向报文的,发送方的UDP对应用层交下来的报文添加首部后就直接向下交付给IP层
(4)UDP没有拥塞控制
(5)UDP支持一对一、一对多、多对一、多对多
(6)UDP的首部开销小,只有8个字节
某些实时应用需要使用没有拥塞控制的UDP
2.UDP首部格式
(1)源端口
(2)目的端口
(3)长度:UDP用户数据报长度
(4)校验和:检测UDP用户数据报在传输中是否有差错,有错就丢弃
3.传输控制协议TCP特点:
(1)TCP面向连接
(2)TCP提供可靠交付:无差错、不丢失、不重复、按序到达
(3)TCP面向字节流:TCP会根据对方的窗口值和网络拥塞程度来决定一个报文段应该包含多少字节,如果应用进程传送到TCP缓存的数据块太长,TCP会把它划分短一些再传送。
(4)TCP有拥塞控制,流量控制,超时重传机制
(5)TCP是点对点通讯
(6)TCP首部长度最小20字节
(7)TCP提供全双工通信,TCP两端都设有发送缓存和接收缓存
4.TCP的两个端点:
TCP连接的端点叫套接字socket
socket = (IP地址:端口号)
每一条TCP连接被通信两端的两个socket确定
5.TCP可靠传输工作原理
见另一篇博文
6.TCP流量控制
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接受
通过滑动窗口实现流量控制
接收方会在确认报文中设置rwnd字段,该字段告诉发送方接收方的接收窗口大小,rwnd是以字节为单位的,TCP窗口单位是字节
如果有接收方将自己的rwnd设置为0,则为该TCP连接启动一个持续计时器,持续计时器设置的时间到期,就发送一个探测报文段,对方就在确认这个探测报文时给出当前窗口值,如果仍为0,则重新设置计时器,否则开始传输数据
7.TCP拥塞控制
在某段时间中,若对网络中某一资源需求超过了所能提供的可用部分,网络性能就会变坏,这种情况叫拥塞。
拥塞控制技术防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不会过载。
拥塞控制是一个全局性的过程,涉及所有主机,所有路由器,一级降低网络传输性能的所有因素。
流量控制是指点对点通信的控制,是端到端的问题,流量控制是要一直发送端发送数据的速率。
8.如何判断网络拥塞
网络发生拥塞时,路由器就要丢弃分组,只要出现了超时重传,就可以猜想网络可以出现了拥塞
判断网络拥塞的依据就是出现了超时
9.TCP拥塞控制算法
(1)慢开始+拥塞避免
发送方让自己的发送窗口等于拥塞窗口cwnd
开始拥塞窗口cwnd设置为1,并且每次收到确认报文后,cwnd*2
还需要设置一个门限值ssthresh,当cwnd到达ssthresh后,cwnd每次收到确认报文后+1
当出现超时后,cwnd又从1开始,并且ssthresh/2,重复上述过程
(2)快重传和快恢复
当接收方收到失序报文,要立即发送确认报文告知发送方,当发送方连续收到三个确认报文后(3-ACK),立即重传。发送方设置门限值ssthresh = cwnd/2,cwnd = ssthresh,继续采用拥塞避免算法,每收到一个确认报文段后cwnd+1
10.TCP三次握手
TCP规定SYN标志位=1的报文不能携带数据,所以前两次握手不能携带数据,第三次握手可以携带数据,图中并没有携带数据,如果想要携带数据就加上seq = J+1
11.为什么是三次握手而不是两次
防止已失效的连接请求报文突然传送到Server端(按上图来说,第三次握手是发送给Server)
假设Client的第一个请求连接报文在传送中滞留,Client启动超时重传机制并成功的三次握手建立连接,使用后释放。此时延误的请求连接报文传送到了Server,Server误认为是新的连接请求,就向Client发送确认报文段。如果是两次握手,则连接已经建立,但Client并不会理睬Server的确认报文,导致资源浪费。
12.TCP四次挥手
13.TCP四次挥手后为什么要在TIME_WAIT状态等待2MSL的时间
(以上图为例)
(1)
假定Server的释放连接报文到达Client,Client发送确认报文,但确认报文丢失。
如果Client发送完确认报文后立即关闭连接,就会导致Server无法正常关闭连接
(2)
等待2MSL可以使本连接产生的所有报文从网络中消失,可以使下一个新连接不会收到失效的连接请求报文段
14.常见的使用TCP/UDP协议的应用层协议
TCP:
HTTP、FTP(文件传输)、SMTP(发送邮件)、POP3(接收邮件)
UDP:
DNS、TFTP(简单文件传输协议)