目录
1.运输层概述
1.1.进程间基于网络的通信
在计算机网络通信中,网络层提供了主机间的逻辑通信 ,通信两端主机中的进程 为通信的真正实体,而运输层则直接提供应用进程间的逻辑通信
1.2.TCP/IP体系结构运输层中的两个重要协议
1.传输控制协议TCP :为上层提供面向连接 的可靠数据传输服务;传输数据前需建立TCP连接(逻辑连接),传输结束后释放TCP连接,实现机制复杂
2.用户数据报协议UDP :为上层提供无连接 的不可靠数据传输服务,使用前无需建立连接,实现机制简单
3.TCP和UDP的区别
|-----------------|-------------|
| 用户数据协议UDP | 传输控制协议TCP |
| 无连接,不可靠传输(实时通信) | 需要建立连接,可靠传输 |
| 支持单播、多播、广播 | 仅支持单播 |
| 面向应用报文 | 面向字节流 |
| 首部仅8字节 | 首部20-60字节 |
1.3.运输层端口号、复用、分用
1.运输层端口号
TCP/IP体系中用端口号来区分和标识应用层的不同进程,长度为16比特
(端口号仅具有本地意义,且TCP和UPD的端口号各自独立)
2.发送方复用与接收方分用
2.传输控制协议TCP
2.1.TCP报文段的首部格式
TCP报文段的首部由 24字节的固定首部+最大40字节的扩展首部构成,下面介绍TCP首部各字段的作用
1.源端口字段和目的端口字段:16比特,用于写入源端口号(目的端口号),标识发送(接收)该TCP报文段的应用进程
2.序号字段、确认号字段、确认标识位ACK
序号字段seq:32比特,指出本TCP报文段数据载荷的第一个字节的序号
确认号ack:32比特,指出对方收到下一个TCP报文段的数据载荷第一个字节的序号 ,同时对之前已正确接收且按序到达的最后一个TCP报文段的确认
确认标识位ACK:ACK=1时,确认号有效(TCP连接建立后,传送的TCP报文段ACK默认为1)
3.数据偏移字段 :4比特,以4字节为单位,指出TCP报文段的数据载荷部分距TCP报文段起始处的长度(即TCP报文段的首部长度)
4.保留字段、检验和字段
保留字段:6比特,置为0,为今后保留
检验和字段:16比特,检测误码
5.窗口字段 :16比特,以字节为单位,指出发送方 接收窗口的大小,表面接收方的接收能力(用接收方的接收能力控制发送方数据发送量(流量控制))
6.同步标识位SYN:用于双方建立连接,SYN=1 && ACK=0 为TCP连接请求报文,SYN=1 && ACK=1 为TCP连接回应报文;SYN=1的报文段不能携带数据,但会消耗一个序号
7. 终止标识位FIN:用于释放连接,FIN=1表明数据发送完毕,释放TCP连接
8.复位标识段RST :复位TCP连接,RST=1表明TCP连接出现差错/拒接非法TCP报文段(TCP连接)
**9.推送标识位PSH:**PSH=1,发送方不再累计发送而直接发送,接收方收到该报文立刻上报
10.紧急标识位URG和紧急指针
紧急指针:16比特,以字节为单位,表明紧急数据的长度,紧急标识位URG=1时,紧急指针有效
2.2.TCP的运输连接管理
'三报文握手'建立TCP连接和'四报文挥手'释放TCP连接
建立TCP连接的目的:使TCP双方能够确知对方存在;使TCP双方能够协商一些参数;使TCP双方能够对运输实体资源进行分配和初始化
"三报文握手"建立TCP连接
1.初始双方TCP进程处于关闭 状态,TCP服务在在准备结束后进入监听 状态,被动等待TCP客户进程的请求
2.TCP客户在准备结束后发送TCP连接请求报文段(SYN=1,seq=x) ,并进入同步已发送 状态;TCP请求报文不携带数据但会消耗序号x
3.TCP服务器若接收该请求,则发送TCP连接请求确认报文段(SYN=1,seq=y,ack=x+1) ,并进入同步已接收状态;TCP连接请求确认报文段同样不携带数据,消耗序号y,并告知TCP客户进程已正确接收序号为x的报文段,下一位为x+1
4.TCP客户接收到TCP连接请求确认报文段后发送一个普通TCP确认报文段
(ACK=1,seq=x+1,ack=y+1) ,同时进入连接已建立 状态;普通TCP确认报文若不携带数据则不消耗数据
5.TCP服务器接收后进入连接已建立状态,双方可以进行可靠数据传输
"四报文挥手"释放TCP连接
6.数据传输结束后,TCP双方释放TCP连接。TCP客户进程的应用进程主动通知主动关闭TCP连接 ,TCP客户进程释放TCP连接释放报文段(FIN=1,ACK=1,seq=u,ack=v) ,并进入终止等待1状态
7.TCP服务器进程收到TCP连接释放报文段,发送普通的TCP确认报文段(ACK=1,seq=v,ack=u+1) ,进入关闭等待 状态;此时TCP客户到TCP服务器这一方向连接断开(半关闭状态,TCP服务器仍可正常发送数据)
8.TCP客户收到普通的TCP确认报文后进入停止等待2 状态,若此时TCP服务器应用进程无数据发送,则关闭TCP服务器对TCP的连接(被动关闭连接)
9.TCP服务器进程发送TCP连接释放报文段(FIN=1,ACK=1,seq=w,ack=u+1) 并进入最后确认状态
10.TCP客户收到该TCP连接释放报文后,针对该报文发送普通的TCP确认报文(ACK=1,seq=u+1,ack=w+1) 并进入时间等待状态
11.TCP服务器收到该报文后进入关闭 状态,而TCP客户进程还需等待2MSL(MSL:最长报文段寿命) 后进入关闭 状态;等待2MSL的目的是确保TCP服务器进程能收到最后一个TCP确认报文段而进入关闭状态
2.3.TCP流量控制和拥塞控制
1.流量控制的基本概念
TCP的应用程序提供了流量控制机制,以解决因发送方发送数据太快导致接收方来不及接收而造成接收方的接收缓存溢出,从而丢失数据
2.拥塞控制的基本概念
拥塞是指对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能因此变差
拥塞控制的任务是为防止过多数据注入网络,使网络能够承受现有的网络负荷
3.闭环拥塞控制
闭环控制是基于反馈的控制方法,包括三个部分:·监测拥塞发生信息 ·传达拥塞信息 ·调整网络以解决拥塞
TCP采用隐式反馈算法进行闭环控制:即源点自身通过对网络的观察来推断是否发生拥塞
2.4.TCP的四种拥塞控制方法
基本信息:发送窗口swnd=min(cwnd,rwnd);接收窗口rwnd;
拥塞窗口cwnd:只要网络中没有出现拥塞,拥塞窗口就可增大,否则减少
慢开始门限ssthresh:cwnd>ssthresh 慢开始算法
cwnd>ssthresh 转用拥塞避免算法
cwnd=ssthresh 慢开始或拥塞避免
1.慢开始算法和拥塞避免算法
TCP双方建议连接后,cwnd初始化为1,采用慢开始算法逐渐增大cwnd直至发生拥塞;当cwnd>=ssthresh时,采用拥塞避免算法,即每个**传输轮次(发送+确认)**结束后cwnd+1
当网络中出现超时重传 认定为出现拥塞,ssthresh=cwnd/2 cwnd=1,重新开始慢开始算法
2.快重传和快恢复
快重传:发送方无需等待重传计时器超时,尽快重传(接收方无论是否正确接收都发送接收确认),发送方收到3个连续的重复确认后,立即重传
快恢复:发送方一旦收到三个连续的重复确认后,ssthresh=cwnd=1/2cwnd,并开始拥塞避免算法
2.5.TCP可靠传输的实现
TCP基于以字节为单位的滑动窗口实现可靠传输
发送窗口前沿有三种移动情况:
前移:正常接收发送
不动:1.未收到新的ACK确认,且窗口值保持不变 2.收到新的ACK确认但窗口缩小
回缩:发送窗口缩小
发送窗口后沿有两种移动情况:
不动:未收到新的ACK确认
前移:收到新的ACK确认