zoukankan      html  css  js  c++  java
  • 用tcpdump 分析如何建立与关闭tcp连接

    according to preview article  【并发服务器系列】3 epoll模型

    I use tcpdump to analyze how tcp build up a connection, send a message ,and close the connection. (code are available in the preview article.)

     client(172.18.70.159) use a random port 49538 to connection server(172.18.70.149:54321)

    now I print out the client's captured:

      1 sudo tcpdump port 54321

     2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
     3 listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
     4 
     5 
     6 19:29:52.674854 IP bogon.49538 > bogon.54321: Flags [S], seq 2303324334, win 5840, options [mss 1460,sackOK,TS val 6717463 ecr 0,nop,wscale 5], length 0
     7 19:29:52.675309 IP bogon.54321 > bogon.49538: Flags [S.], seq 2402310477, ack 2303324335, win 5792, options [mss 1460,sackOK,TS val 3494999994 ecr 6717463,nop,wscale 6], length 0
     8 19:29:52.675351 IP bogon.49538 > bogon.54321: Flags [.], ack 1, win 183, options [nop,nop,TS val 6717464 ecr 3494999994], length 0
     9 

    19:29:52.676059 IP bogon.49538 > bogon.54321: Flags [P.], seq 1:34, ack 1, win 183, options [nop,nop,TS val 6717464 ecr 3494999994], length 33
    10 19:29:52.676489 IP bogon.54321 > bogon.49538: Flags [.], ack 34, win 91, options [nop,nop,TS val 3494999995 ecr 6717464], length 0
    11 19:29:52.676517 IP bogon.54321 > bogon.49538: Flags [P.], seq 1:30, ack 34, win 91, options [nop,nop,TS val 3494999995 ecr 6717464], length 29


    12
      19:29:52.676526 IP bogon.49538 > bogon.54321: Flags [.], ack 30, win 183, options [nop,nop,TS val 6717464 ecr 3494999995], length 0
    13 19:29:52.676591 IP bogon.54321 > bogon.49538: Flags [F.], seq 30, ack 34, win 91, options [nop,nop,TS val 3494999995 ecr 6717464], length 0
    14 19:29:52.677302 IP bogon.49538 > bogon.54321: Flags [F.], seq 34, ack 31, win 183, options [nop,nop,TS val 6717464 ecr 3494999995], length 0
    15 19:29:52.677641 IP bogon.54321 > bogon.49538: Flags [.], ack 35, win 91, options [nop,nop,TS val 3494999996 ecr 6717464], length 0

    line 6,7,8(first 3 lines) is how the connection build (called three handshakes).


    line  9,10,11 (middle 3 lines ) is how message send.


    line 12,13,14,15 (last 4 lines)  is how conncetion close.(called four handshakes)

     here is server's capture:

     1 19:30:49.882720 IP bogon.49538 > bogon.54321: Flags [S], seq 2303324334, win 5840, options [mss 1460,sackOK,TS val 6717463 ecr 0,nop,wscale 5], length 0
     2 19:30:49.882771 IP bogon.54321 > bogon.49538: Flags [S.], seq 2402310477, ack 2303324335, win 5792, options [mss 1460,sackOK,TS val 3494999994 ecr 6717463,nop,wscale 6], length 0
     3 19:30:49.883168 IP bogon.49538 > bogon.54321: Flags [.], ack 1, win 183, options [nop,nop,TS val 6717464 ecr 3494999994], length 0
     4 
     5 
     6 19:30:49.883888 IP bogon.49538 > bogon.54321: Flags [P.], seq 1:34, ack 1, win 183, options [nop,nop,TS val 6717464 ecr 3494999994], length 33
     7 19:30:49.883917 IP bogon.54321 > bogon.49538: Flags [.], ack 34, win 91, options [nop,nop,TS val 3494999995 ecr 6717464], length 0
     8 19:30:49.883986 IP bogon.54321 > bogon.49538: Flags [P.], seq 1:30, ack 34, win 91, options [nop,nop,TS val 3494999995 ecr 6717464], length 29
     9 
    10 
    11 19:30:49.884028 IP bogon.54321 > bogon.49538: Flags [F.], seq 30, ack 34, win 91, options [nop,nop,TS val 3494999995 ecr 6717464], length 0
    12 19:30:49.884355 IP bogon.49538 > bogon.54321: Flags [.], ack 30, win 183, options [nop,nop,TS val 6717464 ecr 3494999995], length 0
    13 19:30:49.885115 IP bogon.49538 > bogon.54321: Flags [F.], seq 34, ack 31, win 183, options [nop,nop,TS val 6717464 ecr 3494999995], length 0

    14 19:30:49.885139 IP bogon.54321 > bogon.49538: Flags [.], ack 35, win 91, options [nop,nop,TS val 3494999996 ecr 6717464], length 0 

    what does S . P F mean ?

    S SYN ---- sys number

    F FIN ---- finished sending message

    P PSH --- send message to app 

    R RST --- connection RST

    .     --- all above set 0

    analyse:

    three handshakes to build up a connection

    • client(172.18.70.159) send a SYN to server(172.18.70.149)'s port(54321)
    • server send another SYN to client , in the same time use ack+1 to confirm the client's SYN
    • client confirm back server SYN with ack+1

    four handshakes to close a connection

    • server send to client a FIN
    • client confirm back server SYN with ack+1
    • client send to server a FIN
    • server confirm back client SYN with ack+1

    from line 11 we can see server send the FIN to client (code:close(events[n].data.fd);  //chat_server.cpp)

    dengwei@dengwei-desktop:~/Desktop$ ./chat 172.18.70.149
    chat client start 172.18.70.149 
     write finished msg:     hello, this is client  
     iwrite =  33 
     ----> receive msg_content:     Hi this is server 

     ireadback =  29  

    message send and receive:

    • length 33 was sent by client ( a message struct with content: hello, this is client) --- first of middle 3 lines
    • a confim in the middle
    • length 29 was received from server to ( a message struct with content: Hi thi is server) --- last of middle 3 lines
    Operating System:

    [dengwei@localhost ~]$ uname -a

    Linux localhost.localdomain 2.6.35.14-106.fc14.i686 #1 SMP Wed Nov 23 13:57:33 UTC 2011 i686 i686 i386 GNU/Linux
     

    EOF

  • 相关阅读:
    Atitit 经济学常见的流派 古典主义与凯恩斯主义
    Atitit 学习方法 体系化学习方法 Excel 科目,分类,专业 三级分类。。 知识点。。 课程就是每一个知识点的详细化。。 比如经济学 类别 专业 xx概论知识点 3、金
    atiitt it学科体系化 体系树与知识点概念大总结.xlsx
    Atitit 减少财政支出普通人如何蹭政府补贴措施 attilax大总结.docx
    Atitit 信用管理概论 attilax学习心得
    Atitit.月度计划日程表 每月流程表v5
    Atitit 企业6大职能 attilax总结
    Atitit 常见每日流程日程日常工作.docx v8 ver ampm imp 签到 am y 天气情况检查 am y 晨会,每天或者隔天 am 每日计划(项目计划,日计划等。 am
    Atitit 财政赤字解决方案
    Atitit 建设自己的财政体系 attilax总结 1.1. 收入理论 2 1.2. 收入分类 2 1.3. 2 1.4. 非货币收入 2 1.5. 2 1.6. 降低期望 2 1.7.
  • 原文地址:https://www.cnblogs.com/no7dw/p/2860265.html
Copyright © 2011-2022 走看看