计算机网络-运输层

问题一、运输层为相互通信的的应用进程提供逻辑通信
问题二、端口和套接字的意义
问题三、理解UDP和TCP协议
问题四、在不可靠的网络上实现可靠传输的工作原理
问题五、TCP的滑动窗口、流量控制、拥塞控制和连接管理
1、端口
应用层所有的应用进程都可以通过运输层传送到IP层,这就是复用;运输层从IP层收到数据报后必须向上交付给指定的应用进程,这就是分用。在运输层使用协议端口号。虽然通信的终点是应用进程,但是只要把要传送的报文交到目的主机的某一个合适的端口,剩下的工作就由TCP来完成。
注意:这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
TCP/IP的运输层 用一个16位的端口号来标识一个端口

2、用户数据报协议UDP
在传送数据之前不需要先建立连接,远地主机在收到UDP报文之后,不需要给出任何确认。

  • 无连接尽最大努力交付
  • 面向报文。对应用进程交下来的报文,在添加首部后就向下交付IP层。既不合并也不拆分,而是保留这些报文的边界
  • 没有拥塞控制
  • 支持一对一、一对多、多对一和多对多的交互通信
  • UDP的首部开销小,只有8个字节(源端口,目的端口,长度,检验和各2个字节),TCP有20个字节

3、传输控制协议TCP
TCP主要特点

  • 面向连接的可靠交付
  • 只能提供1对1的全双工通信
  • 面向字节流。TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。TCP并不知道字节流的含义。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。接收方必须有能力识别收到的字节流,把他还原成有意义的应用层数据

4、可靠传输的工作原理
我们知道,TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力交付,也就是说TCP下面的网络所提供的是不可靠的传输。因此,TCP必须采用适当的措施才能使两个运输层之间的通信变得可靠。
(1)停止等待协议

这里写图片描述
使用上述的确认和重传机制,就可以在不可靠的网络上实现可靠的通信。
被称为自动重传请求协议(ARQ)。
(2)连续ARQ协议和滑动窗口协议
发送放维持发送窗口,意义是:位于发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认,这样可以提高信道的利用率。发送方每收到一个确认,就把发送窗口向前移动一个分组的位置。接收方一般都是采用累积确认的方式。也就是说,接收方不必对收到的的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认。

5、TCP报文段的首部格式
TCP虽然是面向字节流的,但是TCP传输的数据单元确是报文段。一个TCP报文段分为首部和数据两部分。TCP首部20个字节是固定的。

  • 源端口和目的端口:各两个字节
  • 序号:占4字节。TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。(也叫报文段序号)
  • 确认号:占4个字节。是期望收到对方的下一个报文段的第一个数据字节的序号。若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
  • 数据偏移:实际指出TCP报文段的首部 长度
  • 紧急URG:当URG=1表示紧急指针字段有效,表示有紧急数据要传送
  • 确认ACK:TCP规定在连接建立后所有传送的报文段都必须吧ACK置1
  • 同步SYN:在连接建立时用来同步序号,当SYN=1而ACK=0表示这是一个连接请求报文段,若对方同意连接,则在响应报文中使SYN=1和ACK=1。
  • 终止FIN:用来释放一个连接。当FIN=1时表示此报文段的发送方的数据已发送完毕,并要求释放运输连接
  • 检验和 、推送PSH、复位RST、紧急指针、选项

6、TCP可靠传输的实现过程
(1)以字节为单位的滑动窗口
这里写图片描述

  • 虽然A的发送窗口是根据B的接收窗口设置的,但在同一时刻,A的发送窗口和B的接收窗口并不总是一样大,因为网络有时间滞后
  • 对于不按序到达的数据应该如何处理,TCP并无明确规定,如果接受方把不按序到达的数据一律丢弃,那么接收窗口的管理将会比较简单,但是网络资源利用率低。一次TCP通常对不按序到达的数据先是临时存放在接收窗口中,等到字节流中缺少的字节收到后,再按序交付上层的应用进程
  • TCP要求接收方必须有累及积认的功能,这样可以减少传输开销,接收方可以再合适的时候把确认信息捎带上。但是不应过分推迟确认

7、TCP的流量控制
利用滑动窗口实现流量控制!一般来说,我们总是希望数据传输的更快一些。但如果发送方把数据发送的过快,接收方就可能来不及接收,这会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
这里写图片描述
注意到:B向A发送的3个报文段都设置了ACK=1,只有在ACK=1时确认号字段才有意义。

8、TCP拥塞控制
对资源的需求>可用资源!
(1)慢开始和拥塞避免
发送方维持着一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度,并且动态地变化。发送方让自己的发送窗口等于拥塞窗口。我们知道,当网络发生拥塞时,路由器就要丢弃分组,只要发送方没有按时收到应当到达的确认报文,就可以猜测网络出现了阻塞

慢开始算法:
当主机开始发送数据时,由小到大主键增大发送窗口,先把拥塞窗口cwnd设置为一个最大报文段MSS,每收到一个新的报文段确认后,将MSS增加至多一个MSS数值,逐步增大发送方的拥塞窗口,可以使分组注入到网络的速率更加合理。即慢开始的原理就是:每经过一个传输轮次,拥塞窗口就加倍。

慢开始不是指cwnd的增长速度慢,而是值TCP开始发送报文段的时候先设置cwnd=1,然后逐渐增大cwnd。为了防止cwnd增长过大引起网络阻塞,还需要这是一个慢开始门限sstresh状态变量。

  • cwnd>stresh时,使用慢开始算法
  • cwnd>sstresh时,改用拥塞避免方法
  • cwnd=sstresh时,两者均可

拥塞避免:让拥塞窗口cwnd缓慢地增大,即每经过一个RTT往返时间就把发送方的拥塞窗口cwnd+1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长。

无论是在满开始阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞,就把满开始门限sstresh设置为出现拥塞时的发送窗口值的一半。然后把cwnd重新设置为1。

(2)快重传和快恢复
如果发送方设置的超时计数器时限已到但还没有收到确认,那么可能是网络出现了拥塞,致使报文在网路中的某处被丢弃。这种情况下,TCP马上把拥塞窗口cwnd减小到1,并执行慢开始算法,同时将满开始门限值减半。真维斯不使用快重传的情况。

使用快重传的情况:接收方每收到一个失序 的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等待自己发送数据时才进行捎带确认。发送方只要一连收到3个重复确认就应当立即重传对方尚未收到的报文段,而不必等待重传计时器到期,由于发送方能尽早重传未被确认的报文段,可以使整个网络的吞吐量提高约20%。

快恢复:当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把慢开始门限减半,这是为了预防发送拥塞,接下来不执行满开始算法,而是把cwnd设置为慢开始门限减半后的数值,然后开始拥塞避免算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值