(秋招 春招)软件开发 软件测试面试题——计算机网络部分_如果发送端收到了一个被损的ack或nak,发送端处于什么状态

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

(2)POST:传输实体的主体(告诉服务器信息)。

(3)PUT:传输文件。要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

(4)HEAD:获得报文首部。HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认资源的有效性及资源更新的日期等。

(5)DELETE:删除文件。与PUT相反的方法,DELETE方法按请求URI删除指定的资源。

(6)OPTIONS:用来查询针对请求URI指定的资源支持的方法。

(7)TRACE:追踪路径。让web服务器将之前的请求通信返回给客户端的方法。

(8)CONNECT:要求在代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

6. GET与POST请求区别

(1)get重点在从服务器上获取资源,post重点在向服务器发送数据。

(2)get传输数据是通过url请求,以filed(字段)= value的形式,置于url后,并用“?”连接,多个请求数据间用“&”连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的。POST传输数据是通过HTTP的pot机制,将字段与对应值封存在请求是体重发送给服务器,这个过程对用户是不可见的。

(3)GET传输的数据小,因为受到URL长度限制,但效率较高。POST可以传输大量数据,所以上传文件时只能用POST方式。

(4)GET是不安全的,因为URL是可见的,可能会泄漏私密信息,如密码等
POST较GET安全性较高。

(5)GET方法只能支持ASCII字符,向服务器传的中文字符可能会乱码。POST支持标准字符集,可以正确传递中文字符。

7.http持久连接

HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。可是当发送请求一份包含多张图片的HTML文档对应的Web页面,会产生大量的通信开销。为解决上述TCP连接的问题,HTTP/1.1和一部分的HTTP/1.0想出了持久连接(HTTP Persistent Connections)的方法。持久连接的特点是,只要任意一端没有提出断开连接,则保持TCP连接状态。

持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外减少开销的那部分时间,使HTTP请求和响应都能更早的结束,这样web界面显示速度也提高了。

8.HTTP/1.1与HTTP/1.0不同

在HTTP/1.1中,所有的连接默认都是持久连接。

但在HTTP/1.0中,每进行一次HTTP通信就要断开一次TCP连接。

9.什么是http协议无状态(stateless)协议?怎样解决无状态协议?

无状态协议是指自Http协议自身不对请求与响应之间的通信状态进行保存,也就是说在http这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了能快速地处理大量的事务,确保协议的可伸缩性,而特意把HTTP协议涉及的这么简单。

为了实现期望保存状态的功能,可以通过Cookie技术和Session会话保存。

10. Cookie和Session技术

Cookie和Session都是用来跟踪浏览器用户身份的会话方式。

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文中内的一个叫作Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,会检查究竟是从哪一个客户端发送来的请求,然后对比服务器上的记录,最后得到之前的状态信息。

Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识去服务器中寻找属于自己的内存空间。所以说Session的实现是基于Cookie,Session需要借助Cookie存储客户的唯一性标识。

11.Cookie和Session的区别

(1)Cookie数据是存放在客户的浏览器上,Session数据放在服务器上。

(2)Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全应当使用Session。

(3)Session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑减轻服务器性能方面,应当使用Cookie。

(4)单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie。

(5)可以考虑将登陆信息等重要信息存放为Session,其他信息如果需要保留,可以放在Cookie中。

12.http协议由什么组成?

一、请求报文

请求行:包括请求方法、请求URI和HTTP版本

各种首部字段:请求首部字段、通用首部字段、实体首部字段

空行

报文主体

二、响应报文

状态行:包括响应结果的状态码,原因短语和HTTP版本

各种首部字段:响应首部字段、通用首部字段、实体首部字段

空行

报文主体

13.HTTP响应状态码的类别

类别 原因短语

1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加的操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器请求出错

14.HTTP响应状态码

(1)2XX 成功

200 OK:表示从客户端发来的请求在服务器端被正常处理了。

204 No Content:代表服务器接收的请求已经成功处理,但返回的响应报文中不含实体的主体部分。

206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。

(2)3XX 重定向

301 Moved Permanently:永久性重定向。表示请求的资源已经分配了新的URI,以后使用资源应使用现在资源所指的URI。

302 Found:临时性重定向。该状态表示请求的资源已被分配了新的URI,希望用户本次使用新的URI访问。

303 See Other:表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。

304 Not Modified:表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Modified。

