计算机网络(传输层)

概述

在这里插入图片描述

传输层检测包括:首部和数据部分
网络层:只校验首部
在这里插入图片描述

在这里插入图片描述

补充(冲刺)
在这里插入图片描述
源端口号和目的端口号是为了实现复用和分用
UDP长度:包括首部和数据部分
校验和:校验整个数据报()

在这里插入图片描述

复用就是应用层的数据通过传输层传送到网络层
分用:网络层将数据传送到传输层,传输层通过分用技术,将数据分发给各个进程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

UDP协议

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能
在这里插入图片描述
在这里插入图片描述

UDP长度:包括首部和数据部分
校验和:伪首部+首部+数据部分采用二进制反码求和,再把和求反码就是校验和字段的内容

UDP校验

在这里插入图片描述

伪首部的第三个字段固定为:全0
伪首部的第四个字段为协议字段:17
UDP的校验:就是在UDP数据报之前加上一个伪首部,伪首部只在校验的时候存在

在这里插入图片描述

注意在接收端伪首部+首部+数据部分求和的结果中,这个校验和字段是在发送时被修改过了,不再是全0

TCP协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 序号(seq):占4B。数据传送时,文件被分割为一个个小块,每个小块都有一个编号,序列标记的是发送端发送的几个小块数据中,第一个数据的序号
  2. 确认号(ack):接收方希望收到的下一个序号
  3. 数据偏移:就是数据起始处距离整个报文起始处有多远。其实也就是首部长度。有的时候TCP报文段并不是一个20字节的固定首部,有可能加了选项和填充字段。因此只要加了这个长度可变的字段,我们就不清楚这个首部到底有多长。就需要这个数据偏移来确定数据的起始处。
  4. 这个数据偏移是以4B为单位的(一种八片首饰),比如数据偏移字段的内容为1111,也就是十进制的15,那么他就表示报文段的首部长度为154=60B。数据偏移的最大值是15,因此,首部长度最大是154=60B
  5. TCP和IP数据报的首部都有20B的固定部分
  6. 对确认号进行区分:链路层的后腿N帧协议中确认号指的是收到了n以及n之前的全部元素

在这里插入图片描述

  1. 紧急位URG:说明有更高级别的数据需要传送,就不需要排队了。假如说发送方在正常发送数据,突然接收方说现在不能继续接收文件了,让发送方赶快停止发送数据,当发送方收到这个信息之后,他就需要赶快叫停,
    1.1 这个发送法的叫停,一定是需要输入一些命令,发送这些命令就是在这个TCP发送缓冲区新加入一些数据,缓冲区是队列,要想让这些命令优先发送,就需要设置紧急位为1,让这个命令先发送
    在这里插入图片描述
    紧急位是发送法向接收方发送时需要的,而PSH是接收方的一个紧急处理。接收方的缓冲区内有很多的数据,正常应该是依次向应用层传送,但是如果有一个数据要优先往应用层传送,就需要让这块数据PSH位改为1
    在这里插入图片描述

在这里插入图片描述

TCP的检验和字段和UDP的检验和字段是类似的
IP数据报的校验和只检验首部
UDP的检验和占2B,而且伪首部的第四个字段协议字段为17
TCP的检验和占2B,而且伪首部的第四个字段协议字段为6
紧急指针:只有在URG(紧急位)为1时候才生效,他指出了紧急字段的长度或者数据数是多少(了解)

TCP连接管理(三次握手-建立连接,四次握手-断开连接)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 注意SYN报文段和确认报文段都不能携带数据,所以这两个字段的seq标识都是随机分配的。
  2. 第一轮:第一轮发送的这个连接请求报文是没有数据部分的,因此这个序号seq标识的就是这个报文段的序号,这个序列号是随机的,因为客户和服务器并没有建立连接,客户并不知道要发送哪一个序号
  3. 第二轮:有了大写ACK,就一定要有小写ack,
    ack标记了期待发送方发送的第一个字节编号,也就是x+1
    seq=y,这个y也是随机的
  4. SYN这个标识只有在第一步和第二步中才是1,即:连接请求和连接请求接受的时候才是1。其他时刻都为0,也就是说发送数据过程中SYN=0

在这里插入图片描述

  1. FIN报文段也不携带数据,但是也要消耗掉一个序号,这个序号u等于前面已经传送过的数据的最后一个字节的序号+1
  2. 客户和服务器双方都可以去释放连接
  3. 第一轮:对于客户机先要释放连接的情况,客户机发送一个释放报文段
  4. 第二轮:客户端到服务器端的连接释放了,也就是客户他停止了发送数据。但是服务器还可以继续发送数据。就像男孩已经说完了,但是女孩还可以继续说话。所以第二轮完成后,处于一个半关闭的状态
    第二轮中的序列V等于服务器前面已经传送过的数据的最后一个字节的序号+1
  5. 第三轮:第三轮和第二轮的ack确认号是一样的,因为第二轮之后,客户端并没有发送任何数据
    第三轮中序号w的值取决于在第二轮回复确认之后,服务器端所发送的量的多少(男生不说话了,女生继续说了很多)
  6. 第四轮:客户端收到了服务端连接释放的报文段,那么接下来他就要回复一个确认报文段。
  7. 在发送完成之后,需要等待一个时间段2MSL。这样才算是彻底的关闭。
    因为如果客户端发送完确认段报文之后,直接关闭,有可能这个报文在中途发送失败,那么这个服务器端就会收不到这个确认报文段,收不到确认他就会重传这个连接释放的报文段。客户端会在2MSL的时间段内,收到服务端这个重传的服务器的连接释放报文段,接下来客户端会重新回复一个确认,并且重新启动这个2MSL计时器。
  8. 由于TCP是全双工的,所以他们双方都可以提出终止连接

