• Wireshark分析tcp交互过程


    三次握手

    客户端发起请求

    Tcp段长度为575字节,seq=1,ack=1,next_seq=576

    服务器响应:

    Tcp段长度为175字节,seq=1,ack=576,next_seq=176

    客户端响应:

    Tcp段长度523字节,seq=576,ack=176,next_seq=1099

    服务端响应:

    Tcp端长度176字节,seq=176,ack=1099,net_seq=352

    客户端响应:

    Tcp段长度494字节,seq=1099,ack=352,next_seq=1593

    服务端响应:

    Tcp段长度176字节,seq=352,ack=1593,next_seq=528

    客户端响应:

    Tcp段长度575字节,seq=1593,ack=528,next_seq=2168

    ……

    客户端响应:

    Tcp段长度464字节,seq=2610,ack=1338,next_seq=3074。

    PSH标志位

    单词PUSH,意思是“推”。

    接收缓冲区和发送缓冲区

    进程A发送数据时,并不是直接发送,而是先写到自己的发送缓冲区。接收进程B接收到TCP报文时,会先将数据放入接收缓冲区。

    PSH作用

    将发送缓冲区的数据发送出去,将数据从接收缓冲区读取的时间是不确定的。

    发送端

    TCP模块自行决定,什么时候将发送缓冲区中数据打包成TCP报文,但如果发送缓冲区满了TCP同样会将数据打包发送。由于有MSS(最大报文段长度)的限制,数据可能会被打包成一个或多个TCP报文段。最后一个报文段会标记为PSH。

    接收端

    如果接收方接收到的某个TCP报文段包含PSH标志,接收方就会立即将缓冲区的所有数据推给进程。同样的,接收缓冲区如果满了也会推。

    总结

    发送方发送数据进行打包时,会将最后一个打包的TCP报文加上PSH标志;

    接收方收到含有PSH的报文,会立刻把接收缓冲区的数据推给进程。

    观察以上tcp报文可知:

    1条tcp报文中的tcp段长度==seq_next — seq。

    发送方tcp报文中的seq_next == 接受方回应tcp报文中的ack,发送方tcp报文中的ack=接收方回应tcp报文中的seq。

    四次挥手

  • 相关阅读:
    Web3 时代 传统品牌如何玩转 NFT 营销?
    【408篇】C语言笔记-第十一章(单链表)
    vue2基础知识-2
    我的Vue之旅、02 ES6基础、模块、路径、IO
    新材料企业ERP有几种?能帮助企业解决哪些问题
    渗透实例------2个星期艰难的渗透纪实
    解决使用Quartz执行的任务对象(job)中无法注入bean的问题
    无法上网问题解决过程
    two point(双指针)
    vmware虚拟机安装教程
  • 原文地址:https://blog.csdn.net/chuixue24/article/details/134290570