307 Temporary Redirection:该状态码与302 Found有着相同的含义。尽管302标准禁止POST变成GET,但实际使用时大家并不遵守。307会遵照浏览器标准,不会从POST变成GET。

(3)4XX 客户端错误

400 Bad Request:该状态码表示请求报文中存在语法错误。

401 Unauthorized:该状态码表示发送的请求需要通过HTTP认证的认证信息。另外若之前已进行过一次请求,则表示用户认证失败。

403 Forbidden:表明对请求资源的访问被服务器拒绝了,服务器没有必要给出拒绝的详细理由。

404 Not Found:表明服务器上无法找到请求的资源。

(4)5XX 服务器错误

500 Internal Server Error:表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。

503 Service Unavailable:该状态码表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

15.http和https的区别?

https是在http上加入加密处理、认证以及完整性保护的协议。对通信报文进行加密,防止内容被窃听。查明对手的证书,避免遭遇伪装。验证报文的完整性,看请求或响应在传输图中是否被攻击者拦截并篡改。https就是身披ssl(secure socket layer)协议外壳的http。

16.https怎么加密的

HTTPS采用对称密钥加密(共享密钥加密)和非对称密钥加密(公共密钥加密)两者并用的混合加密机制。在交换密钥环节使用非对称密钥加密方式,客户端收到服务器发送的 “公开密钥”以及公钥证书,在验证证书真实有效后,制作可以加密解密的“对称密钥”,再用“对称密钥”为数据加密,用“公开密钥”为“对称密钥”加密。服务器端收到加密后的钥匙和数据,用“私钥”打开加密后的“对称密钥”,用“对称密钥”打开加密后的数据。之后用“对称密钥”加密并交流。这种方式保证了数据的加密通信,并且加快了处理速度,提高了效率。

17.HTTPS和HTTP现在哪个用得多?虽然HTTPS安全但是申请证书开销也大,那为什么HTTPS安全就要用这个?

因为https加密通信与纯文本通信相比会消耗更多的cpu以及内存资源,整体的通信量不可能避免的会增加,能够处理的请求数量必定对随之减少,因此如果是非敏感信息则使用http通信,只有在包含个人信息等敏感数据时,才利用https加密通信。因为使用证书可以证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在。

18.SSL具体原理?既然HTTPS要申请证书,怎么申请的?

SSL是安全套接层,用SSL建立安全通信线路后,就可以在这条线路上进行http通信了。SSL提供加密、认证以及摘要功能。

服务器的运营人员向数字认证机构提出公开密钥的申请,数字认证机构在判明提出申请者的身份之后,会对已经申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。

19.讲一下密码学,哈希算法,DH密钥交换协议

密码学现在是用来保护信息安全的核心技术。现代密码学主要有三个方向:私钥密码(对称密码)、公钥密码(非对称密码)、安全协议。区分对称加密和非对称加密的标准是:加密和解密是否使用相同的密钥,如果使用相同的密钥则是对称加密,如果加密和解密使用的密钥是不同的那么则是非对称加密。

哈希(Hash),一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出通常称作散列值、数字指纹或消息摘要。常见的哈希算法有:MD4、MD5、SHA1、SHA224、SHA256、SHA384、SHA 512。

DH密钥交换协议主要解决的是密钥分发问题,是公钥密码学的开端,它的安全性是基于计算Diffie-Hellman问题的难解性。计算 Diffie-Hellman 的难解性:给定元祖计算困难。这个协议的具体描述为:

Alice选择群G中的秘密元素a,计算,将A发送给Bob;
Bob选择群G中的秘密元素b,计算,将B发送给Alice;
Alice计算双方共享密钥;
Bob计算双方共享密钥。

20.你对web攻击方面了解哪些?

对web应用的攻击模式有以下两种:主动攻击和被动攻击。

主动攻击是指攻击者通过直接访问web应用,把攻击代码传入的攻击模式,该模式是直接针对服务器上的资源进行攻击,代表性的攻击是SQL注入攻击和OS命令注入攻击。

被动攻击是指利用圈套策略执行攻击代码的攻击模式。在被攻击得过程中,攻击者不直接对目标web应用发起攻击。该模式中具有代表性的攻击是跨站脚本攻击(xss)和跨站点请求伪造。
实施web应用的安全对策大致可以分为以下两个部分:客户端的验证和web应用端(服务器端)的验证,其包括输入值验证和输出值转义。

