总结TCP各类知识点

前言

本篇博客博主将详细地介绍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.hqwc.cn/news/577788.html

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

相关文章

什么是CSS?

一.CSS(层叠样式表):是一种用于描述网页内容任何呈现的样式的语言,它和html(超文本标记语言)一起用于创建网页和Wed应用程序。 W3C标准:网页主要由三部分组成 结构:html 表现&#x…

python爬虫基础-----运算符(第三天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

Candance小白画反相器

1.先建文件夹learn_fxq 2. learn_fxq右键open in Terminal 3. 创建一个新的library 4. 5. file new cellview,要想新建一个反相器电路,这里的type一定要选择schematic,这个代表是电路原理图,需要的就是电路原理图,点击…

电子特气吸收瓶PFA洗气瓶串联反应瓶

定制各式各样PFA洗气瓶,洗涤瓶,反应瓶,多级串联反应装置。 产品特性 1、外观透明方便观察; 2、耐高底温:使用温度-200℃~260℃; 3、耐腐蚀:耐强酸、强碱、王水、氢氟酸和各种有机…

一文读懂「数据分级分类新国标」,美创数据安全分类分级平台助力高效落地!

数据分类分级国标重磅发布! 美创数据安全分类分级平台助力高效落地 ✓ 基于新国标数据分类分级规则框架方法,美创数据安全分类分级平台满足标准要求,融合人工智能技术助力高效实践落地。 ✓ 数据安全分类分级平台全面支持重要数据、个人信息…

Redis与数据库的一致性

Redis与数据库的数据一致性 在使用Redis作为应用缓存来提高数据的读性能时,经常会遇到Redis与数据库的数据一致性问题。简单来说,就是同一份数据同时存在于Redis和数据库,如何在数据更新的时候,保证两边数据的一致性。首先&#…

Linux课程____selinux模式

一、是什么 它叫做“安全增强型 Linux(Security-Enhanced Linux)”,简称 SELinux,它是 Linux 的一个安全子系统 二、有啥用 就是最大限度地减小系统中服务进程可访问的资源(根据的是最小权限原则)。避免…

实践笔记-harbor搭建(版本:2.9.0)

harbor搭建 1.下载安装包(版本:2.9.0)2.修改配置文件3.安装4.访问harbor5.可能用得上的命令: 环境:centos7 1.下载安装包(版本:2.9.0) 网盘资源:https://pan.baidu.com/s/1fcoJIa4x…

基于springboot+vue实现的校企合作项目管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

【容器源码篇】Map容器(HashTable,HashMap,TreeMap的特点)

文章目录 ⭐容器继承关系🌹Map容器🗒️HashTable源码解析构造方法put方法remove方法rehash扩容 🗒️HashMap源码解析构造函数get方法put方法详解 扩容方法详解 🗒️TreeMap源码解析 ⭐容器继承关系 🌹Map容器 键值对映…

少量的样本对于深度学习来说,会造成过拟合还是欠拟合呢?

少量样本通常会导致过拟合,而不是欠拟合。过拟合指模型在训练数据上表现良好,但在未见过的测试数据上表现不佳,因为模型过于复杂,试图捕获训练数据中的噪声和细微特征。由于训练数据有限,模型可能会过度适应这些数据的…

基本数据类型

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 数据类型是一种用于描述数据存储格式的结构。 PL/SQL 和其他编程语言一样也有多种数据类型,PL/SQL 语言中的常用数据类型和 Oracle 数据库中内置的数据类型基本…