HCIP的学习(2)

TCP----传输控制协议

是一种面向连接的可靠传输协议
注:与我之前博客HCIA的学习(2)结合一起看

面向连接:数据传输前收发双方建立一条逻辑通路

特点:

  • TCP是一种面向连接的传输协议
  • 每一条TCP连接有且只能存在两个端点,形成一种端到端的连接形式。
  • 可靠、有序、无丢失和无重复
  • TCP是提供全双工通讯。
    • 发送缓存
      • 想要发送的应用层数据
      • 已经发送但未收到确认的数据
    • 接收缓存
      • 按需到达但还未被应用程序提取的数据
      • 乱序到达的数据
  • TCP是面向字节流的。
源IP、源端口、目IP、目端口----->TCP会话的四元组信息。套接字:IP:Port
TCP报文段

在这里插入图片描述

在这里插入图片描述

确认序列号表明是接收方期望收到发送方发送的下一个字节的序号;且表示之前的所有数据均已接收。–>累积确认

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

在这里插入图片描述

TCP的可靠性

排序机制
MTU---最大传输单元(数据帧,二层,协商在数据链路层)
MSS---最大段长度----TCP分段--->该参数是需要在TCP建立握手过程中通过前两次SYN报文段来进行协商确定。(可选项字段。)

如果在本地进行了分段操作,则不需要进行分片操作

确认机制和重传机制
RTT---往返时间
RTO---超时重传时间;略大于RTT时间--->动态变化的数值。加倍的形式进行变化(可能服务器资源紧缺,避免资源加剧)。

超时重传—快速重传

在快速重传机制中,并不是因为RTO时间到达从而触发重传机制,该重传机制是根据对端的反馈信息进行重传,当连续3次收到相同的ACK报文时,发送端会重传数据。这3个连续的ACK报文被称为冗余ACK

累积确认----选择确认

确认报文在TCP可选项里携带未接收到的数据信息(例:1000-1999缺失)

选择确认机制也是需要进行协商的。不协商默认累计确认,现在大部分电脑携带选择确认机制。

流控—流量控制机制
窗口:指定的是无需等待确认应答,而可以继续发送数据包的最大值。

窗口大小体现在缓存区的大小

TCP要求发送方依据接收窗口rwnd来控制数据的发送量。rwnd等于接收方接收缓存大小减去已存数据量大小。即rwnd变量是可变的。

在这里插入图片描述

TCP面向连接
TCP连接的建立
TCP连接建立需要解决的问题:
1、要使双方均知晓对方的套接字信息。
2、允许双方进行参数协商(MSS、窗口值、是否使用选择确认机制)
3、给各设备进行资源分配

在这里插入图片描述

CLOSED:关闭状态

LISTEN:监听状态

SYN-SENT:同步已发送状态

SYN-RCVD:同步已接收状态

ESTABLISHED:连接已建立状态

  1. 服务器先分配接收缓存空间(服务器状态:CLOSED---->LISTEN)
  2. 客户端建立接收缓存空间,然后发送请求建立连接,同时将接收缓存空间大小发送出去(客户端状态:CLOSED—>SYN-SENT)
  3. 接收到报文,建立发送缓存空间
  4. 服务器发送确认报文并请求建立连接(携带接收缓存空间大小)(全双工通讯)(服务器状态:LISTEN—>SYN-RCVD)
  5. 客户端接受到报文,同时建立发送缓存空间(客户端状态:SYN-SENT—>ESTABLISHED)
  6. 客户端发送确认报文,并且可以携带数据,服务器接受到(服务器状态:SYN-RCVD—>ESTABLISHED)

序列号:seq=x,y

x,y:随机生成

  • 42亿序列号可能用完(序列号=初始+数据大小(以字节为单位:1T>>42亿字节))
  • 为了安全,如果一个固定序列号,那任意机器获取其中一个数据,得到数据大小,然后用固定序列号+数据大小伪造信息,如断开连接等等
  • 循环使用:用四元组信息加一个随机因子进行md5计算得出随机值

数据错乱(序号回绕):例如客户端发送序列号为A的报文并进行超时重传,但A报文并未丢失,直到客户端发送一轮循环(A–>Z–>A),要发新一轮A时,之前的A报文抢先新A报文发送到服务器,会导致正常报文(新A)被服务器丢弃,接收伪(错误)报文(旧A),严重会导致计算机宕机