21.介绍一下跨站脚本攻击(XSS),SQL注入攻击,OS命令注入攻击?如何预防

跨站脚本攻击是指通过存在安全漏洞的web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。它可能造成以下影响:利用虚假输入表单骗取用户个人信息;利用脚本窃取用户的Cookie值,在被害者不知情的情况下,帮助攻击者发送恶意请求;显示伪造的文章或图片。

SQL注入是指针对web应用使用的数据库,通过运行非法的SQL而产生的攻击。它可能会造成非法查看或者篡改数据库内的数据、规避认证、执行和数据库服务器业务关联的程序等。

OS命令注入攻击是指通过Web应用执行非法的操作系统命令达到攻击目的。

【sql注入防护】

过滤关键字

限制mysql关键字以输入的形式注入sql,防止恶意代码对数据库产生破坏。

控制输入字符长度

防止输入以16进制码注入,以长度限制,补充过滤关键字的漏洞。

关闭php错误提示

防止sql输入试探,避免用户试探数据库名称、数据表名称等。

数据库权限控制

控制用户权限,限制用户通过恶意代码注入进行恶意操作。

【xss攻击防护】

对用户的提交内容进行可靠的验证;例如查询关键字、url、http、post 数据等,特别是可以让用户提供 HTML 的地方;

避免 cookie 中泄漏用户的隐私;

尽量采用 post 请求而非 get 请求;

对用户提交信息总的 img 等 link 链接,检查是否有重定向回功能为链接;

对 http refer 进行严格的效验

22.输入网址到显示内容,流程是什么?

(1)在客户端浏览器中输入网址URL;

(2)发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址;

(3)客户端浏览器与WEB服务器建立TCP(传输控制协议)连接;

(4)客户端浏览器向对应IP地址的WEB服务器发送相应的HTTP或HTTPS请求;

(5)WEB服务器响应请求,返回指定的URL数据或者错误信息;如果设定重定向,则重定向到新的URL地址;

(6)客户端浏览器下载数据,解析HTML源文件,解析的过程中实现对页面的排版,解析完成后,在浏览器中显示基础的页面;

(7)分析页面中的超链接,显示在当前页面,重复以上过程直至没有超链接需要发送,完成页面的全部显示。

23.交换机和路由器的区别

交换机(英文:Switch,意为“开关”)是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。

路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号的设备。

二者的区别:

(1)交换机工作在第二层,数据链路层;路由器工作在第三层,网络层。

(2)在数据链路层只能识别物理地址,因此当交换机的某个端口收到一个数据帧时,交换机会读取数据帧中相应的目标地址的MAC地址,然后在自己的MAC地址表中查找是否有目标MAC地址的端口信息,如果有,则把数据帧转发到相应的端口;如果没有,则向除源端口外的所有端口进行转发。

(3)当路由器的某个接口收到一个包时,路由器会读取包中相应目标的逻辑地址的网络部分,然后在路由表中进行查找。如果在路由表中找到了目标地址的路由条目,则把包转发到路由器的相应接口;如果在路由表中没有找到目标地址的路由条目,那么,如果路由器配置了默认路由,就根据默认路由的配置转发到路由器的相应接口;如果路由器中没有配置默认路由,则将该包丢弃,并返回不可达信息。

(4)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域。

(5)路由器提供了防火墙的服务:路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

24.常见应用层协议端口号

常用服务 协议 端口号

HTTP 超文本传输协议 TCP 80

HTTPS 安全文本传输协议 TCP 443

POP3从邮件服务器上接收邮件 TCP 110

SMTP 把邮件转发到邮件服务器 TCP 25

FTP文件传输协议(控制) TCP 21

FTP文件传输协议(数据) TCP 20

DNS域名系统 TCP/UDP 53

25.输入网址可以自己带一个端口号吗?

URL中的端口号是可选项,用户省略时则自动使用默认的端口号,因为可以通过应用协议名称判断。

26.TCP首部、IP数据包和以太网包首部

每个包首部至少都包含两个信息:一个发送端和接收端地址,另一个是上一层的协议类型。

TCP首部中包含源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(用以表示该包中数据是发送端整个数据中第几字节的序列号)以及校验和(用以判断数据是否损坏)。

IP数据包中IP首部后紧跟着TCP首部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面的数据是TCP还是UDP的信息。

以太网包首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太数据的协议。

27.简述UDP与TCP的区别和应用场景

(1)TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

