1 tcp协议20问

news2025/1/11 11:11:52
1什么是TCP网络分层

在这里插入图片描述

1.1分层描述

在这里插入图片描述
网络访问层:
在这里插入图片描述
在这里插入图片描述

2 TCP的三次握⼿中为什么是三次?为什么不是两次、四次?

在这里插入图片描述
两次握手的话,服务端会单方面认为建立已经成功,但是对于客户端而言,可能只是开个玩笑的,这样对于服务端来说是不公平的,也是链接资源的浪费.
4次呢,有点浪费资源了,完全没必要,3次就够了

3TCP的四次挥⼿为什么是四次?为什么不能是三次?

在这里插入图片描述
首先,tcp的挥手是终止一次tcp的链接。也就是说在断开一次tcp的链接的时候,客户端和服务端总共需要发送4次报文。用来确认链接已经断开。
如图: 客户端发送的报文种FIN给服务端,服务端进行确认并响应ACK给客户端表示可以断开。
同时 服务端表示我也需要断开,因此向客户端也发送了一个FIN,客户端接收到服务端的FIN之后也进行了响应ACK=y+2.这就是4次挥手的报文.

why不能优化成3次呢?

假设优化成3次,那么就是在服务端发送客户端的响应ACK和服务端发送自己的FIN的地方,合并成一个报文,但是合并之后,可以实现么?
当服务端接收到客户端的断开请求后FIN,服务端只是进入了CLOSR_WAIT的状态(也就是再等等的意思,首先针对这个请求进行确认即发送ACK确认,其次的话就是服务端可能有些资源还没释放,请求请求没有处理掉,所以ACK,FIN之间可能有大的延迟)
服务端最终的LAST_ACK发送出去的时候,由于响应时间长(30S),会导致客户端进行重发,进行重试请求.

断开请求FIN
确认请求ACK
4、为什么 SYN/FIN 不包含数据却要消耗⼀个序列号?

凡是需要对端确认的,⼀定消耗TCP报⽂的序列号。
SYN 和FIN需要对端的确认,所以需要消耗⼀个序列号。
在这里插入图片描述
在这里插入图片描述
如果没有seq,则有可能会导致重发,因此只要的需要端的确认,必须有seq

5、什么是半连接队列?什么是SYN Flood攻击?

客户端⼤量伪造 IP 发送 SYN 包,服务端回复的 ACK+SYN 去到了⼀个「未知」的 IP 地址,势必会造
成服务端⼤量的连接处于 SYN_RCVD 状态,⽽服务器的半连接队列⼤⼩也是有限的,如果半连接队列满,也会出现⽆法处理正常请求的情况。
在这里插入图片描述
客户端大量伪造的ip,发起第一次链接SYN,那么服务端进行响应ACK+SYN去,这样服务器就会处于半连接状态。成为SYN FLOOD攻击或洪范攻击。

6、说说TCP快速打开(TFO)的原理!

TCP 快速打开(TCP Fast Open,TFO)
TFO 是在原来 TCP 协议上的扩展协议,它的主要原理就在发送第⼀个 SYN 包的时候就开始传数据了,
不过它要求当前客户端之前已经完成过「正常」的三次握⼿
快速打开分两个阶段:请求 Fast Open Cookie 和 真正开始 TCP Fast Open

Fast Open Cookie
我们知道tcp建立连接需要进行3次握手,这里的是一种快速打开方式TFO。
在这里插入图片描述
当发送SYN包的时候,head种包含一个cookie,只不过这个时候还是空的,表明客户端要请求fast open cookie .
服务端收到SYN包的时候,生成cookie的值并且连同ACK_SYN_COOKIE一起发送给客户端
客户端在收到cookie会缓存在本地,这个阶段就是fast open cookie

TCP Fast Open

在这里插入图片描述
在该阶段,客户端就会携带了cookie,并由服务端进行确认cookie的合法性,如果合法,就发送ack确认,如果不合法就丢弃包,走正常的3次握手
在这里插入图片描述
在这里插入图片描述

