1.运输层提供的功能
运输层为相互通信的应用进程提供逻辑通信,使用协议端口号(软件端口)
2.运输层协议
2.1UDP用户数据报协议
UDP在IP数据报服务之上添加了复用分用和差错检测的功能,UDP主要特点:
无连接:发送数据之前不用建立连接
尽最大努力交付:不保证可靠交付
面向报文:发送方的UDP对于应用层交付的报文,既不合并也不拆分,保留这些报文的边界,添加首部之后就向下交付给IP层
UDP没有拥塞控制:网络上出现的拥塞不会使源主机的发送速率降低

源端口:16位
目的端口:16位
长度:整个UDP用户数据报长度(单位:字节)
校验和:计算校验和的时候会在首部之前添加伪首部再进行计算
2.2TCP传输控制协议
TCP提供了可靠传输,流量控制和拥塞控制,TCP主要特点:
面向连接:传输数据之前先要建立TCP连接,传输数据结束要断开TCP连接
TCP连接是一对一的,只能有两个端点
提供可靠交付的服务:通过TCP连接传输的数据,无差错,不丢失,不重复并且按顺序到达
提供全双工通信:TCP连接的两端都设有发送缓存和接收缓存
面向字节流:TCP中的流指的是流入进程或者从进程中流出的字节序列
2.2.1TCP连接
一条TCP连接有两个端点,端点既不是主机的IP地址,也不是应用进程,而是一个抽象概念套接字(socket),套接字等于IP地址:端口号。
2.2.2可靠传输的原理
使用一些可靠传输的协议,当出现差错的时候让发送方重传出现差错的数据;并且在接收方来不及处理接收到的数据时,及时告知发送方降低发送数据的速度。
ARQ(自动重传请求):发送方在发送完一个分组之后就停止发送,等待接收方收到该分组的确认,收到确认后再发送下一个分组(停止等待);超过一定的时间没有收到确认,发送方就会自动重传这个分组(超时重传)。
2.2.3TCP报文段首部格式

源端口:16位
目的端口:16位
序号:TCP对于向上层交付的字节流中的每一个字节按顺序编号,该字段指的是本报文段数据部分中第一个字节的序号
确认号:ACK为1时有效,期望收到对方的下一个报文段数据部分第一个字节的序号(若确认号为N,则表示序号N以前的数据都已经正确接收到了)
数据偏移:指明了TCP报文段首部的长度(单位:4字节)
保留:暂时不使用
6个控制位指明该报文段的性质:
紧急URG:配合紧急指针使用
确认ACK:规定建立连接后传送的报文段该字段都置为1
推送PSH:
复位RST:RST为1时表示先断开连接,再重新建立连接
同步SYN:在建立连接时用来同步序号
终止FIN:用来断开一个连接
窗口:指明了发送该报文段的一方接收窗口的大小,指明了现在允许对方发送的数据量,窗口值是在动态变化的
校验和:校验首部和数据部分,计算校验和的时候会在首部之前添加伪首部再进行计算
紧急指针:URG为1时有效,指明该报文段数据中紧急数据所占的字节数(紧急数据后面的数据为普通数据)
2.2.4可靠传输的实现
1.以字节为单位的滑动窗口
2.超时重传时间的选择(使用一种自适应算法)
2.2.5流量控制
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收,通过滑动窗口实现
2.2.6拥塞控制
拥塞控制就是防止过多的数据注入到网络中,使得网络中的路由器和链路不至于过载,这是一个全局性的过程
几种拥塞控制的方法:
1.慢开始和拥塞避免
慢开始就是由小到大逐渐增大发送窗口,并不是指拥塞窗口的增长速率慢(指数级增长)
2.快重传和快恢复
2.2.7TCP连接的建立和释放
1.TCP三次握手

2.TCP四次挥手