解决方法:在TCP首部里的选项里加一个时间戳(例:服务器发送报文里携带上一个客户端报文发送的时间和这个报文发送的时间,客户端接收报文时会查看报文里携带的上一个客户端报文发送的时间,如果与客户端现在的时间相差过大就会认为此报文为无效报文丢弃)

RTT就是根据时间戳算出来的,(动态变化)网络波动小,RTT小

**TCP的保活计时器:**2h(当第三次握手报文发出后,客户端挂了,服务器的保持连接时间,如果在时间内客户端回复,即继续用这个连接,如果2h服务器未收到客户端的信息,服务器则发送10次探测报文,如果客户端回复,则保持连接,未收到回复则断开连接)

同步申请建立连接:
在这里插入图片描述

TCP连接释放
1、对双方各自资源的释放过程
2、任何一方都可以在数据传输结束后发送连接释放通知

在这里插入图片描述

ESTABLISHED:连接已建立状态

FIN-WAIT-1:终止等待1状态

CLOSE-WAIT:关闭等待状态

FIN-WAIT-2:终止等待2状态

LAST-ACK:最后确认状态

TIME-WWAIT:时间等待状态

CLOSED:关闭状态

MSL:最大报文段寿命,即一个报文段在网络中能传输的最大时间(2min)

  1. 客户端发送FIN和ACK报文(客户端状态:ESTABLISHED—>FIN-WAIT-1)
  2. 服务器接收到并发送ACK报文(服务器状态:ESTABLISHED—>CLOSE-WAIT)此时进入半关闭状态,时间较长,因为中间服务器还有数据要传输
  3. 客户端接收到ACK报文(客户端状态:FIN-WAIT-1—>FIN-WAIT-2)
  4. 服务器发送FIN和ACK报文(服务器状态:CLOSE-WAIT—>LAST-ACK)
  5. 客户端接收到FIN和ACK报文并发送ACK报文(客户端状态:FIN-WAIT-2—>TIME-WWAIT)
  6. 服务器接收到ACK报文(服务器状态:LAST-ACK—>CLOSED)
  7. 客户端进入TIME-WWAIT状态,需等待2MSL后,中间客户端未接收到任何服务器发送的报文,即进入CLOSED状态

多次u+1:TCP过程中若不携带数据,相当于一个报文

**TCP延迟确认机制:**当服务器与客户端同时没有数据发送时,让服务器发送的第一个报文等待服务器将发送缓存释放的时间,与第二个报文一起发送(机制开启才可以同时释放,也是数据报文和确认报文合并的原因)

同步申请释放连接:
在这里插入图片描述

CLOSING:同时关闭状态

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

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

相关文章

杂记8---多线激光雷达与相机外参标定

背景:本人开源的标定程序,提供大家参考学习 基于棋盘格的多线激光雷达和鱼眼/针孔模型相机外参标定的程序 前言 标定数据,只需要一个棋盘格标定板。把标定板放置lidar 与camera 共视区域,拜拍几个pose进行采集。 基于简谐原则…

MeterSphere和Jmeter使用总结

一、MeterSphere 介绍 MeterSphere 是⼀站式开源持续测试平台,涵盖测试跟踪、接⼝测试、UI 测试和性能测试等,全 ⾯兼容 JMeter、Selenium 等主流开源标准,能够有效助⼒开发和测试团队在线共享协作,实现端到 端的测试管理跟踪…

如何在个人Windows电脑搭建Cloudreve云盘并实现无公网IP远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

【深度学习】手动实现全连接神经网络(FCNN)

🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! 神经网络的本质就是通过参数、线性函数与激活函数来拟合特征与目标之间的真实函数关系。 01 神经网络简介 1.1 引入 神经网络是一门重要的机器学习技术&…

光度立体法的简化求解(已知特殊光源方向)

原理这个博主写的很好 如何获取物体表面的法向量?好好谈谈光度立体法-CSDN博客 Photometric Stereo 光度立体三维重建(一)——介绍-CSDN博客 ​ 不过当图片较大的时候,比如4048*4000这种量级的,矩阵很大,速度要10秒,加了openmp也需要2s; …

项目中遇到的sql问题记录