7、TCP报⽂中的时间戳有什么作⽤?

在这里插入图片描述
上图是报文的头部,时间戳就是加在head的选项中
下图是时间戳的构成,分别是:类别,长度,发送方时间戳,回显时间戳
在这里插入图片描述
RTT
在这里插入图片描述
假设在没有启动时间戳的时候,发送重传的情况下,计算时延是比较尴尬的,如上图所示,但是开启了时间戳就不一样了,可以进行计算.
在启⽤ Timestamps 选项以后,因为 ACK 包⾥包含了 TSval 和 TSecr,这样⽆论是正常确认包,还是
重传确认包,都可以通过这两个值计算出 RTT。

在这里插入图片描述
当seq满了以后,会从来开始,也就是回绕
在这里插入图片描述

8、TCP 的超时重传时间是如何计算的?

TCP 具有超时重传机制,即间隔⼀段时间没有等到数据包的回复时,重传这个数据包。
这个重传间隔也叫做超时重传时间(Retransmission TimeOut, 简称RTO)
在这里插入图片描述
RTO设置的太小的话,没必要,有可能导致不必要的重传,因为服务端可能是延迟,但是设置太大,需要很久才会重传.
在这里插入图片描述
在这里插入图片描述

9、能不能说⼀说 TCP 的流量控制?

在这里插入图片描述
通过设置服务端的缓冲区的大小来决定tcp的数据传输大小。
服务端响应的ack中就有窗口大小,用于通知客户端缓存区的大小.

接收窗⼝(接收缓冲区中空闲的部分)
在这里插入图片描述
buffer中可能存在上一次发送,但是还没有处理完的数据。如上图所示
在这里插入图片描述
在这里插入图片描述
发送端比较慢的情况就是:发送的buffer中有可以待发送的数据
发送到比较快的情况就是:buffer中的全都发出去了,但是可能还没有收到ack.
因为接收端的响应ACK中包含了窗口大小,发送端就可以进行控制.

10、如何理解 TCP 的keep-alive的原理?

在这里插入图片描述
TCP 协议的设计者考虑到了这种检测⻓时间死连接的需求,于是乎设计了 keepalive 机制。
它的作⽤就是探测对端的连接有没有失效,通过定时发送探测包来探测连接的对端是否存活,不过默认
情况下需要 7200s 没有数据包交互才会发送 keepalive 探测包,往往这个时间太久了,我们熟知的很多组件都没有开启 keepalive 特性,⽽是选择在应⽤层做⼼跳机制。

11、聊⼀聊TCP中的端⼝号

端⼝号的英⽂叫Port,英⽂原意是"港⼝,⼝岸"的意思
端⼝号与⽹络分层
端口号位于传输层,并且是在TCP的头里面
分别由源断开,目标端口
在这里插入图片描述
TCP ⽤两字节的整数来表示端⼝,⼀台主机最⼤允许 65536 个端⼝号的
在这里插入图片描述
已登记的端⼝号:范围1024~49151
● MySQL:3306
● Redis:6379
● MongoDB:27017

临时端⼝号:范围49152~65535
一般访问目标服务器,自己的主机开通的源端口一般使用临时端口号

12、TCP场景问题1

在这里插入图片描述

13、TCP场景问题2

服务端收到 IP 数据包解析以后,它怎么知道这个分组应该投递到上层的哪⼀个协议(UDP 或 TCP)?
在这里插入图片描述
在这里插入图片描述

14、TCP场景问题3

在这里插入图片描述

15、讲⼀讲telnet的⽤法

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

16、讲⼀讲netstat的⽤法

netstat 命令⽤于显示各种⽹络相关信息
在这里插入图片描述

17、讲⼀讲tcpdump的⽤法

tcpdump 则是⼀个命令⾏的⽹络流量分析⼯具,功能⾮常强⼤,⼀般我们⽤来抓TCP的包。

tcpdump -i any

以上命令表示监听所有的网卡,一般不这么用