(2)TCP是动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的。UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。

(3)TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

(4)可靠性。TCP是可靠交付:无差错,不丢失,不重复,按序到达。UDP是尽最大努力交付,不保证可靠交付。

(5)服务对象。TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。

(6)TCP有拥塞控制和流量控制保证数据传输的安全性。UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。

(7)TCP首部开销大,首部20个字节。UDP首部开销小,8字节。(源端口,目的端口,数据长度,校验和)。

应用场景:

若通信数据完整性需让位与通信实时性,则应该选用TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。

UDP:

包总量较小的通信(DNS、SNMP等);

视频、音频等多媒体通信(即时通信);

限定于LAN等特定网络中的应用通信;

广播通信(广播、多播)

TCP对应的协议:

FTP:定义了文件传输协议,使用21端口;

Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务;

SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口;

POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口;

HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

28.HTTP是基于TCP还是基于UDP的?为什么?

大部分是基于TCP。TCP充分实现了数据传输时各种控制功能,可以进行丢包时的重发机制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没用。此外,TCP作为一种面向连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

29.微信/QQ好友聊天用的TCP还是UDP?

1.登陆过程,客户端采用TCP协议向服务器发送信息,HTTP协议下载信息。登陆之后,会有一TCP连接来保持在线状态。

2.和好友发消息,客户端采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。

3.如果是在内网里面的两个客户端传文件,采用的是P2P技术,不需要服务器中转。

登陆成功之后,QQ都会有一个TCP连接来保持在线状态。QQ采用的通信协议以UDP为主,辅以TCP协议。由于QQ的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行通讯才能保证这种超大规模的服务。QQ客户端之间的消息传送也采用了UDP模式,因为国内的网络环境非常复杂,而且很多用户采用的方式是通过代理服务器共享一条线路上网的方式,在这些复杂的情况下,客户端之间能彼此建立起来TCP连接的概率较小,严重影响传送信息的效率。而UDP包能够穿透大部分的代理服务器,因此QQ选择了UDP作为客户之间的主要通信协议。采用UDP协议,通过服务器中转方式。因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术。

30.MAC地址、IP地址和端口号

MAC地址用来识别同一链路中不同的计算机;

IP地址用来识别TCP/IP网络中互连的主机和路由器;

端口号用来识别同一台计算机中进行通信的不同的应用程序。

31.如何用UDP实现可靠传输?

在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。

(1)添加seq/ack机制,确保数据发送到对端;

(2)添加发送和接收缓冲区,主要是用户超时重传;

(3)添加超时重传机制。

详细说明:送端发送数据时,生成一个随机seq=x,然后每一片按照数据大小分配seq。数据到达接收端后接收端放入缓存,并发送一个ack=x的包,表示对方已经收到了数据。发送端收到了ack包后,删除缓冲区对应的数据。时间到后,定时任务检查是否需要重传数据。

32.TCP怎么保证可靠连接

TCP通过校验和、序列号、确认应答、超时重传、连接管理、窗口控制、流量控制、拥塞控制实现可靠传输。

校验和

计算方式:在数据传输的过程中,将发送的数据段都当作一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。

发送方:在发送数据之前计算检验和,并进行校验和的填充。

接收方:收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。

注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。

序列号与确认应答

序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。

确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。

序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。

超时重传

首先,发送方没有介绍到响应的ACK报文原因可能有两点:

(1)数据在传输过程中由于网络原因等直接全体丢包,接收方根本没有接收到。

(2)接收方接收到了响应的数据,但是发送的ACK报文响应却由于网络原因丢包了。
TCP在解决这个问题的时候引入了一个新的机制,叫做超时重传机制。简单理解就是发送方在发送完数据后等待一个时间,时间到达没有接收到ACK报文,那么对刚才发送的数据进行重新发送。如果是刚才第一个原因,接收方收到二次重发的数据后,便进行ACK应答。如果是第二个原因,接收方发现接收的数据已存在(判断存在的根据就是序列号,所以上面说序列号还有去除重复数据的作用),那么直接丢弃,仍旧发送ACK应答。

那么发送方发送完毕后等待的时间是多少呢?如果这个等待的时间过长,那么会影响TCP传输的整体效率,如果等待时间过短,又会导致频繁的发送重复的包。如何权衡?由于TCP传输时保证能够在任何环境下都有一个高性能的通信,因此这个最大超时时间(也就是等待的时间)是动态计算的。

