假的IP是没法tcp/ip握手的,你拿什么通知应用层
怎么说你才能明白
为什么你总是把思想停在这一层?
数据流到tcp这层是确实是真IP,这个IP信息是在信息包的头里.而到应用层时,这个头[color=red]不再[/color]传递给应用层,应用层(比如php)得到的包有自己的头信息.而php取到的IP地址就是从这个包里取到的.
打个比方:你发一封信给你的朋友,这封信到你朋友手中,这条送信的路线是真实的,肯定是从你的地址传递到你朋友的地址.但你朋友看到信时,他并不知道你的真实地址在哪里,只能从信封看你的地址.而信封上的地址是可以乱写的.
我把一个字母用http方式从一台计算机发送到另一台计算机,这个字母在应用层时会被封装成一个http包,除了这个字母外,还带有http头信息.
这个包在传递给下一层(tcp/ip)时,它整个被当成一个正文,在它前面再由tcp/ip协议给它添加上新的头信息....依次类推.
接收端在接收时,依次将头信息解码还原,所以到应用层时,[color=red]已不包含底层信息[/color](这些信息才是最真实的).
北京野狼 回复于:2005-10-12 12:01:57
引用:原帖由 "tonera"]这些信息才是最真实的).
发表:
兄弟,逻辑完全错误。
前提是你使用假IP,连接前自己改过IP头。你的数据流里面根本没有”真IP“。
你举的发信的例子就能说明。你乱写了自己的地址,你朋友就没法给你回信。
tcp/ip的三次握手其中一次就是server,给client"回信",确认client.
你的三次握手只能做到1次半。
一次连接,一个http请求不是一次发信过程,是c/s多次沟通。
你的逻辑太凌乱了。
HonestQiao 回复于:2005-10-12 12:04:50
请继续私下讨论,谢谢
tonera 回复于:2005-10-12 13:52:11
向野狼致敬.
是我在测试中忽视了一个重要环节.
询问了一些人,发现$_SERVER['REMOTE_ADDR']不是从http包里取到的,而是从系统中得到的.所有这个变量不可被欺骗.
不过,我前面那个对tcp/ip通信的理解的两点(层层封装,层层解码)被你认为是错的,让人费解.
HonestQiao 回复于:2005-10-12 14:05:32
引用:原帖由 "TCP协议通讯工作原理" 发表:
[color=red]一、TCP三次握手[/color]
传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示:


在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。
[color=red]二、TCP标志[/color]
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 能否 作弊 TCP 连接 数据 一个 标志 IP 回复 请求 机器 |
注册
个人空间
