tcpdump/HTTP协议实践

客户端:

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务端:

CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

# tcpdump host 192.168.64.71 and port 80 -n

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes

10:13:01.617505 IP 10.1.9.11.58384 > 192.168.64.71.80:
Syn 3718379515:3718379515(0) win 65535 <mss 1460,nop,nop,sackOK>
客户端发起连接请求

10:13:01.617631 IP 192.168.64.71.80 > 10.1.9.11.58384:
Syn 261066897:261066897(0) ack 3718379516 win 5840 <mss 1460,nop,nop,sackOK>
服务端响应连接请求

10:13:01.617766 IP 10.1.9.11.58384 > 192.168.64.71.80: . ack 1 win 65535

10:13:01.618011 IP 10.1.9.11.58384 > 192.168.64.71.80:
Push 1:612(611) ack 1 win 65535
客户端向服务端发送数据(HTTP请求)

10:13:01.618023 IP 192.168.64.71.80 > 10.1.9.11.58384: . ack 612 win 6721

10:13:01.618486 IP 192.168.64.71.80 > 10.1.9.11.58384:
Push 1:329(328) ack 612 win 6721服务端向客户端回送数据(HTTP响应)

10:13:01.618510 IP 192.168.64.71.80 > 10.1.9.11.58384:
Push 329:1303(974) ack 612 win 6721

10:13:01.619638 IP 10.1.9.11.58384 > 192.168.64.71.80: . ack 1303 win 64233

10:13:11.574352 IP 10.1.9.11.58384 > 192.168.64.71.80:
Fin 612:612(0) ack 1303 win 64233
客户端先发起关闭连接操作

10:13:11.574455 IP 192.168.64.71.80 > 10.1.9.11.58384:
Fin 1303:1303(0) ack 613 win 6721
服务端响应客户端的关闭连接操作

10:13:11.574991 IP 10.1.9.11.58384 > 192.168.64.71.80: . ack 1304 win 64233
客户端进入TIME_WAIT状态

Ø        
服务端(192.168.64.71.80)向客户端(10.1.9.11.58384)回送的响应分了两个tcp包:

第一个包发送了328字节,第二个包发送了974字节

Ø        
关闭连接由客户端(10.1.9.11.58384)首先发起,因此客户端(192.168.64.71.80)需要经历一个TIME_WAIT过程

Site found: www.tcpdump.com=192.168.64.71

Connecting to 192.168.64.71

Connected to 192.168.64.71

GET http:// www.tcpdump.com/

> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)

> Host: tsf.oa.com

Request sent. 611 bytes

Data available. 974/974 bytes

HTTP/1.1 200 OK

Date: Sun, 10 Aug 2008 02:27:08 GMT

Server: Apache/2.0.59 (Unix) DAV/2 PHP/5.2.1 SVN/1.4.6

Last-Modified: Wed, 21 May 2008 01:19:21 GMT

ETag: "298227-3ce-62ec9840"

Accept-Ranges: bytes

Content-Length:

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=GB2312

200 Request complete

从上面的抓包结果来看,Apache将HTTP响应头和数据部分是分成两两部分发送的,而且TCP/IP协议栈没有再对其分包,也就是每个send调用都将数据发送完毕。

显示包的内容:

tcpdump -i eth1 -n -vv -x -e -s 1600 # 仅二进制

tcpdump -i eth1 -n -vv -X -e -s 1600 # 二进制和文本

-s 指定显示多少字节的包内容