连接管理

三次握手、四次挥手。

窗口控制

TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是一个面向连接的可靠的传输协议,既然是可靠的就需要传输的数据进行确认。TCP窗口机制有两种,一种是固定窗口大小,另一种是滑动窗口。数据在传输时,TCP会对所有数据进行编号,发送方在发送过程中始终保持着一个窗口,只有落在发送窗口内的数据帧才允许被发送;同时接收方也始终保持着一个接收窗口,只有落在窗口内的数据才会被接收。这样通过改变发送窗口和接收窗口的大小就可以实现流量控制。

TCP的窗口滑动技术通过动态改变窗口的大小来调节两台主机之间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口,一个用于接收数据,一个用于发送数据。接收方设备要求窗口大小为0时,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。

流量控制

TCP在传送数据时,第一次接收方窗口大小是由链路带宽决定的,但是接收方在接收到的数据后,返回ack确认报文,同时也告诉了发送方自己的窗口大小,此时发送方第二次发送数据时,会改变自己的窗口大小和接收方一致。当窗口过大时,会导致不必要的数据来拥塞我们的链路,但是窗口太小时,会造成很大的延时,比如为1时,发送方每发送一个数据,接收方就会返回一个ack报文,在发送方未接收到接收方的确认报文ack之前不会进行下一次发送。

拥塞控制

TCP传输的过程中,发送端开始发送数据的时候,如果刚开始就发送大量的数据,那么就可能造成一些问题。网络可能在开始的时候就很拥堵,如果给网络中在扔出大量数据,那么这个拥堵就会加剧。拥堵的加剧就会产生大量的丢包,就对大量的超时重传,严重影响传输。

所以TCP引入了慢启动的机制,在开始发送数据时,先发送少量的数据探路。探清当前的网络状态如何,再决定多大的速度进行传输。这时候就引入一个叫做拥塞窗口的概念。发送刚开始定义拥塞窗口为 1,每次收到ACK应答,拥塞窗口加 1。在发送数据之前,首先将拥塞窗口与接收端反馈的窗口大小比对,取较小的值作为实际发送的窗口。

拥塞窗口的增长是指数级别的。慢启动的机制只是说明在开始的时候发送的少,发送的慢,但是增长的速度是非常快的。为了控制拥塞窗口的增长,不能使拥塞窗口单纯的加倍,设置一个拥塞窗口的阈值,当拥塞窗口大小超过阈值时,不能再按照指数来增长,而是线性的增长。在慢启动开始的时候,慢启动的阈值等于窗口的最大值,一旦造成网络拥塞,发生超时重传时,慢启动的阈值会为原来的一半(这里的原来指的是发生网络拥塞时拥塞窗口的大小),同时拥塞窗口重置为1。

33.TCP报文段

端口号:每个TCP报文段都包含源端口号和目的端口号,用于寻找发送端和接收端的应用程序,这两个值加上IP首部中的源端IP地址和目的端IP地址就可以确定唯一的TCP连接。

序号:用于将失序的数据重新排列,TCP报文段的序号被设置为其数据部分的第一个字节的编号。

确认序号:接收方在接收到数据后,会回复确认报文,其中包含确认序号,作用是告诉发送发自己接收到了哪些数据,下一次数据从哪里开始发,因此,确认序号影视上次已经成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。

首部长度:首部中选项部分的长度是可变的,因此首部的长度也是可变的,所以需要这个字段来明确表示首部的长度。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一旦造成网络拥塞,发生超时重传时,慢启动的阈值会为原来的一半(这里的原来指的是发生网络拥塞时拥塞窗口的大小),同时拥塞窗口重置为1。

33.TCP报文段

端口号:每个TCP报文段都包含源端口号和目的端口号,用于寻找发送端和接收端的应用程序,这两个值加上IP首部中的源端IP地址和目的端IP地址就可以确定唯一的TCP连接。

序号:用于将失序的数据重新排列,TCP报文段的序号被设置为其数据部分的第一个字节的编号。

确认序号:接收方在接收到数据后,会回复确认报文,其中包含确认序号,作用是告诉发送发自己接收到了哪些数据,下一次数据从哪里开始发,因此,确认序号影视上次已经成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。

首部长度:首部中选项部分的长度是可变的,因此首部的长度也是可变的,所以需要这个字段来明确表示首部的长度。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-qzseVMum-1713256785447)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值