导航:首页 > 网络安全 > 如何识别报文属于自己网络流

如何识别报文属于自己网络流

发布时间:2023-07-25 16:07:20

如何实现java解析网络协议报文

普通参数:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

文件参数:
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

参数实体的最后一行是: --加上boundary加上--,最后换行,这里的 格式即为: --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp--。

模拟文件上传请求
public static void uploadFile(String fileName) {
try {
// 换行符
final String newLine = "\r\n";
final String boundaryPrefix = "--";
// 定义数据分隔线
String BOUNDARY = "========7d4a6d158c9";
// 服务器的域名
URL url = new URL("www.myhost.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置为POST情
conn.setRequestMethod("POST");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求头参数
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
OutputStream out = new DataOutputStream(conn.getOutputStream());
// 上传文件
File file = new File(fileName);
StringBuilder sb = new StringBuilder();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
// 文件参数,photo参数名可以随意修改
sb.append("Content-Disposition: form-data;name=\"photo\";filename=\"" + fileName
+ "\"" + newLine);
sb.append("Content-Type:application/octet-stream");
// 参数头设置完以后需要两个换行,然后才是参数内容
sb.append(newLine);
sb.append(newLine);
// 将参数头的数据写入到输出流中
out.write(sb.toString().getBytes());
// 数据输入流,用于读取文件数据
DataInputStream in = new DataInputStream(new FileInputStream(
file));
byte[] bufferOut = new byte[1024];
int bytes = 0;
// 每次读1KB数据,并且将文件数据写入到输出流中
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
// 最后添加换行
out.write(newLine.getBytes());
in.close();
// 定义最后数据分隔线,即--加上BOUNDARY再加上--。
byte[] end_data = (newLine + boundaryPrefix + BOUNDARY + boundaryPrefix + newLine)
.getBytes();
// 写上结尾标识
out.write(end_data);
out.flush();
out.close();
// 定义BufferedReader输入流来读取URL的响应
// BufferedReader reader = new BufferedReader(new InputStreamReader(
// conn.getInputStream()));
// String line = null;
// while ((line = reader.readLine()) != null) {
// System.out.println(line);
// }
} catch (Exception e) {
System.out.println("发送POST请求出现异常!" + e);
e.printStackTrace();
}
}

⑵ 如何用自己的pc查看HTTP的请求报文和应答报文

想查看HTTP请求和应答报文,可以先了解一下TCP和HTTP协议:HTTP是第七层也就是应用层协议,它是建立在TCP协议之上的,因此,抓包分析的话,HTTP交互都是从TCP三次握手开始的。

以一次简单的HTTP交互为例说明:

  1. 客户端-->syn-->服务器 (TCP层交互)

  2. 服务器-->syn ack-->客户端 (TCP层交互)

  3. 客户端-->ack-->服务器 (TCP层交互)

TCP三次握手建立连接后,

4. 客户端发送GET/POST请求数据 (HTTP层交互)

5. 服务器收到GET/POST请求,回复ack (TCP层交互)

6. 服务器根据请求回复相应的数据 (HTTP层交互)

7. 客户端收到服务器数据,回复ack (TCP层交互)

在完成HTTP数据交互后,TCP四次分手断开连接:

8. 客户端-->fin ack-->服务器

9. 服务器-->ack-->客户端

10. 服务器-->fin ack-->客户端

11. 客户端-->ack-->服务器

这样,一次简单的HTTP交互就完成了。如果要查看的话,windows下可用wireshark等抓包工具,linux下用tcpmp就行。wireshark和tcpmp都可以指定网卡和设置相关规则,过滤掉不想关的报文。

阅读全文

与如何识别报文属于自己网络流相关的资料

热点内容
如何更改网络适配器 浏览:686
电脑网络信号好好为什么用不了 浏览:770
网络的那个盒子怎么拆 浏览:79
做建筑网络推广要什么条件 浏览:296
电脑网络状态是一条虚线是什么鬼 浏览:715
平板只有手机网络没有WiFi 浏览:543
华为手机怎样连接无网络电脑 浏览:719
华为无线路由器有网络就是用不了 浏览:185
东莞移动网络代理 浏览:959
网络安全和稳定拓展 浏览:95
3g网络和手机充值卡有关系吗 浏览:109
手机网络连上有个感叹号怎么回事 浏览:453
网络保安工资多少 浏览:893
什么pc网络游戏可以自动挂机 浏览:432
成人高考网络教育哪个简单 浏览:31
波兰手机有网络吗 浏览:594
如何移除网络信号 浏览:362
荣耀手机可用网络被禁用 浏览:617
wifi无线网络项目背景 浏览:435
路由器无线桥接网络有问题 浏览:412

友情链接