tcpdump抓包理解(tcp三次握手+http请求+tcp四次挥手)

    科技2022-07-12  119

    实验环境

    192.168.192.128 虚拟机
    47.99.57.252 阿里云服务器

    192.168.192.128主机访问47.99.57.252的url 192.168.192.128主机安装tcpdump工具(yum安装)并通过终端获取47.99.57.252的html页面

    tcpdump -i ens33 -S host 192.168.192.128 and 47.99.57.252

    -i 指定网卡 -S 目的是获取ack绝对值(不加该参数ack相对值为1) host < ip > and < ip > 截获两个ip对应主机之间的通信

    在还未访问时可以发现双方没有数据包传输

    再开一个192.168.192.128的终端ping47.99.57.252 tcpdump有数据包传输(ICMP应答报文) 说明实验环境正常

    curl命令访问47.99.57.252的html文件并得到结果

    看到tcpdump抓包情况 红色框为tcp连接三次握手 黄色框为http请求以及响应 蓝色框为tcp断开四次挥手

    tcp三次握手

    1.[S.]代表SYN包表示主动连接,生成seq为一个随机数x 2.生成一个seq=y 给客户端发送ack,ack的值为x+1 3.客户端给服务端发送ack,ack的值为y+1

    http请求与响应

    1.客户端发送http请求,此次请求为get方式 2.服务端发送ack确认 3.服务端返回数据包和状态码(因为时get方式,所以数据包和状态码在一个数据包内,如果是post请求会分别发送状态码和数据包) 4.客户端发送ack确认

    tcp断开连接四次挥手

    1.[F.]为FIN包表示主动断开,生成seq为n 2.服务端返回ack=n+1 3.服务端返回seq=m,ack=n+1 4.看客户端返回ack=m+1

    总结

    通过这个实验可以看出访问网页时tcp的大致流程 tcp连接——http请求——http响应——tcp断开 因为tcp是可靠传输协议并且面向连接,所以双方收到数据包后都会向对方传输ack确认包 http请求方式多数为get,post,响应状态码200为成功 tcp断开连接为四次握手,因为要保证数据传输全部完成才能断开

    (不详细,有错误请指出~)

    Processed: 0.011, SQL: 8