有一张表,表结构及数据如下: INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) VALUES (approve001, 2021-02-18 00:00:00, tableA, 2024-03-18); INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) …

深度学习03价值学习

Q*类似于先知,知道动作的后果 价值学习是得到一个近似的价值函数

【ARM】DSTREAM上面的各个指示灯代表什么意思?

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 对于DStream仿真器上面的指示灯亮灭代表的意义进行分析。 2、 问题场景 主要对于DStream仿真器的使用过程中,不同的情况下面仿真器的指示灯会进行相应的亮灭。了解一下不同指示灯的亮灭所提示的信息…

【nfs报错】rpc mount export: RPC: Unable to receive; errno = No route to host

NFS错误 问题现象解决方法 写在前面 这两天搭建几台服务器,需要使用nfs服务,于是六台选其一做服务端,其余做客户端,搭建过程写在centos7离线搭建NFS共享文件,但是访问共享时出现报错:rpc mount export: RPC…

2023 re:Invent 使用 PartyRock 和 Amazon Bedrock 安全高效构建 AI 应用程序

前言 “ Your Data , Your AI , Your Future .(你的数据,你的 AI ,你的未来。) 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界…

GitLab/Github从头开始配置秘钥

1、下载git安装包 CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathgit-for-windows/ 拉到页面最底部选择 点进文件夹下载32位或者64位的版本,我的是64位就选择64的版本进行安装 2、傻瓜式安装 3、在相应的文件夹右键选择 UserName为你的用…

Flutter-自定义图片3D画廊

效果 需求 3D画廊效果 设计内容 StackGestureDetectorTransformPositioned数学三角函数 代码实现 具体代码大概300行 import dart:math;import package:flutter/material.dart; import package:flutter_xy/widgets/xy_app_bar.dart;import ../../r.dart;class ImageSwitc…

用C语言打造自己的Unix风格ls命令

在Unix或类Unix操作系统中,ls是一个非常基础且实用的命令,它用于列出当前目录或指定目录下的文件和子目录。下面,我们将通过C语言编写一个简化的ls命令,展示如何利用dirent.h头文件提供的函数接口实现这一功能。 c #include &quo…

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图,我下载的贴图地址为(牙膏盒贴图链接) 2. 打开3DsMax,创建一个长方体,设置长宽高分别为180、45、40毫米 打开材质编辑器,点击漫反射后的按钮 双击“位图” 将材质赋予长…

阿里云云服务器ECS端口多个端口号开通教程

阿里云云服务器ECS端口多个端口号开通教程 1、登录到ECS云服务器管理控制台 2、左侧栏找到【实例与镜像】>>【实例】,找到目标ECS实例,点击实例ID进入到实例详情页 3、切换到【安全组】页面,点击右侧【配置规则】,如下图&…

HTML静态网页成品作业(HTML+CSS)——抗击疫情网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

图论题目集一(代码 注解)

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目一&#xff1a; #include<iostream> #include<queue> #include<cstring> using namespace st…

<商务世界>《第15课 投标文件一般包含的子文件》

1 响应文件封面 招标文件中的响应文件封面是投标人或参与者在提交响应文件时所使用的封面设计。这个封面不仅仅是文件的外包装&#xff0c;更是投标人形象和专业素质的直观展示&#xff0c;对于给招标方留下良好的第一印象至关重要。 首先&#xff0c;响应文件封面通常会包含…

硬盘哨兵Hard Disk Sentinel Pro V6.20.0.0 便携版

Hard Disk Sentinel 是一款功能强大的硬盘监控和分析软件&#xff0c;专为 Windows 用户设计。它可以实时监测硬盘驱动器&#xff08;HDD&#xff09;、固态硬盘&#xff08;SSD&#xff09;、混合硬盘&#xff08;SSHD&#xff09;、NVMe SSD、RAID 数组和外部 RAID 盒子的健康…

uniapp可视范围高度 - 用户屏幕可操作的屏幕高度 - 适用于APP、H5@公众号、纯H5@Chrome

可视范围高度 let heightPx uni.getWindowInfo().windowHeight uni.getWindowInfo().windowTop 官方手册 uni.getWindowInfo() | uni-app官网uni-app,uniCloud,serverless,uni.getWindowInfo()https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html 实测数据 uni.ge…