大家好,欢迎来到IT知识分享网。
1、直接从TCP的三次握手开始说起
三次握手就是客户与服务器建立连接的过程
- 客户向服务器发送SYN(SEQ=x)报文,然后就会进入SYN_SEND状态
- 服务器收到SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,然后就会进入SYN_RECV状态
- 客户收到服务器的SYN报文,回应一个ACK(ACK=y+1)报文,然后就会进入Established状态
图片来自百度百科
举例时间到!我们把客户端比作男生,服务器比作女生
第一次握手就像是男生对女生的告白:我喜欢你我们在一起吧。(之后,男孩就要等待女孩的回复,因为要确定女孩听到他说的话)
第二次握手则是女生的回应:好呀好呀。(之后,女孩也要等待,因为要确定男孩听到她的答复)
第三次握手就是男生的回应:真好,我们去吃火锅吧~。(此时,两人都确定对方收到了消息,关系成功建立)
也就是客户端和服务器数据的传输
接下来,我们抓包分析一下三次握手建立的过程
第一次握手:我向服务器发送了SYN,并设置Seq=0(x),请求与服务器建立连接
第二次握手:服务器向我回应了SYN,并设置Seq=0(y),ACK=1(x+1)
第三次握手:我收到服务器的SYN报文,回应一个ACK=1(y+1)
2、再接着说说四次挥手
四次挥手就是客户与服务器断开连接的过程
- 客户发送一个FIN,断开与服务器的连接
- 服务器收到FIN,回应一个ACK,确认序号为收到的序号加1
- 服务器关闭客户端的连接,并发送一个FIN
- 客户回发ACK确认,并将确认序号设置为收到序号加1
图片来自百度百科
又到了举例时间!我们同样把客户端比作男生,服务器比作女生
第一次挥手:随着时间的流逝,女生变了,于是男生给女生发了分手短信,然后等待女生的回复
第二次挥手:女生听到后,伤心欲绝,就告诉男生:分手就分手,我把你的东西收拾收拾都还给你。男生就知道了女生同意了分手,于是等待女生把东西收拾好交还给他
第三次挥手:女生把男生的东西都收拾好,给男生发了第二条短信让他来取
第四次挥手:男生收到后,在回复最后一条短信,我知道了,我现在去取。于是关系断了
也就是客户端和服务器的连接中断
接下来,抓包看一下四次挥手的过程
第一次挥手:我向服务器发送FIN,Seq=3092,Ack=183
第二次挥手:服务器回发了ACK,Seq=183,Ack=3093
第三次挥手:服务器发送FIN,Seq=183,Ack=3093
第四次挥手:我向服务器回复了ACK,Seq=3093,Ack=184
3、TCP报文段格式分析
话不多说,直接上图
wireshark抓包分析
源端口和目的端口:各占16位,这两个字段分别填入发送该报文段应用程序的源端口号和接收该报文段的应用程序的目的端口号
序列号:占32位,TCP连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号:占32位,表示期望收到对方下一个报文段的第一数据字节的序号。
数据偏移:占4位,又称首部长度。指出首部的长度,即数据离开报文段开始的偏移量。
保留:占6位,留待后用,目前置为0
标志:占6位,又称控制字段,各位都有特定意义
- 紧急URG,表示本报文数据的紧急程度,URG=1表示本报文具有高优先级
- 确认ACK,ACK=1时,确认号字段才有意义
- 推送PSH,PSH=1时,表示请求接收端TCP将本报文段立即送往其应用层
- 复位RST,RST=1时,表示TCP连接中出现了严重错误,必须释放传输连接,而后在重建
- 同步SYN,该位在连接建立时使用,起着序号同步的作用
- 终止FIN,用来释放一个链接
窗口:占16位,该字段用于流控制
校验和:占16位,该字段的校验范围是整个报文段(包括首部和数据)
紧急指针:占16位,当URG=1时有意义,指出紧急数据的末尾在报文段中的位置,使得接收端能知道紧急数据的字节数
选项与填充:最长可达40B
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12023.html