tcpdump/HTTP协议实践

简介: tcpdump/HTTP协议实践 500)this.width=500;" border="0" /> 客户端: CLOSED->SYN_SENT->ESTABLISHED->...

tcpdump/HTTP协议实践

500)this.width=500;" border="0" />

客户端:

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 客户端发起连接请求

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

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: 974

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=GB2312

 

200 Request complete

 

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

 

显示包的内容:

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

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


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

 


 HTTP响应头共328字节。

附:常用命令

A.查看端口被谁占用
lsof -i:port,如:lsof -i:80

B.查看tcp监听端口
netstat -lpnt

C.查看udp监听端口
netstat -lpnu

D.查看本机IP
netstat -ie

E.lsof高级用法
lsof -i [46][protocol][@hostname|hostaddr][:service|port]
46表示ipv4和ipv6,protocol取值为tcp或udp,
hostname主机名,hostaddr为IP地址,
service为/etc/service中定义的service名,可以不止一个,
port也可以不止一个
示例1:lsof -i4
示例2:lsof -i 4udp@127.0.0.1:7778
更详细细节可以“man lsof”搜索“hostname”。

1.监听指定网卡
tcpdump -i eth1

2.监听指定UDP端口
tcpdump udp port 10888

3.监听指定TCP端口
tcpdump tcp port 80

4.监听A和B或A和C间的通讯
tcpdump host A and \(B or C \)
如:tcpdump host 127.0.0.1 and \(127.0.0.1 or 110.240.110.18 \)

5.监听A的所有通讯,但不包括A和B的
tcpdump ip A and not B

6.监听A发出的所有包
tcpdump -i eth1 src host A

7.监听所有发送到B的包
tcpdump -i eth1 dst host B

8.监听A收到或发出的所有http包
tcpdump tcp port 80 and host A

9.列出tcpdump能够监听的网卡
tcpdump -D

10.监听所有网卡,要求2.2或更高版本内核
tcpdump -i any

11.详细显示捕获的信息
tcpdump -v
更详细可以使用tcpdump -vv和tcpdump -vvv

12.以十六进制和ASCII方式打印包,除了连接层头
tcpdump -v -X

13.以十六进制和ASCII方式打印包,包括连接层头
tcpdump -v -XX

14.限制捕获100个包
tcpdump -c 100

15.将记录写入文件
tcpdump -w filename.log

16.使用IP代替域名
tcpdump -n

17.捕获每个包的100字节而不是默认的68字节
tcpdump -s 500
如果要捕获所有字节则为tcpdump -s 0

18.捕获所有广播或多播包
tcpdump -n "broadcast or multicast"

19.捕获所有icmp和arp包
tcpdump -v "icmp or arp"

20.捕获arp包
tcpdump -v arp

21.捕获目标地址是192.168.0.1,端口是80或443的包
tcpdump -n "dst host 192.168.0.1 and (dst port 80 or dst port 443)"

22.捕获目标端口号在1-1023间的UDP包
tcpdump -n udp dst portrange 1-1023
如果是tcp则改成:tcpdump -n tcp dst portrange 1-1023

23.捕获目标端口号为23的包
tcpdump dst port 23

24.捕获目标网络为192.168.1.0/24的包
tcpdump -n dst net 192.168.1.0/24

25.捕获源网络为192.168.1.0/24的包
tcpdump -n src net 192.168.1.0/24

相关文章
|
5月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
199 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
3月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
477 68
|
2月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
379 2
|
3月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
252 1
|
2月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
349 0
|
4月前
|
Web App开发 网络协议 应用服务中间件
HTTP2.0 从原理到实践,保证把你治得服服帖帖!
HTTP/2 是 HTTP/1.1 的重要升级,通过多路复用、头部压缩、服务器推送等特性显著提升性能与效率。本文详细解析了 HTTP/2 的优势、配置方法及实际应用,涵盖 Nginx/Apache/IIS 配置、curl 测试工具使用,并对比 HTTP/1.1 指出其优化点。同时提醒需注意 HTTPS 支持、客户端兼容性等问题,助你高效掌握并运用 HTTP/2 技术。
429 5
HTTP2.0 从原理到实践,保证把你治得服服帖帖!
|
3月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
334 0
|
4月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
141 17
|
3月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
298 0