tcpdump/HTTP协议实践的更多相关文章

  1. TCP\IP协议实践:wireshark抓包分析之链路层与网络层

    目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...

  2. WCF 采用net.tcp协议实践

    概述 与Socket相比,WCF真是爽得不得了,其基本指导思想为SOA——面向服务. 其基本配置在于ABC(Address,Binding,Contract),通常,只要这三个因素配置对了,那么,基本 ...

  3. DNS协议 实践

    根据DNS协议发送UDP请求,然后获取IP地址 头文件: #ifndef __DNS__ #define __DNS__ #include <stdio.h> #include <s ...

  4. [置顶] 【GBT28181开发:SIP协议实践】之设备远程启动

    下面学习的是设备远程控制的流程,和设备信息.设备目录.设备状态的流程差不多,主要是描述的协议字段不同,模拟SPVMN系统向源设备发送远程启动控制指令,记录下交互的消息,详细研究了下: 转载请注明出处: ...

  5. WCF 采用net.tcp协议实践(转)

    概述 与Socket相比,WCF真是爽得不得了,其基本指导思想为SOA——面向服务. 其基本配置在于ABC(Address,Binding,Contract),通常,只要这三个因素配置对了,那么,基本 ...

  6. quic协议实践

    QUIC实践 环境Ubuntu14.x86_64 gcc4.8 python2.7 编译QUIC服务器和客户端 下载 git clone https://github.com/google/proto ...

  7. RPC协议实践入门

    RPC 是什么 RPC(Remote Procedure Call) 是一个计算机通信协议.该协议允许运行与一台计算机的程序调用另一个地址空间的程序,是一个通过发送请求-接受回应进行信息交互的系统. ...

  8. WCF 采用net.tcp协议

    WCF 采用net.tcp协议实践   概述 与Socket相比,WCF真是爽得不得了,其基本指导思想为SOA——面向服务. 其基本配置在于ABC(Address,Binding,Contract), ...

  9. tcpdump 使用

    例子: 首先切换到root用户 tcpdump -w  aaa.cap   -i eth7   -nn -x  'port  9999'  -c  1 以例子说明参数: -w:输出到文件aaa.cap ...

随机推荐

  1. STL的erase函数和lower_bound

    前提摘要: [1]一般我们的区间是左闭右开,如下面例子2. [2]erase函数谨慎使用. [3]map也是有序保存的. [erase] 1,删除字符串的首字母: string s="ecu ...

  2. 基于Python语言使用RabbitMQ消息队列(四)

    路由 在上一节我们构建了一个简单的日志系统.我们能够广播消息给很多接收者. 在本节我们将给它添加一些特性——我们让它只订阅所有消息的子集.例如,我们只把严重错误(critical error)导入到日 ...

  3. 【转载】BusyBox 简化嵌入式 Linux 系统

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-busybox/ BusyBox 是很多标准 Linux® 工具的一个单个可执行实现.BusyBox ...

  4. 媒体查询ipad,pc端

    媒体查询 /* 判断ipad */ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px){ ...

  5. 第一章计算机网络和因特网-day01

    什么是因特网: 其一:构成因特网的基本硬件与软件. 其二:为分布式应用提供服务的联网基础设施. 终端机器称为主机( host ) 或者端系统( end system ) 端系统通过通信链路(commu ...

  6. Python 函数之函数调用

    Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...

  7. ConcurrentHashMap的扩容机制(jdk1.8)

    ConcurrentHashMap相关的文章网上有很多,而关于ConcurrentHashMap扩容机制是很关键的点,尤其是在并发的情况下实现数组的扩容的问题经常会碰到,看到这篇写的具有代表性,详细讲 ...

  8. java中初始化方法

    本文主要是讲从<java编程思想>中看到的东西,是第七章复用类的开头内容,主要是类初始化的几种方法的位置,主要包括 1.在定义对象的地方.这意味着他们总是在构造器被调用前被初始化. 2.在 ...

  9. 一文读懂非关系型数据库(NoSQL)

    为了更好的理解非关系型数据库,我又深入的度娘了下 原文地址:https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&co ...

  10. IC卡和RFID卡的区别(网上说的都不准确)

    其实IC卡是卡类型的称呼,IC卡和RFID卡不应该在一起对比的,和IC卡在一起对比的应该是ID卡. RFID卡是其实是对卡技术类型称呼. IC为卡类型称呼(Integrated Circuit Car ...