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