tcpdump -i any host 192.168.0.1

表示监听这个IP

18、讲⼀讲wireshark的⽤法

tcpdump,它是命令⾏程序,对 linux 服务器⽐较友好,简单快速适合简单的⽂本协议的分析和处理。
wireshark 有图形化的界⾯,分析功能⾮常强⼤,不仅仅是⼀个抓包⼯具,且⽀持众多的协议。

19、TCP 和 UDP 的区别?

在这里插入图片描述

20、如果要你来设计⼀个QQ,在⽹络协议上你会考虑如何设计?

在这里插入图片描述

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

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

相关文章

形式化验证笔记

参考视频: 形式化验证的原理与新应用【DatenLord达坦科技】形式化验证入门(我强推!!!!!) 形式化验证:在状态机表征的空间里面进行搜索,验证某个模型是否按规范执行且测试覆盖率达到1…

058:mapboxGL监听键盘事件,通过panBy控制前后左右移动

第058个 点击查看专栏目录 本示例是介绍演示如何在vue+mapbox中监听键盘事件,控制前后左右移动。 本例通过panBy方法来移动一定距离的地图,通过.addEventListener的方法来监听键盘的按键动作。注意这里面style中一定要设置好pitch,不能为0,不然就撞墙,不能移动了。 直接复…

OpenCV 笔记(2):图像的属性以及像素相关的操作

Part11. 图像的属性 11.1 Mat 的主要属性 在前文中,我们大致了解了 Mat 的基本结构以及它的创建与赋值。接下来我们通过一个例子,来看看 Mat 所包含的常用属性。 先创建一个 3*4 的四通道的矩阵,并打印出其相关的属性,稍后会详细…

数据库索引种类

文章目录 索引的优缺点优点缺点 聚簇索引特点优点缺点 非聚簇索引特点优点缺点使用场景: 在MyISAM与InnoDB中的使用 索引的优缺点 索引概述 MySQL官方将索引定义为帮助MySQL高效获取数据的数据结构。索引的本质是一种排好序的快速查找数据结构,用于满足…

YOLOv5/v7/v8改进实验(五)之使用timm更换YOLOv5模型主干网络Backbone篇

🚀🚀 前言 🚀🚀 timm 库实现了最新的几乎所有的具有影响力的视觉模型,它不仅提供了模型的权重,还提供了一个很棒的分布式训练和评估的代码框架,方便后人开发。更难能可贵的是它还在不断地更新迭…

(H5轮播)vue一个轮播里显示多个内容/一屏展示两个半内容

效果图 : html: <div class"content"><van-swipeclass"my-swipe com-long-swipe-indicator":autoplay"2500"indicator-color"#00C4FF"><van-swipe-itemclass"flex-row-wrap"v-for"(items, index) in M…

Kubernetes 进阶

Kubernetes 进阶  Service 控制器  Ingress 对象(对外暴露应用)  管理应用程序配置  K8s 数据卷与持久数据卷  再谈有状态应用部署:StatefulSet控制器  K8s 安全访问控制  K8s 部署利器Helm初探 Service 控制器 • Service存在的意义 • Pod与…

更改Kali Linux系统语言以及安装zenmap

目录 更改Kali Linux系统语言 安装 Zenmap 更改Kali Linux系统语言以及安装zenmap 在使用kali的过程中&#xff0c;会遇到许多问题&#xff0c;其中一个就是看不懂英语&#xff0c;下面是如何更换语言的步骤。 更改Kali Linux系统语言 首先&#xff0c;打开kali&#xff0…

学信息系统项目管理师第4版系列32_信息技术发展

1. 大型信息系统 1.1. 大型信息系统是指以信息技术和通信技术为支撑&#xff0c;规模庞大&#xff0c;分布广阔&#xff0c;采用多级 网络结构&#xff0c;跨越多个安全域&#xff1b;处理海量的&#xff0c;复杂且形式多样的数据&#xff0c;提供多种类型应用 的大系统 1.1.…

