TCP - 传输控制协议

TCP - 传输控制协议

是一种面向连接的可靠传输协议。

特点:
  • TCP是面向连接(虚连接)的传输层协议。

  • 每一条TCP连接有且只能有两个端点。

  • 可靠、有序、无丢弃和不重复。

  • TCP协议提供全双工通讯

    • 发送缓存
      • 存放发送方TCP准备发送的数据。
      • TCP已发送但是没有收到确认的数据。
    • 接收缓存
      • 存放发送端发送来的不按照顺序到达的数据。
      • 按照顺序到达的数据,但并未被应用程序读取。
  • TCP是面向字节流的。TCP将应用层数据仅看成是一串无结构的字节流。

TCP连接的四元组(源IP、源端口、目的IP、目的端口)
套接字 - IP:port

请添加图片描述

确认序列号: 接收方期望收到发送方发送的下一个字节的序号。(序号+数据大小)1、接收方希望接收到的报文序号;2、该序号之前的数据全部接受。— 累计确认机制

请添加图片描述

数据偏移:4字节;保留位:6bit;

选项字段:长度可变。MSS数值、窗口扩大因子、时间戳、选择确认机制。

确认位ACK:当ACK=1时,确认号有意义。再连接建立后,所有传输的报文段都必须将该标志位置设为1。
同步位SYN:SYN=1时,代表该数据是一个连接请求报文。
终止位FIN:FIN=1时,表明此报文段发送方数据已发送完毕,要求释放连接。复位RST:表明TCP连接出现严重错误,需要释放连接并重新建立连接。晋级位URG:代表该报文中存在高优先级的数据,尽快处理。需要配合紧急指针使用。
推送位PSH:接收方应尽快将接收到的数据交付给对应应用程序。

TCP的可靠性

确认、重传、排序、流控。

确认机制

在TCP中,当发送端的数据达到接收主机时,接收端主机会返回一个已收到消息的通知,这个消息叫做ACK(确认应答)。

请添加图片描述

TCP通过肯定的ACK实现可靠的数据传输。当发送端将数据发出之后会等待对端的确认应答,如果有确认应答,说明数据已经成功到达,如果没有,那么数据有可能丢失了
如下图所示,在一定时间内没有等到确认应答,发送端就可以认为数据已经丢失,就会进行重发。
请添加图片描述

未收到确认应答也并不意味着数据一定丢失,有时也有可能是因为数据收到,但是ACK却在传输的途中丢了。因此这种情况也会导致发送端因没有及时收到ACK,而认为数据没有到达目的地,从而进行重传

请添加图片描述

为此就必须要引入一种机制,使其能够识别是否已经接受数据,又能判断是否需要接受

序列号和确认应答号

序列号:1 确认应答号:1+数据长度。

重传机制

MTU:最大传输单元 - 以太网环境下1500字节 - 数据包大小。
MSS:最大数据段长度RTT - 往返时间(即从发送方发送数据开始,到发送方接收到来自接收方的确认消息所经过的时间。)
RTO - 超时重传时间。RTO略高于RTT。快速重传机制 - 根据接收方的反馈信息进行数据重传。客户端连续接收到三次确认序列号相同的ACK报文,则认为数据丢失,需要进行数据传输。
快速重传机制会导致部分数据重复传输,降低数据传输效率。解决思路:选择确认机制。 - 在TCP首部的选项字段中,添加上未接收到的数据信息。接收方接收到该确认报文后,会根据选项字段内容,重新传输缺少的数据部分。是否执行进行协商 - 根据三次握手的前两次SYN报文中进行协商。RTO数值是动态变化的数值。超时间隔加倍。

流控机制

窗口:窗口的大小时可以指定的,窗口大小指的是无需等待确认报文,而可以直接发送的数据包的最大值。接收窗口(rwnd)- 开始等于整个缓存区大小,浮动变化。

TCP要求发送方依据rwnd发送数据量

请添加图片描述

TCP连接的建立

TCP连接需要解决的问题:
1、知晓对端的套接字信息
2、允许双方进行参数的协商(窗口值、选择确认机制、是否使用窗口扩大因子)
3、对设备进行资源分配(队列、缓存空间)

探测报文

当TCP连接建立成功,但是客服端突发故障。服务器会等待2小时,若2小时候没收到任何客户端的数据,服务器发送一个探测报文,以后每隔75秒。
TCP连接的释放
1、TCP连接释放实际是释放本地分配给TCP连接的资源
2、本地没有新的数据需要发送

