IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络(传输层) -> 正文阅读

[网络协议]计算机网络(传输层)

概述

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

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

在这里插入图片描述

UDP协议

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

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

UDP校验

在这里插入图片描述

伪首部的第三个字段固定为:全0
伪首部的第四个字段为协议字段:17

在这里插入图片描述

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

TCP协议

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

  1. 序号(seq):占4B。数据传送时,文件被分割为一个个小块,每个小块都有一个编号,序列标记的是发送端发送的几个小块数据中,第一个数据的序号
  2. 确认号(ack):接收方希望收到的下一个序号
  3. 数据偏移:就是数据起始处距离整个报文起始处有多远。其实也就是首部长度。有的时候TCP报文段并不是一个20字节的固定固定首部,有可能加了选项和填充字段。因此只要加了这个长度可变的字段,我们就不清楚这个首部到底有多长。就需要这个数据偏移来确定数据的起始处。
  4. 这个数据偏移是以4B为单位的,比如数据偏移字段的内容为1111,也就是十进制的15,那么他就表示报文段的首部长度为15*4=60B

在这里插入图片描述

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

在这里插入图片描述

TCP的检验和字段和UDP的检验和字段是类似的
UDP的检验和占2B,而且伪首部的第四个字段协议字段为17
TCP的检验和占2B,而且伪首部的第四个字段协议字段为6

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

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

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

在这里插入图片描述

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

TCP可靠传输

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

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

重传时间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. 拥塞窗口的初始窗口值默认是为1的
  2. 一个传输轮次,在考研当中也就是一个RTT
  3. ssthresh:就是指慢开始门限值,刚开始拥塞窗口的大小呈指数增长,达到这个门限值,就开始线性增长。
  4. 线性增长这段就是拥塞避免算法的过程。
  5. 当拥塞窗口达到最大值之后,瞬间变为最开始的这个慢开始状态(cwnd=1)
  6. 重新执行慢开始算法,此时新的门限值就变为最大拥塞窗口的1/2,(24/2=12)

在这里插入图片描述

  1. 快重传:就是TCP可靠传输部分的冗余确认
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:19:05  更:2021-10-17 12:19:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:49:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码