python安装、输入输出、注释、中文编码、编码规范等基础语法

一、概述 1、简介 Python的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年的圣诞节期间&#xff0c;Guido开始写Python语言的编译器。Python这个名字&#xff0c;来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的…

30 Python的matplotlib模块

概述 在上一节&#xff0c;我们介绍了Python的pandas模块&#xff0c;包括&#xff1a;Series、DataFrame、数据读取和写入等内容。在这一节&#xff0c;我们将介绍Python的matplotlib模块。matplotlib模块是一个Python的2D绘图库&#xff0c;可以实现各种类型的图形绘制&#…

【试题021】C语言算术运算符例题

1.题目&#xff1a;表达式4.8-1/25%3的值是 &#xff1f; 2.代码解析&#xff1a; //表达式4.8-1/25%3的值是?printf("%d\n", (4 - 1 / 2 5 % 3));//分析&#xff1a;多个运算符看优先级高低次序//根据口诀可知&#xff1a; /和%都排第三&#xff0c;和-排第四//所…

AutoSAR入门:应用背景及简介

1、应用背景 在我们现在的汽车行业里面&#xff0c;汽车电子的发展过程中&#xff0c;我们发现有一些新的趋势汽车电子系统的复杂性不断增长。 我们现在可以看到车辆有越来越多的功能&#xff0c;那么这些功能呢&#xff0c;也在往这个控制器上进行集中&#xff0c;比如说我们现…

修炼k8s+flink+hdfs+dlink(六:学习k8s)

一&#xff1a;增&#xff08;创建&#xff09;。 直接进行创建。 kubectl run nginx --imagenginx使用yaml清单方式进行创建。 二&#xff1a;删除。 kubectl delete pods/nginx 三&#xff1a;修改。 kubectl exec -it my-nginx – /bin/bash 四&#xff1a;查看。 …

【Leetcode每日一题 1726】「组合|哈希表」同积元组

2023.10.19 本题重点&#xff1a; 1.题目的理解&#xff0c;如何转化成一种组合问题 2.哈希表的使用 题目介绍&#xff1a; 给你一个由 不同 正整数组成的数组 nums &#xff0c;请你返回满足 a * b c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元…

11. 机器学习 - 评价指标2

文章目录 混淆矩阵F-scoreAUC-ROC 更多内容&#xff1a; 茶桁的AI秘籍 Hi, 你好。我是茶桁。 上一节课&#xff0c;咱们讲到了评测指标&#xff0c;并且在文章的最后提到了一个矩阵&#xff0c;我们就从这里开始。 混淆矩阵 在我们实际的工作中&#xff0c;会有一个矩阵&am…

【计算机网络笔记】OSI参考模型基本概念

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

分布式存储 vs. 全闪集中式存储:金融数据仓库场景下的性能对比

作者&#xff1a;深耕行业的 SmartX 金融团队 张德敏 近年来随着金融行业的高速发展&#xff0c;经营决策者及监管机构对信息时效性的要求越来越高&#xff0c;科技部门面临诸多挑战。例如&#xff0c;不少金融机构使用数仓业务系统&#xff0c;为公司高层提供日常经营报表&am…

阿里云服务器x86计算架构ECS规格大全

阿里云企业级服务器基于X86架构的实例规格&#xff0c;每一个vCPU都对应一个处理器核心的超线程&#xff0c;基于ARM架构的实例规格&#xff0c;每一个vCPU都对应一个处理器的物理核心&#xff0c;具有性能稳定且资源独享的特点。阿里云服务器网aliyunfuwuqi.com分享阿里云企业…

InitializeComponent报错(提示不存在)

我是c#新手。为了解决这个问题&#xff0c;需要按照以下步骤进行。、 WPF应用(.NET Framework) 解决问题 首先&#xff0c;确保项目的类型为WPF应用(.NET Framework)&#xff1b; 然后&#xff0c;代码的位置应正确处于项目的MainWindow.xaml.cs&#xff1b; 最后&#xff0c…