总结TCP协议各类知识点

news2024/11/25 21:15:00

前言

本篇博客博主将详细地介绍TCP有关知识点,坐好板凳发车啦~

一.TCP特点

1.有连接

TCP传输的过程中类似于打电话的各个过程

2.可靠传输

通过TCP自身的多种机制来保证可靠传输

3.面向字节流

内容是以字节的方式来进行发送与接收

4.缓冲区

TCP有接收缓冲区,也有发送缓冲区

全双工

5.大小不受限

二.TCP格式

1.源/目的端口号

表示数据是从哪个进程来,到哪个进程去

2.4位TCP报头长度

表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是15*4=60。

3.6位标志位

URG:紧急指针是否有效;

ACK:确认号是否有效;

PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走;

RST:对方要求重新建立连接,我们把携带RST标识的称为复位报文段;

SYN:请求建立连接,我们把携带SYN标识的称为同文报文段;

FIN:通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段。

4.16位校验和

发送端填充,CRC校验,接收端校验不通过,则认为数据有问题,此处的检验和不光包含TCP首部,也包含TCP数据部分。

5.16位紧急指针

6.40字节头部选项

三.TCP套接字

3.1ServerSocket API

ServerSocket 是创建TCP服务端Socket的API

3.2Socket API 

Socket 是客户端Socket ,或者服务端中接收到客户端建立连接(accept方法)的请求后,返回的服务端Socket。不管是客户端还是服务端Socket,都是双方建立连接以后,保存的对端信息,及时来与对方收发数据的。

四.TCP可靠与效率机制

可靠机制是不能通过代码实现的,这也是TCP最主要实现的功能之一

4.1确认应答(可靠机制)

4.2超时重传(可靠机制)

原因:网络环境非常复杂,在数据的传输过程中会经过很多交换机,路由器,网线,光纤...这些设备不但要传我们的数据,还要传别人的数据,设备的处理能力也是有上限的,如果网络上的数据太多超过了设备的处理能力就会出现拥堵,就像城市里的堵车一样

1.发送超时

2.响应超时

 

3.超时时间

如果超时时间设的太长,会影响整体的重传效率;

如果超时时间设的太短,有可能会频繁发送重复的包;

故TCP为了保证在任何环境下都能有比较高性能的通信,因此会动态计算这个最大超时时间;

超时重传的时间和重传的次数,是可以能过配置文件手动设置的,不必记忆。

4.3连接管理(可靠机制)

三次握手,四次挥手

4.4滑动窗口(效率机制) 

确认应答是对每一个发送的数据段,都要给一个ACK确认应答。收到ACK后再发送下一个数据段。存在一个比较大的缺点就是效率比较差。

在这个基础上,一次发送多条数据,然后再等待应答,也就说在等待应答的这段时间里发送发没闲着,用来连续发送数据。

所以我们这里可以考虑两种丢包情况:

1)ACK丢了 

2)数据报丢了

滑动窗口与效率

1.效率的高低取决于窗口的大小;

2.窗口越大效率越高;

3.窗口越小效率越低;

4.假设窗口无穷大,此时发送方就完全不需要等待ACK,此时效率就想UDP一样。 

4.5流量控制(可靠机制)

在滑动窗口的基础上,接收方对于发送方的反制,接收方根据自己的接收能力来反向影响发送方后面的发送速率,对发送效率做出限制的机制

4.6拥塞控制(可靠机制)

网络中数据传输的过程是非常复杂的,其中可能会经过很多的交换机,路由器等网络设备,每一个网络设备出现问题都会对传输造成影响

2.工作原理

4.7延迟应答(效率机制)

基于流量控制,引入的提高效率的机制

4.8捎带应答(效率机制)

4.9面向字节流

在面向字节流中的一个典型的问题就是“粘包问题”

4.10TCP异常情况

1.程序崩溃

操作系统会回收进程的资源,其中释放包括⽂件描述符表,就想当于调⽤了对应socket的close, 之后触发FIN操作,进⽽开始进⼊四次挥⼿,和普通的四次挥⼿没有区别

2.正常关机
通过开始菜单或执⾏关机命令,系统会强制结所有进程,回收资源,与程序崩溃执⾏的流程类似
3.主机掉电
⼤多数发⽣的情况
1. 接收⽅掉电
发送⽅并不知道接收⽅挂了,继续发送数据
发送数据后收不到ACK应答,触发超时重传
多次重传都没有收到ACK应答,会尝试进⾏连接重置(RST标识位)
连接重置也失败,只能放弃连接
2. 发送⽅掉电
⼀般出现在⻓连接中,服务器与客户端会维护⼀个⼼跳包(客户端每隔1秒给服务器发送⼀个数
据包,证明⾃⼰存活)
如果服务器⼀直收不到这个⼼跳包,⽐如过了10秒之后还没有收到,就判定为客户端挂了,⾃
⾏断开连接
客户端⽹络恢复之后再次进⾏重连即可
4.网线断开
与主机掉电的情况相同,只不过是主机都是正常⼯作的

尾语

这篇博客到这里就结束啦,希望可以给大家带来帮助~~

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

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

相关文章

Vue基础配置、组件通信、自定义指令

基础配置 Vue框架已经集成了webpack配置 小注意点 vbase 快速生成vue模板 组件名必须是多词格式(驼峰模式) 具体三种写法: ①小驼峰:abcDef.vue ②大驼峰:AbcDef.vue ③中横线:abc-def.vue 假如文件名不符合多次格式的补救办法: 导出重命名…

154 Linux C++ 通讯架构实战9 ,信号功能添加,信号使用sa_sigaction 回调,子进程添加,文件IO详谈,守护进程添加

