计算机网络-传输层

TCP连接 与 套接字

什么是『TCP连接』?
TCP连接是一种抽象的概念,表示一条可以通信的链路。
每条TCP连接有且仅有两个端点,表示通信的双方。且双发在任意时刻都可以作为发送者和接收者。

什么是『套接字』?
一条TCP连接的两端就是两个套接字。
套接字=IP地址:端口号。
因此,TCP连接=(套接字1,套接字2)=(IP1:端口号1,IP2:端口号2)




UDP报文头

在这里插入图片描述



TCP报文段格式

在这里插入图片描述
标志符

  • URG —为1表示高优先级数据包,紧急指针字段有效。
  • ACK —为1表示确认号字段有效
  • PSH —为1表示是带有 PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满(很少使用)
  • RST —为1表示出现严重差错。可能需要重现创建TCP连接。还可以用于拒绝非法的报文段和拒绝连接请求。
  • SYN —为1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步
  • FIN —为1表示发送方没有数据要传输了,要求释放连接。



确认应答(ACK)机制

在这里插入图片描述
TCP将每个字节的数据进行了编号,即为序列号。
每一个ACK都带有对应的确认序列号,告诉发送者,我已经收到了哪些数据;下一次你从哪里开始发




超时重传机制

在这里插入图片描述

主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B;
如果主机A在一个特定的时间间隔内没有收到B发来的确认应答,就会进行重发




滑动窗口

在这里插入图片描述




流量控制

TCP支持根据接收端的处理能力,来决定发送端的发送速度,这个机制就叫做流量控制。

  • 接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK端通知发送端;
  • 窗口大小字段越大,说明网络的吞吐量越高;
  • 接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端;
  • 发送端接收到这个窗口之后,就会减慢自己的发送速度;
  • 如果接收端缓冲区满了,就会将窗口置为0;这时发送方不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端



拥塞控制

根据当前网络的拥堵程度,来决定发送端的发送速度,这个机制就叫做拥塞控制。

  • TCP引入“慢启动”机制,先发少量的数据,探探路,摸清当前的网络拥堵程度,再决定按照多大的速度传输数据;
  • “慢启动”只是指初始时慢,但是增长速度非常快;
  • 发送开始时,定义拥塞窗口大小为1;
  • 每次收到一个ACK应答,拥塞窗口加1;
  • 每次发送数据包的时候,就将拥塞窗口和接收端主机反馈的窗口大小作比较,取较小的值作为实际发送的窗口
    在这里插入图片描述
    拥塞避免算法是让拥塞窗口缓慢地增大,即cwnd加1,而不是如慢开始算法一样加倍
    根据上图的实例进行分析,一开始的慢开始算法的指数增长是很恐怖的,所以为了防止拥塞窗口cwnd增长过快需要设置一个门限ssthresh,这里是16。

(1)当 cwnd < ssthresh 时,使用上述的慢开始算法。

(2)当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。

(3)当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。(通常做法)

无论在慢开始阶段还是在拥塞避免阶段,只要发送方没有收到确认,就认为这时候拥塞了,就要把慢开始门限ssthresh设置为此时发送方窗口值的一半(上例中是把发送方窗口值24修改为12)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。

这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕
快重传算法 和 快恢复算法

上述慢开始算法和拥塞避免算法能保证网络出现拥塞时进行相应的处理,而快重传和快恢复是一种拥塞预防的方式,此时网络可能尚未出现拥塞,但已经有拥塞的征兆,因此得作出一些预防措施。
快重传原理:因为TCP具有累计确认的能力,因此接收者收到一个分组的时候不会立即发出应答,可能需要等待收到多个分组之后再同一发出累计确认。但快重传算法就要求,接收者如果接收到一个乱序的分组的话,就必须立即发出前一个正确分组的确认应答,这样能让发送者尽早地知道有一个分组可能丢失。
快恢复原理:当发送者收到同一个分组的三个确认应答后,就基本可以判断这个分组已经丢失了;这时候无需等待超时,直接执行『乘法减小加法增大』:
将慢开始门限减半;
将发送窗口减半(不设为1);
使用拥塞避免算法




TCP的连接建立

在这里插入图片描述



TCP连接的释放

在这里插入图片描述



小结

  • 运输层有两个主要的协议:TCP和UDP。它们都有复用和分用,以及检错的功能。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工通信的可靠信道。当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。
  • UDP的主要特点是:(1)无连接;(2)尽最大努力交付;(3)面向报文;(4)无拥塞控制;(5)支持一对一、一对多、多对一和多对多的交互通信;(6)首部开销小(只有4个字段:源端口,目的端口,长度,检验和)
  • TCP的主要特点是:(1)面向连接;(2)点对点,即一对一;(3)提供可靠交付的服务;(4)提供全双工通信;(5)面向字节流
  • TCP的拥塞控制采用了四种算法,即慢开始、拥塞避免、快重传和快恢复。在网络层,也可以使路由器采用适当的分组丢弃策略(如主动队列管理AQM),以减少网络拥塞的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值