请添加图片描述

静态路由

请添加图片描述

方法一:[r1]ip route-static 23.0.0.0 24 12.0.0.2  点到多点
方法二:[r1]ip route-static 23.0.0.0 GE0/0/1  点到点(一条导线上只能有两个节点)ARP代理:当收到ARP报文后,路由器冒充真实应答者回复ARP报文,将自己接口的MAC地址进行回复。限制条件:应答路由器必须是网络可达的静态ARP表项(下一跳)[r1]ARP ststic 12.0.0.1 00e0-fcd3-1943
方法三:[r1]ip route-static 23.0.0.0 24 GE0/0/0/1 12.0.0.2
方法四:[r1]ip route-static 192.168.3.0 24 23.0.0.3(前置条件全部实现) - 下两跳

路由器下一跳写的是我自己,则认为是直连关系;

子网划分和子网汇总

172.16.0.0/16
子网划分:主机位借给网络位,借的位叫子网位,子网位可变
172.16.00000000.0
172.16.10000000.0子网汇总:取相同,去不同
172.16.1.0/24
172.16.2.0/24
172.16.3.0/24172.16.0.0/22

缺省路由 0.0.0.0 1.1.1.1

环路接口的解决解决方法:TTL(生存时间)空接口:NULL0(路由最长掩码匹配规则)修改优先级 pre
静态路由与BFD的联动
[r1]bfd ---激活BFD协议
[r1]bfd aa bind peer-ip 10.1.12.1
[r1-bfd-session-aa]discriminator local 10
[r1-bfd-session-aa]discriminator remote 20
[r1-bfd-session-aa]commit ---提交配置
接着配置r2BFD
[r1]display bfd session all[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa[r1-bfd-session-aa]discriminator remote 20
[r1-bfd-session-aa]commit ---提交配置
接着配置r2BFD
[r1]display bfd session all[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FDMC8200中文资料PDF数据手册引脚图参数功能介绍概述参数规格参数产品手册

产品概述: 此器件在一个双 Power 33 (3 mm X 3 mm MLP) 封装中包括了两个特制的 N 沟道 MOSFET。 开关节点已经内部连接,可实现同步降压转换器的轻松布置和布线。 控制 MOSFET (Q1) 和同步 MOSFET (Q2) 可提供最佳功率效率。 产品特性: Q1…

计算机一级word 文字处理理论+实操试题

计算机一级word 文字处理理论实操试题 单选题: 1、在Word编辑状态下,要将另一文档的内容全部添加在当前文档的当前光标处,应选择的操作是依次单击______。 A.“文件”选项卡和“打开”项 B.“文件”选项卡和“新建”项 C.“插入”选项卡…

外贸业务员的工作时间安排,抓紧收藏!

平时很多外贸业务员应该都差不多,大部分时间会用来不知所措的摸鱼,关于工作内容并无规划。今天给大家分享一个工作时间安排,赶紧码住! 销售联系潜在客户时间计划表 目标:在不给潜在客户造成压力的情况下,建立联系并推…

WEB前端作业一

作业1:生成表格 模版 <!DOCTYPE html> <html><title>作业表格一</title><body><h1><b>工商银行电子汇款单</b></h1><p><table border"1" cellspacing"0"><tr><td colspan&qu…

最小化战斗力差距——算法思路

题目链接&#xff1a;1.最小化战斗力差距 - 蓝桥云课 (lanqiao.cn) 可分析&#xff0c;把一个数组分成两组&#xff0c;求一组的最大值与另一组的最小值的差值的绝对值最小&#xff0c;可以转换为求任意两个相邻数字之间的最小插值的绝对值。 可看图示&#xff1a; package lan…

记录工作中莫名其妙的bug

1、问题&#xff1a;办公室的电脑突然除了我之外&#xff0c;都不能访问我们的线上系统了 原因&#xff1a;因为是内网&#xff0c;同事有刚刚升级了Windows11&#xff0c;配置的DNS被清了&#xff0c;还有同事换了公司的新电脑&#xff0c;还没有配DNS 位于&#xff1a;C /Win…

如何在CentOS系统部署AMH主机面板并实现无公网IP远程连接

文章目录 推荐1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装Cpolar4. 配置AMH面板公网地址5. 远程访问AMH面板6. 固定AMH面板公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击…

数据库SQLServer——插入数据

1.插入数据语法 INSERT INTO table_name(column_list) VALUES (value_list); --简写 INSERT INTO table_name VALUES (value_list);INSERT table_name VALUES (value_list); 2.实例 2.1基本形式&#xff08;不安全&#xff09; insert into 学生表01 values(李明,男,1.70) …

python实现--二叉搜索树

什么是二叉搜索树 二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是一种特殊类型的二叉树&#xff0c;它具有以下性质&#xff1a; 每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。 对于任意节点&#xff0c;其左子树中的所有节点的…

python 调用redis创建查询key

部署redis apiVersion: apps/v1 # 描述api版本&#xff0c;默认都用这个 kind: Deployment # 资源类型&#xff0c;可以配置为pod&#xff0c;deployment&#xff0c;service&#xff0c;statefulset等等 metadata: # deployment相关的元数据&#xff0c;用于描述deployment的…

LeetCode199题:二叉树的右视图(python3)

代码思路&#xff1a;深度优先搜索&#xff0c;每次总访问右子树&#xff0c;value_depth用dict存放&#xff0c;深度为索引&#xff0c;存放节点的值&#xff0c;stack从根节点[(root, 0)]开始&#xff0c;添加node和depth class Solution:def rightSideView(self, root: Opt…

测试工具分享:高效完成测试工作!

说在前头 在社会上&#xff0c;特别是技术圈&#xff0c;大家会有刻板印象&#xff1a;测试工作的含金量不高。因为大家觉得测试不重要&#xff0c;导致给测试的薪水也偏低&#xff1b;这又反向导致好的人才不想来测试行业&#xff0c;测试从业人员的平均水平、工作体现的价值…

贪心算法(算法竞赛、蓝桥杯)--线段覆盖

1、B站视频链接&#xff1a;A29 贪心算法 P1803 线段覆盖_哔哩哔哩_bilibili 题目链接&#xff1a;凌乱的yyy / 线段覆盖 - 洛谷 #include <bits/stdc.h> using namespace std;struct line{int l,r;bool operator<(line &b){return r<b.r;//重载小于号,按右端…

Windows系统安装GeoServe结合内网穿透实现公网访问本地位置信息服务

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

ai写作一键生成,分享6种好用的写作软件,一定要看

在写文章时&#xff0c;我们常常会遇到灵感丧失、词句不顺的情况&#xff0c;为了解决这一问题&#xff0c;小编为大家推荐几款实用的AI写作软件&#xff0c;一同来探索一下吧&#xff01; 一、爱制作AI 爱制作AI是一款专注于写作的软件&#xff0c;强大的智能数据库让它备受…

Docker进阶:离线安装docker社区版(docker-18.06.3-ce)

Docker进阶&#xff1a;离线安装docker社区版&#xff08;docker-18.06.3-ce&#xff09; 1、准备离线安装所需的文件2、传输文件至目标Linux系统3、卸载旧版Docker4、离线安装Docker1、解压上传的Docker安装包2、拷贝文件到/usr/bin目录3、将 Docker 注册为系统服务4、重新加载…

力扣203. 移除链表元素

写法1、头节点 和 后面的节点 删除规则不一致 class Solution {public ListNode removeElements(ListNode head, int val) {//如果不建虚拟头节点&#xff0c;那删头节点和删后面的节点&#xff0c;逻辑是不一样的//头节点可能连续多个命中val,所以有while&#xff0c;不是ifwh…

2684. 矩阵中移动的最大次数

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 给你一个下标从 0 开始、大小为 m x n 的矩阵 grid &#xff0c;矩阵由若干 正 整数组成。 …

How to upgrade NBU cluster from 10.0.0.1 to 10.2.0.1

1. Environment Statement OS: SuSE 12 SP4 InfoScale: 7.4.2 NBU: 10.0.0.1 2. Download EEB patch and utf8 tools 2.1 Donwload utf8 check tools from Veritas. utf8 character check before NBU upgrade, upgrade will be failed if “NBDB” is using utf8 characte…

thinkphp 微信商户转账到微信小程序用户零钱(v3密钥版)

这几天做项目有一个需求,小程序用户提交记录后,商家后台审核通过自动转账到用户的微信零钱中. 今天分享下如何实现自动打款, 一种是用v2密钥的接口:企业付款到零钱 一种是用v3密钥的接口:微信商户转账到零钱(听说是v2接口的微信商户容易被限制,后来就改成v3了) php后端代码 v3…