传输层
传输层
传输层的功能是使数据在两个进程之间传输,传输层的协议有两个分别为TCP协议和UDP协议
TCP的原理
确认应答机制(基于安全的机制)
当发送方发送数据后,接收方会对接受到的数据进行应答
应答的方式是:接受到的数据序号的最大值+1,表示在这个序号之前的数据都已经接受到,下一个数据应该从这个序号开始。
超时重传机制(基于安全的机制)
当发送方发送的数据报超过一定时间间隔没有收到应答的数据报,表示之前发送的数据报可能出现丢包,就重新发送。
丢包的情况:
1. 发送的数据报丢包
2. 确认应答的数据报丢包
连接管理机制(基于安全的机制)
- 三次握手
1. 客户端给服务器发送请求建立连接的同步报文段SYN,申请建立客户端到服务端的连接
2. 服务器收到后给客户端发送SYN和ACK。
SYN是请求建立服务端和客户端的连接,ACK是对第一次SYN的应答。
客户端收到ACK后建立客户端到服务器的连接。
3. 客户端收到后发送ACK对第二次SYN的应答。
服务器收到ACK后建立服务器到客户端的连接。 - 四次挥手
1. 客户端发送FIN,申请断开客户端到服务端的连接
2. 服务端收到后,发送确认号ACK。ACK是对第一次FIN的应答
3. 服务端再次发送FIN。FIN是请求关闭服务端到客户端的连接。
3. 客户端收到后,发送ACK。表示对第二次FIN的应答
服务端收到后,断开服务端到客户端的连接。
客户端经过2MSL(2个最大报文生存时间)后,如果没有收到异常,就关闭客户端到服务端的连接
滑动窗口(基于效率的机制)
- 发送方式:同时发送多个数据报,同时接收多个确认应答的数据报。
- 窗口大小指:不需要确认应答可以发送的数据的最大值
- 滑动窗口的大小=min(拥塞窗口大小,流量控制窗口大小)
- 发送端发送后,没有收到应答数据报,就将数据放到发送缓冲区,等到有确认应答数据报时,需要滑动的大小为接收到最大的确认应答数据报-滑动窗口中的最小序号
流量控制(基于安全的机制)
- 流量控制:TCP根据接收端的处理能力,来决定发送端的发送速度。
- 发送端和接收端都有发送和发送缓冲区,接收端每接收到一个数据报都会在确认应答数据报中返回接收端接收缓冲区的剩余大小。该字段就间接控制了发送端滑动窗口的大小。
拥塞控制(基于安全的机制)
- 发送端在不了解网络的情况下,采用慢启动机制,先发送少量的数据,以确定网络的拥堵情况决定以多大的速度传输。
- 拥塞控制窗口的大小间接控制了发送端滑动窗口的大小。
延时应答机制(基于效率的机制)
- 数据传输所需的时间往往大于接收方处理数据报的时间,因此如果接收端接受数据报后直接返回,那么接收方依据接收缓冲区返回的流量控制窗口就小了,那么如果稍等一会儿等到接收方将接收缓冲区的数据报做以处理,那么接收缓冲区接受的数据就能更多一点,返回给接收端响应的确认应答数据报中的流量控制窗口就能更大,发送端的滑动窗口可能就会变大(滑动窗口=min(拥塞控制窗口,流量控制窗口),网络数据传输的吞吐量越高。
捎带应答(基于效率的机制)
如果某一端要给另一端发送数据报,同时要对接收的数据报进行应答(发送数据报),可以两个数据报一起发送。
比如:三次握手的第二阶段
发送的是SYN+ACK
SYN是申请建立本端到对端的连接
ACK是对接受到的数据报就行确认应答
UDP的特点
- 无连接,不可靠
- 面向数据报
- 有接收缓冲区,无发送缓冲区
- 发送的数据大小受限
TCP与UDP的区别
- TCP是有连接的,可靠传输,效率相比UDP差;UDP是无连接的,不可靠,效率更高
- TCP是面向字节流的,可以多次发多次收;UDP是面向数据报的,只能一次发一次收。
- TCP既有发送缓冲区,又有接收缓冲区;UDP没有发送缓冲区,只有接收缓冲区
- TCP发送的数据大小不限;UDP发送的数据大小受限(最大64k)
- TCP和UDP是全双工的,也就是既可以发送数据又可以接收数据。