TCP可靠传输

网络层是不可靠传输,那就需要通过上层来进行可靠传输,我们知道,传输层有两种协议,可以通过TCP实现可靠传输,如果传输层使用UDP协议,那就需要通过应用层来实现可靠传输

在这里插入图片描述

  1. TCP可以实现累计确认,以保证我们在发送大量字节的时候不用逐个确认
  2. 重传包括:超时重传和冗余确认两种机制

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
超时重传:发送方如果在规定的时间内,没有收到接收方传来的确认信息,那么发送方就会认为自己之前发送的数据丢失了,就会重新发送数据
在这里插入图片描述

重传时间RTTs:在发送数据的时候,每个报文都会有一个RTT,如果发送出去了三个报文段,那就将这三个报文段的RTT求一个平均值,这就是一个RTTs。RTTs是自适应的

在这里插入图片描述

超时重传就是A向B发送多个连续报文段(1,2,3),1先到了B端,然后B向A发送一个确认报文,并且告诉A下一个要收到的数据是2,之后3到了B端,这时B不会接收3,还是向A发送一个报文,告诉A要数据2。直到收到数据2才会继续收数据3。如果一直收不到数据2,A在经过一个时间段(RTTs)之后就会认为之前传送的数据2丢失了,会重新传送数据2。

但是这样传送的话数据需要经过一个重传时间才能够重新发送。可能这个过程需要等待很久。

这时候,就出现了冗余确认技术,就是说B端要保证数据按顺序接收,所以说只要发送方收到3个对于报文段1的冗余ACK就认为报文段1丢失了,发送方就会重新发送报文段1。
在这里插入图片描述

TCP流量控制

流量控制的本质:接收方让发送方发慢一点,使得接收方来得及接收
在传输报文段的过程,接收方并不是收到一个报文段就确认一个,而是采用累计确认的方式,把这些全部按序收到的报文段用一个确认报文段告诉发送方自己下一步希望收到的报文段,还有自己的接收窗口大小。
在这里插入图片描述

在这里插入图片描述

注意:
在这里插入图片描述

注意:

  1. 在最后一次主机B向主机A传送了一个确认报文段,并且告诉主机A不要再发送数据。因为此时主机B的接收窗口可能已经满了。
  2. 当主机B将接收缓冲区的数据发送过上层之后,主机B向主机A发送一个报文,告诉主机A可以继续发送数据。
  3. 但是这次的传送报文可能在B向A传送中途会被丢失,这时候就会出现A在等待B的通知,B在等待A的数据。就会出现这种类似死锁的现象。
  4. 为了解决这个现象,TCP为每一个连接设置了一个持续计时器,在主机A收到主机B的0窗口通知后,主机A就会启动持续计时器,每隔一段时间,主机A就向主机B发送一个零窗口探测报文段,主机B收到这个探测报文之后给出当前的窗口值。

TCP拥塞控制

在这里插入图片描述

  1. 拥塞控制:就是多个发送方往接收方发送数据,结果由于同时使用一个交换节点,就会使得网络非常的繁忙,甚至出现一个拥塞。接收方会察觉到出现了拥塞,但是不知道是由于那几台主机发送数据过快OR发送数据过多导致的。所以说拥塞控制是一个全局性的控制
    拥塞控制是由于网络发送了堵塞,导数数据迟迟到不了接收方
  2. 流量控制:它是一种点对点之间的通信量的控制,如果接收方来不及接收传来的数据,他就会要求发送方慢点发送。

在这里插入图片描述
相同颜色搭配使用

在这里插入图片描述

  1. 拥塞窗口的初始窗口值默认是为cwnd=1的
  2. 一个传输轮次,在考研当中也就是一个RTT
  3. ssthresh:就是指慢开始门限值,刚开始拥塞窗口的大小呈指数增长,达到这个门限值,就开始线性增长。
  4. 线性增长这段就是拥塞避免算法的过程。
  5. 当拥塞窗口达到最大值之后,瞬间变为最开始的这个慢开始状态(cwnd=1)
  6. 重新执行慢开始算法,此时新的门限值就变为最大拥塞窗口的1/2,(24/2=12)
  7. 注意:上图中,我们规定了接收窗口足够大,那么发送窗口就取拥塞窗口的值

在这里插入图片描述

  1. 快重传:就是TCP可靠传输部分的冗余确认 ,只要收到3个重复,就进行快恢复
  2. 收到3个重复是指连续的4个一样的!!
  3. 发送窗口的最大值:是取接收窗口和拥塞窗口两者中的最小值
  4. 接收窗口:是接收方根据自己的缓冲所定的,放到的是他自己要发送的TCP报文段里面,首部当中的一个窗口字段,把这个东西发送给发送方,相当于把自己的接收窗口告诉了发送方
  5. 收到三个重复的确认,就执行快重传,直接将门限值变为拥塞窗口的一半,从新的门限值开始线性增大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sparky*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值