Topic: Java中Socket以及TCP包分析的问题。

  Print this page

1.Java中Socket以及TCP包分析的问题。 Copy to clipboard
Posted by: kingcal
Posted on: 2004-04-04 19:11

各位高手,我现在想用Java来对传输层中的TCP包的数据进行分析,碰到了不少问题,想也想不通:
1、当我用Socket()建立一个Socket流时,在这个流中传输的数据是否以TCP的数据包(报文段)形式进行传    输的?
2、如果它是以TCP(报文段)的形式进行传输的,那么我要做的就是得到Socket的输入流,这可以用Socket
的getInputStream方法得到,接下来的事就是对它进行包分析了。现在我又有一个问题:getInputStream方法
得到数据,究竟是一个包,还是很多个包?
3、如果是多个包我又如何分别得到一个个单独的包,从而进得分析?
4、能不能提供TCP/UDP包报文段的详细结构?(我在书上是找到了一些,但它解释得不很不详细。)
希望各位高手能给小弟指点迷津。

网友CooAbu给我的解答:
=======================
我的个人理解,
Java中Socket是封装到TCP/IP协议中应用层了,所以它不会考虑传输层是什么样格式的。

你用getINputStream得到的数据流里面其实已经是反析过来的数据,它没有TCP中的包头等信息了。

TCP/UDP包报文段的详细结构应该是在TCP/IP协议里规定的,Java中对它没有详细介绍。
==============
网友AsiaFly给我的解答:
====================
首先要明白一点:Java socket是对应于ISO/OSI七层模型(不是对应TCP/IP模型,有些奇怪吧)的 表示层(session layer),也就是说是在传输层之上的封装。
1、用socket建立的套接字使用的诗TCP协议,所以肯定也诗报文传输。
2、肯定分为很多包的,你从java中可以使用flush方法来使OutputStream流无延迟发送可以间接证明。
3、是否可以查看TCP报文,手头一时没有资料,不大清楚。但我知道UDP协议可以通过DatagramPacket类取得。详细用法还是到java版去问吧。
4、这个问题太大了,网上的资料很多。TCP比较复杂,而UDP的RFC本身就只有两三页,狠好理解的。
=======================

我现在非常困惑的是单独用Java能实现对TCP数据包的分析吗?真诚希望各位高手能给小弟解答。

2.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: jameszhang
Posted on: 2004-04-04 21:22

应该理解SOCKET与TCP的关系,好象与JAVA没什么关系

3.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: rostone
Posted on: 2004-04-05 09:44

查查JavaDoc,如果api 没提供,就自己去研究协议,分析数据罗

4.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: mochow
Posted on: 2004-04-05 10:50

http://www-900.ibm.com/developerWorks/cn/
上搜索“socket”,找到“Java 套接字(socket)101”
进去学习这个教程

5.Re:Java中Socket以及TCP包分析的问题。 [Re: mochow] Copy to clipboard
Posted by: Raistlin
Posted on: 2004-04-06 21:25

mochow wrote:
http://www-900.ibm.com/developerWorks/cn/
上搜索“socket”,找到“Java 套接字(socket)101”
进去学习这个教程


找不到呀

6.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: NcitZhang
Posted on: 2004-04-06 21:58

为何不看看sun的源码?

7.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: mochow
Posted on: 2004-04-07 10:26

晕死,隔了一天,搜不到中文的了,不过英文的还有
http://www-106.ibm.com/developerworks/java/edu/j-dw-javasocks-i.html

免费注册一下就可以学习这个教程了。
至少把socket和tcp的关系讲清楚了。

http://groups.yahoo.com/group/mo_chow/files/
也放了一份

8.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: pengtaoli
Posted on: 2004-04-22 10:00

理解不是很深。但是从网络模型讲,socket应该是应用层的。(不知道为什么是表示层)我们用的应该都是Tcp/Ip四层模型。从这样的角度讲,socket应该可以得到tcp的包头信息。

9.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: mochow
Posted on: 2004-04-22 10:12

那里面所说的表示层是计算机网络的OSI的七层体系结构中的表示层:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层

tcp/ip协议栈中的四层模型:
接入层
网络层
传输层
应用层

两者的网络层和传输层是一一对应的。
其余的也可以在相应的位置对应起来,
数据链路层对应于接入层
OSI的应用层,表示层,会话层对应于tcp/ip的应用层

10.Re:Java中Socket以及TCP包分析的问题。 [Re: kingcal] Copy to clipboard
Posted by: kingcal
Posted on: 2004-05-11 15:23

非常谢谢各位网友。尤其是mochow朋友。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923