大连本地网站推广,wordpress 搞笑网站,wordpress 4.0 打开慢,辽宁省朝阳网站建设01、前言
面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程#xff0c;为什么总喜欢问这个问题呢#xff1f;
其实我们平时使用的很多协议都是应用层协议#xff0c;比如HTTP协议#xff0c;https协议#xff0c;DNS协议#xff0c;FTP协议等#xff1b;而应…01、前言
面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程为什么总喜欢问这个问题呢
其实我们平时使用的很多协议都是应用层协议比如HTTP协议https协议DNS协议FTP协议等而应用层协议都是要基于传输层的两个协议之上的也就是TCP协议和UDP协议。我们在使用应用层协议遇到一些问题需要去分析定位的时候会需要涉及到底层协议的连接问题上。所以作为测试掌握这两个底层协议的工作原理是非常有必要的
UDP协议作为一个不可靠的传输层协议工作过程相对比较简单所以我们就重点来大家讲一下TCP协议。
02、Wireshark抓包分析TCP协议
为了更好的学习和理解TCP协议的连接和断开连接的过程我们来引入一个非常适合用来学习网络协议的抓包工具Wireshark。这个抓包工具可以详细看到每一层网络报文的详细信息。
03、TCP协议的三次握手过程
TCP建立连接需要经历三次握手具体过程如下
那么这个过程我们配合抓包工具来看看具体的案例如下图是访问某个HTTP请求用wireshark抓到的报文前面的三个报文就是TCP的三次握手过程SYN包SYN ACK包ACK报文。
展开看详情
第一次握手的报文如下这是客户端发起给服务器的报文用于请求建立连接。
可以看到TCP报文里有一个Flags位
当Syn位标记为1的时候表示这个报文是一个请求链接的报文
自己的序号sequence number0
第二次握手的报文如下这是服务器回复给客户端的报文用于确认并同意连接请求。
可以看到TCP报文里的Flags位
Syn位也标记为1表示这个报文是一个同意建立链接的报文
ACK位也标记为1表示是一个对上一个报文的确认报文
Sequence number自己的序号
acknowledgment number表示对上一个请求报文的确认号所以是在上一个报文的序号1
第三次握手是客户端发给服务器的是对上一个同意连接请求的确认。
Flags里的ACK位标记为1表示是一个对上一个报文的确认报文
Sequence number自己的序号在上一个报文的基础上1
acknowledgment number表示对上一个请求报文的确认号在上一个报文序号的基础上1.
至此三次握手完成接下来就开始发送HTTP的请求了。
04、TCP协议的四次挥手过程
当数据传输结束了客户端和服务器之间就开始断开连接了。断开连接需要经历四次挥手具体过程如下
同样我们用wireshark工具来进行详细过程的报文的分析
我们同样展开看下详细的报文内容
第一次挥手当数据传输首先结束的端比如客户端会率先发起结束断开连接的请求
Flags位的 Fin位标记为1说明这是个一个断开连接的请求的报文。
这时候我们发送这个请求的端已经停止发送数据了但是还可以接受数据。
第二次挥手对上一个断开连接请求的报文进行确认。并同时停止接受数据。
所以我们能看到这个报文的ACK位标记为1并且acknowledgment number是对上一个报文的序号1表示对上一个报文的确认。
第三次挥手服务器端也结束数据发送了所以也会发起一个断开连接的请求。
这是个服务器发起FIN报文请求断开连接同时服务器也会停止发送数据。
第四次挥手是客户端对服务器断开连接请求的进行确认。
所以这个flags位是ACK位标记为1。此时客户端也停止接受数据了。
至此服务器和客户端都停止发送和接受数据了四次挥手就完成了。 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】 一、Python编程入门到精通
二、接口自动化项目实战 三、Web自动化项目实战
四、App自动化项目实战 五、一线大厂简历
六、测试开发DevOps体系 七、常用自动化测试工具
八、JMeter性能测试 九、总结尾部小惊喜
生命不息奋斗不止。每一份努力都不会被辜负只要坚持不懈终究会有回报。珍惜时间追求梦想。不忘初心砥砺前行。你的未来由你掌握
生命短暂时间宝贵我们无法预知未来会发生什么但我们可以掌握当下。珍惜每一天努力奋斗让自己变得更加强大和优秀。坚定信念执着追求成功终将属于你
只有不断地挑战自己才能不断地超越自己。坚持追求梦想勇敢前行你就会发现奋斗的过程是如此美好而值得。相信自己你一定可以做到