初始化信号 使用neg_init_signals(); 在nginx.cxx中的位置如下 //(3)一些必须事先准备好的资源,先初始化ngx_log_init(); //日志初始化(创建/打开日志文件),这个需要配置项,所以必须放配置文件载入的后边;//(4)一些初…

Appium无线自动化实用教程

文章目录 简介核心特点工作原理使用Appium进行自动化测试的一般步骤 环境设置安装和启动Appium Server使用Node.js和npm安装Appium Server:启动Appium Server:命令行启动使用Appium Desktop安装和启动Appium Server:使用代码启动appium server 编写测试代…

矩阵的组合

重构 将原始矩阵,重构形状 例如,下图中,将AB重构为一个新的矩阵,CD重构为一个新的矩阵,EF重构为一个新的矩阵,GH重构为一个新的矩阵。 MATLAB实现 clc; clearvars; close all;X1=1:64; X1=reshape(X1,8,8)

基于YOLOv8/YOLOv5的人脸表情识别系统(附完整资源+PySide6界面+训练代码)

本篇博客呈现了一种基于深度学习的人脸表情识别系统,并详细展示了其实现代码。系统采纳了领先的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期版本进行了比较,展示了其在图像、视频、实时视频流及批量文件中识别人脸表情的高准确度。文章深入…

PostgreSql 01 安装,创建用户,创建数据库,创建关系

01.安装postgresql postgreSql 是在linux上 去官网找按照的方式 选择好postgreSql 的版本,已经Linux的发行版本 拿到命令,直接扔到Linux中运行即可 # 下载PGSQL的rpm包 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpm…

【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 内容详情 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》,以IEEE33配电网为分析对象,…

Flutter应用在苹果商店上架前的准备工作与注意事项

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…

智能电表如何在新能源发电领域发挥作用

智能电表具备自动计量计费和数据传输功能,这使其成为配用电管理的核心设备。在新能源发电领域,智能电表能够实时监测和计量新能源发电设备的发电量,确保电能的质量和安全。同时,通过数据传输功能,智能电表可以将新能源…

[云呐]固定资产盘点报告哪个部门写

固定资产盘点报告通常由哪个部门来完成和签发呢?总体来说,固定资产盘点报告主要由资产管理部门或核算部门具体组织拟定并与财务部门共同签发。个别重大报告还需要上级领导或委员会研讨通过。  资产管理部门:  资产管理部门是直接负责公司固定资产管理工作的核心部门,它主导…

网络钓鱼升级 Darcula如何窃取用户信息

近日,网络安全领域一种名为 “Darcula” 的网络钓鱼欺诈(PhaaS)悄然兴起。这种新型钓鱼方式不同于传统的手段,它巧妙地利用了谷歌信息和 iMessage 的富通信服务(RCS),成为了网络犯罪分子的新手段…

分享一种快速移植OpenHarmony Linux内核的方法

移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带 Linux 内核的现有能力,快速移植 OpenHarmony 到三方芯片平台的方法。 移植到三方芯片平台的整体思路 内核态层和用户态层 为了更好的解释整个内核…

一、单层感知器(MCP人工神经元模型)

目录 前言 由来 介绍 算法原理 假设前提 一、前向传递过程(算法训练好后的使用过程) 补充:sign函数 二、训练方法(求解权重w、偏转量b) 写出损失函数 误分点选取 损失函数求导 梯度下降自确定w、b 算法…

救砖刷机------MTK芯片类线刷 救砖 常规线刷不开机 MTK分区表修复【二】

救砖刷机------MTK芯片类线刷 救砖 免授权的一些操作步骤与工具解析【一】 在上期的博文中解析了mtk刷机平台的一些基本选项说明和授权刷写的一些常识。这期将着重说明下mtk机型分区表损坏如何解决。 众所周知。高通分区表在高通线刷包中显而易见,在常规9008刷写中你会正常刷…

主流公链 - Fantom

Fantom:高性能的区块链协议 Fantom是一种开创性的区块链协议,旨在革新去中心化应用和数字金融领域 技术特点 共识机制 Lachesis协议:Fantom使用了Lachesis协议作为其共识算法。Lachesis是一种 异步拜占庭容错(ABFT)共…

基于springboot+vue+Mysql的火车订票管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

TikTok账号封号原因是什么?全面攻略

多人在使用TikTok的过程中都会遇到一些问题,比如为什么TikTok没有浏览量?事实上,这很可能是因为你的账号已被禁止。但为什么它会被封呢?你怎样才能解决它? 一、TikTok账号为什么被封? 1、什么是 TikTok 影…

掼蛋技巧秘籍

1、开始出牌不走牌一定是在理顺子。 2、起手出顺,后面一定还有两三把顺子。 3、上中场就出同花顺就一定还有大炸。 4、双贡顺子、对子是优势,绝对不能放。 5、单贡返牌,给对友单张小牌(5以下),给对手大…

vue3中播放flv流视频,以及组件封装超全

实现以上功能的播放&#xff0c;只需要传入一个流的地址即可&#xff0c;当然组件也只有简单的实时播放功能 下面直接上组件 里面的flvjs通过npm i flv.js直接下载 <template><div class"player" style"position: relative;"><p style&…

站群CMS系统

站群CMS系统是一种用于批量建立和管理网站的内容管理系统&#xff0c;它能够帮助用户快速创建大量的网站&#xff0c;并实现对这些网站的集中管理。以下是三个在使用广泛的站群CMS系统&#xff0c;它们各具特色&#xff0c;可以满足不同用户的需求。 1. Z-BlogPHP Z-BlogPHP是…