1
est 2014-08-20 00:03:28 +08:00 via Android 1
差不多没错。ttl搞到256应该没问题
|
2
billlee 2014-08-20 00:07:30 +08:00 1
ping 可不是查路由表,是向目标发送一个 ICMP type=8 消息,目标收到后回复一个 ICMP type=0 的回复。
ICMP 是 Internet 控制消息协议,用来传输关于网络层上的各种问题的消息,想什么 target unreachable 啊,路由建议什么。 TTL 是 IP 里面的,表示这个 IP 包还能转发多少个 hop. 用来防止环路导致的 flood. |
3
66450146 2014-08-20 00:22:35 +08:00 via Android
IP 和 ICMP 从某种意义上来说是鸡和蛋的关系。。。
|
4
wsph123 2014-08-20 00:35:05 +08:00
http 长连接 不安全应该还是谈不上吧?
|
5
XDA 2014-08-20 07:55:25 +08:00 via Android
这种东西不是应该去翻书么,<HTTP权威指南><TCP/IP详解>
|
6
zichen0422 OP @XDA 一个场景就是我当时突然被问到,来不及翻书. 所以根据记忆去说的。
|
7
zichen0422 OP @wsph123 我也说不清到底安全不安全, 我只是模糊记得长连接有点不安全.
|
8
zichen0422 OP |
9
julyclyde 2014-08-20 10:35:01 +08:00
@zichen0422 谁查不到路由表,谁就负责产生unreachable。一般计算机都有默认网关,所以不会给自己产生这个消息的
|
10
msg7086 2014-08-20 11:30:28 +08:00
keep-alive是持久连接,不是长连接。保持会话用的是cookie,和连接也没关系,单次连接中的多个请求本身是会话无关的。甚至有可能单个持久连接中的请求来自不同的人和不同的机器。(比如持久连接的http代理)
|
11
bombless 2014-08-20 11:55:47 +08:00
纠正一个错误。
1.0默认是短连接,1.1默认是长连接也就是说Connection头并不是非加不可。 长连接的好处是降低三次握手开销,也就是多个请求能重用一个tcp连接,但是要注意的是维持tcp连接也带来开销。 这里面没有什么安全隐患。 |
12
bombless 2014-08-20 11:58:15 +08:00
还有就是ICMP并不是IP封起来的另外它当然也有TTL。它跟IP是同一层的。
|
13
zichen0422 OP |
14
zichen0422 OP @bombless 额, 明白, 谢谢指点, icmp处于网络层(今天才知道,哭死)。
我上面所说的意思是: 我可以通过建立原始套接字来获取icmp返回的数据包, 然后剥离来解析icmp数据, 分析icmp_code,type等。 |
15
billlee 2014-08-20 14:22:04 +08:00
@bombless @zichen0422 根据 RFC 792, ICMP 包有和 IP 包一样的头部,并且 "uses the basic support of IP as if it were a higher level protocol".
把 ICMP 包理解为是 IP 包封起来的完全没有问题。只是在协议中,ICMP 是 IP 的一个部分。 |
16
zichen0422 OP @billlee 感谢一起讨论!
|
17
bombless 2014-08-20 14:35:54 +08:00
|
18
bombless 2014-08-20 14:43:10 +08:00
对了还有一个问题是Transit-Encoding: Chunked也会带来长连接,这个时候Content-Length会被忽略,因为对方不能确定数据有多长,这时候也是持久连接(有些人觉得这种才叫长连接)。
不过细节我忘了,现在手机不方便查。 |
19
bombless 2014-08-20 14:47:25 +08:00
搜chunked encoding内容还挺多的,包括维基以及几篇中文博客。
头部的名称应该是Transfer-Encoding我打错了。 |
20
bombless 2014-08-20 14:57:55 +08:00
啊,我18楼的说法是错误的,我只是想起长连接的内容却把它和持久连接化为一谈…
以及更早的11层的内容我应该改叫持久连接。 所以澄清一下,Transfer-Encoding: chunked称为长连接。 |
21
msg7086 2014-08-20 19:29:34 +08:00
@bombless 没错。
持久连接是一次TCP会话处理多个请求和回复,是用来减少握手次数的技术。 长连接是发起一个请求以后,服务器端在很长的时间内逐步多次返回数据,由浏览器分多次显示或者执行的技术。一般是请求一个javascript,逐步返回各种函数,并由浏览器分多次执行。方式就像楼上说的,用chunked返回不定长的body。 --- @zichen0422 顺便at你。 |
22
zichen0422 OP |