整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

雁荡山最精华山脊线环线穿越驴线超详细攻略!驴友必收藏

雁荡山最精华山脊线环线穿越驴线超详细攻略!驴友必收藏!

图:徐括


五老巅——石船山线徒步线路分析


由于本次徒步使我基本搞清了雁荡山脉最精华部分:五老巅——石船山一线山脊走向和山峰分布,所以先来全面分析下这一区域由各登山口上到这条山脊线所形成的徒步线路。

为什么说“五老巅——石船山”一线的山脉是雁荡山的最精华所在?因为雁荡山风景名胜区最精华的“两灵一龙”、方洞、三折瀑和森林公园六大景区都分布于这片山脉的山下。灵峰在东南,三折瀑、森林公园、灵岩、方洞在南侧的山下依次排列,大龙湫则在它西侧山谷中,正是这条山脉蕴育了雁荡山最壮美的绝佳风景。如果把我之前诸文章中介绍的“线路1、2、3、4”叫做“雁荡山主景区中路徒步”的话,今天所介绍的这条线路则可称做“雁荡山主景区高路徒步”。

如下图卫星截图可知,从山脊线走向看,五老巅山脊与“麒麟背”所在的石船山山脊呈“Y”字形最终在灵岩景区内的卧龙谷上方北侧聚合,山脊虽有断裂,但总体保持上升态势,一直延伸至雁荡山最高峰——百岗尖。从南侧山下来看,登上五老巅山脊的山径主要有朝阳嶂下的两个登山口(详见“雁荡山 经典徒步线路攻略(四)- 朝阳嶂:https://www.mafengwo.cn/i/7295375.html”);登上石船山山脊的山径正是本线路要介绍的位于灵岩景区上方的莲花洞附近茶园的上山野道,和位于卧龙谷上方新建玻璃栈道某处的上山野道。另外,从森林公园景区内一直向上爬升,可到达图中位于五老巅山脊上的“垭口1”,向左可去石船山,向右可去登顶五老巅,如果翻越这个垭口沿野道可一直走到百岗尖(详见“最全登顶 雁荡山最高峰“百岗尖”线路:https://www.mafengwo.cn/i/7289960.htm”)。所以,综上所述,徒步者可以在山下选择上面介绍的任意两个上山口做为起点和终点,规划一条自己的徒步石船山或五老巅山脊的线路。

本线路分析:森林公园景区停车场--游丝嶂背---莲花洞附近茶园------石船山山脊与五老巅山山脊交点---垭口2---箬竹林---卧龙谷玻璃栈道---灵岩寺---灵岩景区出入口---景区公路---森林公园景区停车场

推荐指数:AAAA
难度指数:AAAA
适合人群:有一定经验的户外徒步爱好者
预估全程时间:5-6小时(大环线13km),4小时左右(小环线8km)

综合评述:此线路的精华段在于石船山山脊,特别是麒麟背一段,确实惊险、壮美,而且一路可以远眺方洞上方的板嶂岩,高险奇绝。最艰难的一段是由垭口2下到灵岩景区卧龙谷玻璃栈道段,全为临时开辟的土路和溪流岩石段(后面有详细照片为证),强烈建议勿在雨天前往。下图所绘制的为大环线,但如果你不想走太多冤枉路,只想感受下这条线路的精华,可以走本线路的小环线:灵岩景区出入口---灵岩寺---莲花洞附近茶园---石船山山脊(麒麟背)---石船山山脊与五老巅山山脊交点---垭口2---箬竹林---卧龙谷玻璃栈道---灵岩寺---灵岩景区出入口,这样至少可以节省一个半小时以上的时间。但代价是需要购买灵岩景区的门票。另外,如果你在到达垭口2后仍有体力,可以尝试继续向前登上雁荡最高峰——百岗尖,再由JY公路走下来,或叫辆车上来接你(车费得自己谈,一般在150-300元间)。那就是个超大的环线了。

麒麟背大环线徒步线路图,如果走小环线,需要先进入灵岩景区核心——灵岩寺所在的谷地。

本人华为运动手表记录的实际线路情况,由于在穿越“箬竹林”时操作失误,手表运动轨迹重启了一次,所以这里看到有两段,仅供参考。

第一段:森林公园停车场至莲花洞附近茶园

这一段线路与“雁荡山经典徒步线路攻略(二)-森林公园门外至灵岩:https://www.mafengwo.cn/i/7305893.html”中介绍的”线路2“完全相同,所以不再做详细介绍。由于“线路2”写作于十多年前,所以山下的部分建筑和设施有些改变,请注意区分。

上图为线路起点的,即位于森林公园景区入口左侧的登山道。注意不要进入景区,这条道位于景区外的停车场。

十年前看到此墓非常平常,现在已明显被修葺过,由于清明刚过不久,应该有人祭扫过。

刚开始段现在的路旁有座挺大的民宿叫“林下见鹿”,之前还真没听说过,以这样的规模,有些低调了。

”线路2“现在已非常成熟,沿途可以看到大量户外团队遗留的红丝带,它上升段坡度很大,很费体力,但总体不长,约一小时就能免费进入灵岩景区了。估计这就是它受欢迎的原因了。

第二段:莲花洞附近茶园至垭口2

在”线路2”上我们花了很多时间去寻找上山道,最后才发现是在灵岩景区上方的莲花洞附近的茶园边。标志就是这个“禁止通行”的牌子和非常非常多的红丝带。了解到这里我们还是有些后悔,因为如果早点知道在这个位置,我们就会从灵岩景区直接进来了,因为时下,景区对所有乐清人仍是免门票的。

入口的标志就是这个牌子和数不清的户外丝带了。

10:43 这里实际上离山下高度至少有150多米,可以平齐看到对面的天柱峰顶。从灵岩寺走上来,虽然有很好的石阶路,但坡度很大,相当耗费体力。这里开始就都是土路了,开始段基本在茶园的左侧。

走出一点就开始爬升了,路迹非常明显,不用担心迷路。

11:11,不到半小时的时间,我们就登上了山脊。

再向前走出100来米,我们便看到这峭立的山脊,可以断定是麒麟背到了。

为了详细记录麒麟背的美景,我和同伴R用山脊上的片石搭起一个平台,方便无人机起落。R负责操控无人机拍摄,我则在这段山脊上走了两个来回。

麒麟背尽头的一座山峰,走完麒麟背后就要翻越它。

东北方向是五老巅,它们间的峡谷就是净名谷。

麒麟背的岩石呈片状,在千万年的地质作用下被压断、转动,直戳天穹。

麒麟背这名称的由来,应该是因为这岩壁的纹理类似于传说中麒麟身上的鳞片。

11:58,在完成航拍后,我们继续前行。

翻越过一座小山峰后,又是一段类似于麒麟背样的山脊,但宽度要大些,看起来没之前那么惊险。

12:34接下来的路大多是在悬崖边行走,眼在天堂,脚若稍有闪失,就可能坠落地狱了,必须小心对待。

南侧山下可以清楚地看到去年刚建的连接方洞景区与灵岩景区的玻璃栈道。它所在的山谷就是小龙湫上方的卧龙谷。

12:38前面又是一座笔直的山峰,R说好象没路了,我说走到跟前就有了。

12:45我爬上峰顶时R还在峰底的茶园。一路上很多地方都被种上了茶树,使山间野道感受起来不那么荒芜了。

这个角度可以比较完整地看到净名谷内的全貌,雁荡山的险峻可不是浪得虚名。认为雁荡山可轻松拿下的估计都是只游历过山下主景区的人。

13:05,又行一段后,我们来到了一个三叉路口,我才意识到这里就是石船山山脊与五老巅山脊相交的地方,至此两条山脊汇合成一条继续向西北方向的雁荡主峰——百岗尖延伸开去。这里有很多垃圾,应该徒行到此进行休憩的团队比较多,我们甚至还捡到了一个保温杯(上图这个),里面盛的茶液都还没有变质。

此地远眺五老巅,完整的山形对称端正,庄严老成。

在西北侧石船山山脊与五老巅山脊汇合成一条继续向雁荡主峰——百岗尖延伸开去。就近的这段山脊比麒麟背还要狭窄,而且怪石突起,粗看根本无处下脚。与R商量后我们决定继续前行,如果真没路再折回。

正南侧的卧龙谷就在脚下。更远处是飞泉寺所在的山脉。

继续向前,拍了张已走过的路。

12:25我们来到了一座断崖前,明明可以看到对面山崖上的路,但已疲惫不堪的我们必须先下到崖下才能再爬上去。

居高临下是看不到下面路的情况,只能循着还算清晰的路迹向下探寻。

很快在山腰的右侧找到了一条下降的绳索。

循绳下降,在中途发现一条向右的叉道,我怀疑这路是去“垭口1”的一条土路,但人已很疲惫,就没有去探证。

下到峰底,路迹变得有些模糊,好在树上的红丝带一路指引。

然后我们又爬上了对面的一座山峰,在这里可以看到北面的群山,远处那几列应该已是永嘉地域了。

在我们东北方向的不远处,隐约有条山道,我推断那就是从森林公园登顶百岗尖的山道(详见“最全登顶 雁荡山最高峰“百岗尖”线路:https://www.mafengwo.cn/i/7289960.htm”)。

13:53又跃上一峰的峰顶,看起来百岗尖已经很近,但估计真走到那里,没个把小时是拿不下来的。在我们到达五老巅与石船山交叉口时,我们本打算再向前探索一段就折回下山的。没想到越走越深,两边也一直看不到下山的路。

又下一峰。

14:07我们下到了峰底的一块空地,这块地方抛满了很多垃圾。R催促我快点继续向前,我却感觉有些不对,为什么那么多团队选择在这里驻足?所以我在空地的四周仔细巡视了一遍,很快就在峰底的岩石边发现了一条隐藏在箬竹林中的小道(下图)。于是我们决定由此处回,因为如果这里能顺利进入灵岩景区的话,将大大节省回程的时间。而如果我们去登顶百岗尖,那到达百岗尖的时间目测是还需要一小时,但实际情况无法预知,并且上到百岗尖的JY公路,走下来至少还要1.5小时。为了标记这个可以折入灵岩景区的地方,我把它标记为“垭口2”。

第三段:垭口2至灵岩景区

箬竹林的路况如上图所示,总体有约400米的长度。竹比人高,环境幽闭,路面湿滑,一个人走这种是要点胆量的。R滑倒了两次,我建议他抛掉手中的木棒,改用双手都去抓住两边的竹节,加强身体稳定性,减缓下冲势能。

14:25我俩终于走出了箬竹林,这时可以清楚地听到山下传来的人声,我们推断是行走在玻璃栈道上的人发出的。

接下来的路也好不到哪里去,先是一段灌木丛和着杉木林的下降路,再是沿着一段溪流下行。脚下虽然艰难,谷中的人声却越来越清,有时仿佛就是从前方不远处传过来,我们心情大好。

最后一段就是沿着水管走。

15:04 水管尽,小屋现,玻璃栈道到达了。

从玻璃栈道上看我们下来的地方,同样是个“禁止通行”的牌子。

抬头仰望我们下来的“垭口2”所在处,我们估计应该是上图左侧的凹处。

我们沿玻璃栈道下行,就下到卧龙谷中,再继续向下就到达灵岩景区内,出景区,沿公路又走了半小时回到了森林公园停车场时已近下午四点,提车归家。

有互联网服务,均依赖于TCP/IP协议栈。懂得数据是如何在协议栈传输的,将会帮助你提升互联网程序的性能和解决TCP相关问题的能力。

我们讲述在Linux场景下数据包是如何在协议层传输的。

1、发送数据

应用层发送数据的过程大致如下:

我们把上述处理过程的区域大致分为:

1. User区域

2. Kernel 区域

3. Device区域

在user和kernel区域的任务都是由本机cpu执行,这两个区域合并称为host区域,以区分device区域(网络接口卡上有单独的cpu)。device是接收和发送数据包的网络接口卡(Network Interface Card),一般也称为LAN card。

当应用程序调用write(fd, buf, len)来发送数据时,用户态区域会进入内核态区域,建立这个关系的纽带是socket fd和系统调用write。

在内核态的socket有两个buffer:

1. send socket buffer,用于发送数据

2. receive socket buffer,用于接收数据

当write系统调用被执行,用户态的数据(buf,长度)会被拷贝到内核区域的内存,并被放入到send socket buffer的末尾(见下图,发送是按照顺序发送的),然后TCP就会被调用。

TCP中的数据结构是TCB(TCP Control Block)。TCB包含了执行TCP会话所需要的信息,包括TCP连接状态,接收窗口,拥塞窗口,序号,重传timer 等。

TCP会创建TCP数据分段,而TCP数据分段包括TCP header和payload,如下图:

Payload是待发送的socket buffer中的数据,而TCP header是为了TCP可靠发送数据而加的辅助信息。

这些数据分段会进入到IP层,IP层会加上IP头部信息到数据分段,如下图:

IP在执行路由之前会去检查Netfilter LOCAL_OUT钩子,看是否需要执行iptables相关配置。之后执行IP路由。IP路由主要功能是寻找下一跳(例如网关或路由器)的IP地址,而路由的目的是到达目的地IP地址所在的机器。

IP执行路由之后,检查Netfilter POST_ROUTING钩子,如果有iptables在这方面的配置,就会去执行相关操作。委托给数据链路层之前,IP层还会执行ARP(网络地址转换),通过下一跳IP地址来查找目的MAC地址,并把Ethernet头部添加到IP数据包,如下图。

IP层同时还给用户提供了raw socket接口,即发送数据包的接口。raw socket发送的数据包与正常流程的数据包不一样,在执行Netfilter的时候,会跳过这些钩子。

IP层做完工作以后,会把数据包(上图中的数据包,一般称frame)委托给数据链路层。

由于ARP已经把目的MAC地址写入到数据包头部,这样就减轻了驱动driver的工作。进入数据链路层后,内核会去检测是否有抓包工具在监听抓包(例如tcpdump),如果有,内核会拷贝数据包信息到抓包工具的内存地址空间。

之后,根据一定的协议规则,驱动driver会要求NIC传递这个数据包。当NIC收到这个请求后,NIC复制数据包到自己的内存里,并且发送给网络。当NIC发送完一个数据包,会产生一个中断, 主机 cpu去执行中断处理程序,完成后续工作。

2、接收数据

应用程序接收数据的过程大致如下:

首先NIC把数据包写入自己的内存,并校验数据包是不是有效的,如果是有效的,把数据包写入主机的内存空间,然后NIC给主机操作系统发送一个中断信号,这时就进入到kernel区域。

在数据链路层,内核首先会做数据包检测,然后Driver驱动把数据包进行改装,以便后续TCP/IP能够理解这个数据包。改装完以后,根据Ethernet头部信息中的Ethertype分发给上层,假设为IPv4,去除Ethernet头部,并发送给IP层。值得注意的是,委托给IP层之前,如果有抓包工具在监听抓包,那么内核就会拷贝数据包信息到抓包工具的内存地址空间。

IP层通过计算checksum来校验IP头部的checksum是否有效,如果有效,接着检查PRE_ROUTING钩子(比如查看是否有iptables的相应配置需要执行),然后执行IP路由,IP路由会判断这个数据包是本地处理还是转发当前数据包到其它主机。如果是转发数据包,执行FORWARD和POST_ROUTING钩子,并转发给数据链路层;如果是本地处理,IP还会检查LOCAL_IN钩子,执行完以后,根据IP头部信息的proto值,假设为TCP,去除IP头部,并把数据包传递给上层TCP。值得注意的是,委托给TCP层之前,如果有raw socket在监听抓包,那么内核会拷贝数据包信息到raw socket的内存地址空间(默认tcpcopy利用raw socket来监听IP层的数据包)。

TCP层会根据TCP checksum来检测数据包是否有效(如果采用了checksum offload,NIC会去做相关计算),然后就给这个数据包查找相应的TCB(TCP control block),查找的方法是通过如下组合信息来查找:

<source IP, source port, target IP, target port>

如果没有查到,一般会发送reset数据包;如果查到了,进入TCP数据包处理环节。

如果是接收到新数据,TCP就会把它放入到socket接收缓冲区,然后根据TCP状态,必要时发送ack确认数据包。Socket接收缓冲区的大小就是TCP接收窗口大小。在某种程度上,如果接收窗口很大,TCP吞吐量就会很大。目前较新的内核都能动态调整窗口的大小,无需用户去修改系统参数。

用户应用程序根据读事件去执行读操作,用户态空间进入到内核空间。内核把socket buffer里面的内容复制到用户指定的内存区域,然后把socket buffer读取过的内容释放,TCP增加接收窗口大小,如果有必要,会传递一个更新窗口的数据包给对端TCP。例如下图,TCP发送了一个ack数据包,用于通知对端TCP,本方TCP接收窗口更新了。

读取操作完成后,返回应用程序,应用程序就可以进行对数据进行处理了。

3、抓包工具工作原理

知道了数据如何发送和接收以后,我们分析一下tcpdump抓包原理。

在数据链路层和IP层交界的地方(属于数据链路层,如下图),是数据包被tcpdump捕获的场所。

执行到这个交界处时,内核会去查看tcpdump是否在监听,一旦有监听,就把数据包内容放入到tcpdump设置的缓冲区。理论上只要tcpdump及时去提取数据,在线上压力不大的情况下,抓包不会丢包。

tcpdump所抓到的数据包,仅仅是代表数据包经过了链路层和网络层之间的交界处。从网卡进来的数据包未来的命运,可能是继续一路往前走到TCP,也有可能在IP层被干掉,还有可能被路由转发出去;从本机发送出去的数据包,一旦被tcpdump捕获到,说明已经到了数据链路层,没有被IP层过滤掉,因为如果数据包被IP层过滤掉,这些数据包就不会到达tcpdump捕获点,也不会出现在抓包文件里。

下面我们通过一些实验来验证上述结论。

实验之前,我们先介绍一下iptables工具。iptables是被广泛使用的防火墙工具,它主要跟内核netfilter数据包过滤框架进行交互。

3.1 实验 LOCAL_IN过滤

我们在服务器上面配置如下的iptables命令:

iptables -I INPUT -p tcp --dport 3306 -s 172.17.0.2 -j QUEUE

上述iptables命令设置了"-I INPUT"参数,意味着在netfilter LOCAL_IN钩子处执行上述iptables规则,即通往服务器端TCP之前,如果匹配到上述iptables规则,则会被放入目标QUEUE(默认情况下是直接丢弃数据包),不再继续前行。

具体命令执行见下图:

设置上述iptables后,当172.17.0.2访问172.17.0.3 3306服务时,IP数据包(如下图绿色箭头)会在服务器端IP层被丢弃掉,而红色箭头所指方向是tcpdump抓包的地方。

我们开启tcpdump抓包:

tcpdump -i any tcp and port 3306 and host 172.17.0.2 -n -v

在172.17.0.2上利用MySQL客户端命令访问172.17.0.3上面的3306服务,如下图:

结果经过长时间等待,最终显示连接不上。

服务器端抓包结果如下:

我们看到第一次握手数据包反复重传。

利用netstat命令,查看有没有相应的TCP状态,结果发现没有,如下图:

正常情况下,没有TCP状态,说明数据包没有进入服务器端TCP,第一次握手数据包在服务器端IP层被干掉了。

利用netstat -s命令,在服务器端TCP/IP统计参数里找线索:

上图服务器端IP层接收到20079个数据包,下图接收到20086个数据包,MySQL客户端登入过程累计增加了7个数据包,正好符合抓包文件显示的7个第一次握手数据包。

在服务器端TCP层,对比上面两张图,数据没有任何变化,说明了服务器端TCP没有收到任何数据包。

实验说明了在服务器端IP层进来的方向干掉数据包,服务器端TCP层不会有任何变化。

3.2 实验 LOCAL_OUT过滤

我们这次实验的目的是查看IP层netfilter LOCAL_OUT情况下的抓包情况。

如下图:

我们设置如下iptables命令:

iptables -I OUTPUT -p tcp --sport 3306 -d 172.17.0.2 -j QUEUE

具体操作如下图:

上述iptables命令设置了OUTPUT参数,意味着在netfilter LOCAL_OUT钩子处会执行上述iptables规则,即IP数据包在IP路由之前,如果匹配上述iptables规则,则会被放入目标QUEUE(默认情况下直接丢弃数据包),不会继续往下走。

在172.17.0.2上利用MySQL客户端命令访问172.17.0.3上面的3306服务,如下图:

结果经过长时间等待,最终显示连接不上。

服务器端抓包结果如下:

我们看到第一次握手数据包反复重传,跟上一个抓包结果几乎一模一样

利用netstat命令,查看有没有相应的TCP状态,结果发现有SYN_RECV状态,如下图:

有TCP状态,说明数据包进入服务器端TCP,并进入SYN_RECV状态,服务器端TCP会发送第二次握手数据包,但抓包显示并没有第二次握手数据包,说明被iptables配置干掉了。

查看netstat -s结果:

上图显示了实验之前的值,下图显示了实验之后的值。

从TCP层面信息来看,发送了17个数据分段,说明服务器端TCP发送了第二次握手数据包,而且发送了很多次,但因为设置了iptables,这些数据包被拦截掉了,所以到不了数据链路层,也就没法被tcpdump捕获到。

从这两个实验来看,tcpdump抓的数据包是一样的,都是在努力重传第一次握手数据包,但iptables设置的位置不一样,一个在入口,在TCP层无状态,一个在出口,在TCP层有状态。

进一步的分析可以尝试下面两个方向:

1. 通过分析TCP状态来区分这两种情况

2. 利用netstat -s给出的TCP/IP统计参数变化

通过上面实验,我们看出tcpdump抓包只是从一个点来观察世界,并不能看到全貌,这个时候就需要通过推理来辅助解决问题。

4、潜在协议层的干扰

4.1 接收数据

下图展示了数据包从NIC到协议栈,再到应用程序的过程。

TCP offload由NIC完成,目的是减轻TCP的工作量,但存在潜在坑;在数据链路层,存在抓包接口,供tcpdump等抓包工具抓包,同时也存在着raw socket原始抓包方式接口;在网络层,存在raw socket抓包接口,IP Forward转发功能,还有一整套Netfilter框架(存在大量坑的地方);在TCP层则相对比较清静,干扰少;用户程序通过socket接口从TCP取出数据或者获取新建连接。

4.2 发送数据

下图展示了数据包从应用发送数据到NIC的过程。

用户程序通过socket接口来委托TCP发送数据或者建立连接;在网络层,存在raw socket发包接口,还有一整套Netfilter框架(存在大量坑的地方);在数据链路层,存在pcap发包接口,同时也存在着raw socket原始发包接口;TCP offload是NIC做的,目的为了提升减轻TCP的工作量(比如分段,checksum),我们也遇到过由于TCP offload不当导致的丢包问题。

4.3 案例

下面是一个从NIC接收数据包,并一路到应用,再发送响应出去的案例:

我们的应用程序是Nginx(Web服务器软件),其中Nginx配置监听端口为8080,且开启access log。

上图设置了nginx keepalive_timeout=0,即保持客户端空闲连接(方便实验)。

启动nginx,通过netstat查看,nginx已经在监听8080端口的连接请求。

刚开始nginx没有任何访问,access log都为空,iptables也没有设置。

在172.17.0.2机器,利用telnet访问172.17.0.3上面的8080端口服务,如下图:

这样telnet跟nginx建立连接,下图可以看出服务器端相应连接已经进入ESTABLISHED状态。

建立连接后,我们设置iptables命令,如下图,对返回172.17.0.2的nginx响应进行拦截并丢弃。

我们在客户端(172.17.0.2)上面继续执行telnet命令,键入"GET hello.html",然后回车执行。

从nginx日志来看,这个请求已经被处理了,虽然是非法请求,但请求已经确认到达nginx了。

大概过了2分钟,查看客户端抓包情况,累计捕获了16个数据包,客户端还显示连接处于ESTABLISHED状态。

我们查看服务器端情况,利用netstat已经查不到服务器端的相应连接了,说明连接在服务器端的TCP层已经不存在了。

我们分析抓包情况(服务器抓包和客户端抓包效果一样):

自从发送了请求数据包,客户端由于没有看到任何服务器端的数据包回来,一直在重传请求数据包。客户端以为服务器还没有收到请求,但其实请求已经被nginx处理完毕。

在服务器端查看netstat -st的统计情况。

上图是执行telnet请求之前的状况,下图是执行telnet请求之后的状况。

从上图我们可以看出connection aborted due to timeout增加了一个,说明在服务器端TCP看来,请求的响应数据包(同时带有关闭fin标志)由于发送不出去,连接被aborted,这个时候在服务器端看不到连接相应状态的存在。

在上层nginx看来,遇到了非法请求,回复了响应并关闭了连接。在TCP层看来,由于带有关闭fin的数据包到不了tcpdump抓包接口,服务器端的TCP状态会处于FIN_WAIT_1状态("遇到大量FIN_WAIT1,怎么破?"会有详细介绍),会维持一段时间并不断努力重传。由于重传一直得不到响应,TCP就把FIN_WAIT_1状态变为CLOSED状态,在服务器端查不到该连接了。

这里案例中,我们事先知道我们设置了iptables,但如果不知道呢,我们如何判断出问题出在哪一个环节呢?

仅仅靠tcpdump抓包,明显不够,因为通过抓包分析,我们只能得出服务器端没有接收到请求,我们还需要利用服务器端的信息,才能继续进一步判断。通过nginx日志,判断出请求已经被应用层处理了,说明请求数据包已经到达应用层,nginx已经处理请求,并作了响应处理,接着委托服务器端TCP去发送这些响应数据包,但显然服务器端TCP发送的响应都没有到达抓包接口,说明在IP层干掉了,于是可以根据这些信息去找数据包出去方向(outgoing)的netfilter相关配置,看看有没有这样针对这些响应进行过滤。

从上面案例,可以看出仅仅利用tcpdump是不够的,还需要综合利用各种信息,并加以推理,最终得出问题出在哪一个环节,才能解决问题。如果不会利用这些知识,客户端就就会得出服务器端没有收到请求的错误判断。

5、跨机器判断

在跨机器访问过程中,存在着如下潜在干涉(坑):

1. 本机器自身IP层安全过滤

2. 链路层发送QUEUE丢包

3. 链路层TCP offload潜在问题(这里把NIC归入数据链路层)

4. 中途设备各种问题(设备包括路由器/交换机/防火墙/网关/负载均衡器等)

5. 对端机器链路层接收QUEUE丢包

6. 对端链路层TCP offload(NIC)潜在问题

7. 对端IP层安全过滤

8. 对端TCP异常状态干扰

这些问题将在TCPCopy和其它章节会有所介绍,这里不再详细描述。

6、常用工具工作层次分析

上图展示了部分流行性工具的工作层次,比如tcpcopy默认工作在4层,调用IP层提供的raw socket接口来抓包和发包;netstat或者ss工具可以去获取TCP/IP各种统计值;LVS工作在4层,利用Netfilter来强行改变路由;tcpdump工作在数据链路层;HTTP应用工作在应用层。

懂得了这些工作原理,可以更加深刻的理解问题,并解决各种TCP相关问题。

克线---这些年,在普通游客中知之甚少,而在户外圈却声名鹊起。说到洛克线,难免先要把户外圈大家都知道的故事复述一遍,这也是为了普通读者能够多一点了解。

1928年3月,美国探险家约瑟夫·洛克从木里出发,穿越稻城、亚丁等地,深入贡嘎岭地区。他两次穿越稻城亚丁之后,在美国《国家地理杂志》发表了他撰写的文章和拍摄的照片。

1933年4月,詹姆斯·希尔顿(James Hilton)以此约瑟夫·洛克穿越时的文章和照片为素材,尤其是洛克贡嘎岭三座神山(仙乃日、央迈勇、夏诺多吉)的探险经历,创作了著名的小说——《消失的地平线》》(Lost Horizon)

人们将小说中所描述的“世外桃源”称之为“香格里拉”,同时也在世界范围内兴起了寻找香格里拉的热潮,洛克探险时从木里穿越到贡嘎岭地区的这条线路,就是后人所说“洛克线”。

想一睹风景的人都必须得踏上千百年来的茶马古道,徒步深入自然,转三座神山,才能一睹寻常人无法窥探的瑰丽。由于交通和自然条件所限,洛克线至今没有被开发,这里是地球上所剩不多的一块净土,这里是一块人类涉足有限的处女地。

“洛克线”,是一条世界级的精品徒步穿越路线,由木里县境内的水洛乡起,沿白水河而上,穿越水洛贡嘎,围绕夏朗多吉、仙乃日、央迈勇三座神山而行,直至进入稻城亚丁。沿途景色是由森林、河流、山涧瀑布、湖泊、雪峰组成的高原风光,整个旅程美景不断,目不暇接。

(图片来源网络)
虽然关注了好几年,但是2019年起才提上日程,当年各种原因没有成行。今年,从6月起,也有几次机会但都未能实现,进入8月,各种不利因素轮番出现,先是,成都到西昌的火车因塌方中断,不知何时能在通行。然后,四川多地8月暴雨塌方不断,天气预报也看不出何时能好转。
不过,既然下了决心就尽力去实现。这条线路出于安全考虑(要让家人放心),同时还出于出行成本(比如西昌到水洛乡需要包车2000多元,穿越需要请向导每天200元等,一个人负担会比较高)需要约上通行驴友。于是,又花了一些时间在网上约人,总算跟上一个8月18日西昌会合的队伍,最后确定下来的有5个人,重庆2人,杭州1人,洛阳1人,加上我,别的没多了解,只知道我年纪最大。
其实,我已经好多年没有背包穿越了,2018年徒步雨崩,因为可以吃住在村子里,所以,没有带露营装备和准备餐食,相对而言轻松很多。这次提前准备,把很久不用的帐篷等装备拿出来,检查发现,充气垫也漏气了,换成蛋巢。一双买了几年的麦乐徒步鞋没用过也拿出来用。背包担心被驮马磨坏,用了朋友送的从来没用过的军警背包。其他基本上没多大问题。


8.17 遵义到成都,上午7点过的火车,一路感觉天气都还好,不时有点太阳,快到成都时天阴了下来,但是没下雨,心里多少有点安慰。不过各种资讯传来的消息似乎并不乐观,四川很多地方仍然是大雨乃至暴雨,各地交通管制,黄色和红色预警,家里一直表示很担心。

晚上到永辉超市买食品,回来又遇大雨,心理还真有点不踏实。和队友约的西昌会合,本来可以选北门车站或者茶店子车站,后面有石家庄过来一个队,说她们约了车,8点过到成都站,想想很方便就确定跟她们包的车走。后来说晚点2小时,也还好。
最后,补充的食品和背包一起称,足有20公斤。


8.18 第二天早上,最新消息,石家庄队火车晚点5小时多,有点纠结了。随后,重庆过来的队友2人已确定在东站客车站坐11点的班车,所以,争求几方意见后我网上订到11点半客车东站到车,心想到车站改签到11点和队友一起走。
到客车东站改签窗口,售票员说路上塌方交通中段,只能退票,这就尴尬了!重庆2队友短裤和猴子也得知消息赶过来退票。我联络一些网约车,这时都乱喊价,240380400 一个人不等,短裤在车站门口联络到说有客车220一人,这时杭州队友丸子也下飞机赶过来了,确定就坐这个车。一辆车拉我们到成彭路高架下面一辆晋M牌照的大巴车上,50来个人凑齐开车,这时明白是黑车但也没别的更好办法,1点过了才发车。

出去虽然比较慢天气也不太好,但还算顺利,下午6点来钟车到石棉下道,路边停了好多车,大巴车开进一停车场说交通管制不知道啥时候能走,通知各自散开,9点过来听消息,如果不行就只有等明天再说了。无奈,先填饱肚子再说,4个人转了下找了家顺眼的烧烤店撮一顿,好像没影响胃口。

8点半回大巴,好消息是说往西昌方向可以放行了,坏消息是,司机清点人数差4个人他不敢走,如果这时不走不知道什么时候还能走,大写的尴尬!不行,我们选择报警,警察来了解了情况同意让车走,把没来人的行李带到西昌让他们联系司机取行李,车开进高速我们才松了一口气,这时已经是晚上9点过。折腾了一天晚上12点过终于到达西昌,下午到西昌到队友洛阳已取了气罐,折腾了一整天,5个人终于聚齐了。丸子说,好累啊,明天睡到自然醒。
后面,短裤联系包车司机,由于错过晚10点接我们,新的方案是明早5点另一个车接我们送到木里,再赶包车司机的车到呷洛村,那里还有自然醒。


8.19 凌晨1点过才睡觉,早上4点过就被司机电话吵醒,起来收拾东西退房,5点准时出发。睡意朦胧有点难受,天慢慢亮了,雾气很重,虽然基本没下雨了,但还是阴沉沉的,汽车在盘山路上一会儿上一会儿下,远处的云在山顶个山腰环绕,弯道太多,坐后排的队友被甩得晕乎乎的。

路上见到多处塌方,还好都清理开了,10点过到木里换了兰小军司机的长安面包继续往水洛乡呷洛村进发,出木里吃了点东西踏实一点了。还是一路盘山道,还是多处塌方,虽然车坐得有点辛苦,但感觉离今天的目的地越来越近了,下午,天气也慢慢亮点了。翻过一个大坡,从海拔4000米垭口一直下到3000米,在走了10来公里小路,下午4点来钟终于到达呷洛村。


这一路从成都算起,足有1000公里多,用了2天时间,赶车坐车的辛苦很久没有过了。稍作休息我们出门到村子的寺庙转转,希望后面的行程顺顺利利。5点过钟天有点晾开了,一点点的白云和蓝天让我们好开心,感觉明天的好天气有希望。回到房东家,暖暖的酥油茶和热腾腾的饭菜让我们的胃也安心了,早早睡觉。

自左而右 短裤 司机 洛阳 丸子 猴子 我 一个老大爷跟着一群年轻人:)


8.20 从呷洛村--菩萨洞--下满措牛场,六小时左右,17公里,海拔3000米到3700米左右。爽爽的天气,徒步的好日子。
早上,一壶酥油茶,一盘奶酪还有才出锅的青稞饼,吃饱喝足,收拾东西出发。除了随身小背包,其他行李都交给了马夫(正式名称 解放色空打者次尔他说叫依西 我们亲切称为一休哥 我们的马夫是他夫人)。房东翁丁为我们挂上哈达和扎西德勒的祝福,我们出发了。

走一段后回头看呷洛村 翠绿的村子点缀着彩色的藏式民居,微露的蓝天下白云漂在村子的上面,十分的美丽,经历了两天的赶路天气好转让我们的心情格外愉快,兴奋得边走边拍照,在垭口上,远处的盘山道,近绿远黛的群山 朵朵白云漂在天际,非常动人的画卷!从垭口下到河边,我们沿白水河而上。

菩萨洞,好像洞口有点高没看到,奔腾而下的河水咆哮着,伴随舞动的经幡,我们继续逆流而上。前些天太多下雨,有些大树倒塌阻断道路,向导帮我们翻越障碍。


阳光透过森林,蓝天依稀可见,空气格外清新。森林中各种菌类包括林芝,拍一拍就好。后来还看到好多野韭菜,开着美丽的红色花朵。三点来钟到达今天的营地满措牛场,两边山沟一块不大的营地,过一阵,队友和石家庄6人队也陆续到了。他们的行程和我们一致。

扎好帐篷一阵雨漂来,但不久之后云开雾散,各自埋锅造饭,好些年没做户外餐了,这次我做的米饭(快熟米),小块火锅底料煮的火腿肉加洋葱和香菇,味道还行,超市买的熟菜,努力让自己吃饱了。跑后泡了一杯红茶,很满足!

夜晚,白水河的声音加上驮马的铃声不绝于耳,营地地面不是很平,虽然不觉得难受,但久久不能入睡。其实,这也是轻微的高反症状。
8.21 下满措牛场--满措牛场--藏别牛场--万花池牛场,7.8公里 约4个半小时,一路野地爬升,海拔提升至4200米左右
昨晚没下雨,7点过起来收拾帐篷行李,煮了一锅方便面加卤蛋,吃饱了,天空云雾散开,8点半左右出发,很长一段路依然沿白水河而上,道路比昨天难走些,基本上都是马道,海拔也继续上升,风景依然养眼,10点过钟,上到藏别牛场,满地的红花,后面是白雪点缀的杂巴拉山,十分美丽!再往前,山脚下,婉延的溪水穿过牧场,牧场里到处是黄色的野花,秏牛和马儿或悠闲吃草或奔跑嬉戏,婉若人间仙境!


继续爬山,中午近1点到达今天的宿营地万花池牛场,天气晴朗,收拾东西后晾晒帐篷睡袋,一休哥给我安排了一间免费的牛棚,估计今晚能睡个好觉。
中午,夏诺多吉神山(金刚菩萨)抬头可见,但云雾环绕在山峰上,我们不停观看和守候,终于在下午5点来钟守得云开雾山,得见神山真容,这次进山也算非常幸运!晚上,一休哥给我们送来土豆炒腊肉,还有菌菇汤,加上我们的香肠煮成一锅,我们5人吃得很开心,感谢一休哥夫妇对我们的关怀。

今天路上,向导还教会了我认识当归,他给我挖了一些我也自己挖了一些。

从心开始CSS 发表于 2020-9-23 22:44

算起时间的话,8.22中午后15:10,我们在新果牛场垭口那里遇到的是楼主你们了,我们是3个人重装反穿洛克线
发自8264手机版 m.8264.com
是的,我刚好下完坡,你们新果出来在上坡,我们聊了几句,重装反穿,你们好厉害!
又是很精彩的一天,昨晚满以为会下雨结果没下,早上,央迈勇出来露了一下脸就拉上到面巾,我们伴着浓雾往黑湖垭口爬升,雨也下来了,我这次穿了东丽公司为我们定制的冲锋衣,靓丽的黄色,我叫它黄金战袍。雨不大不小正好测试下新买的冲锋衣。
海拔4800的黑湖垭口,还是得踹好几口气。中间一段长长的横切碎石坡得小心行进,如果遇上大雨和下雪难度就会比较大。翻过垭口雾气渐散,乌云依然,偶尔也有蓝天一现白云漂过。过垭口远处可见黑湖,湖如其名黑色的湖水上空时有云雾,只拍拍照片没走近看看。6公里多了往山下走,下面1公里多是非常著名的蝴蝶石,当年洛克这张照片成了洛克线的标志。

过一阵队友到齐,大家合影,石家庄队合向导马夫我们一齐大合影。蝴蝶石营地的花也非常漂亮,配上悠闲吃草的马儿十分好看。石家庄队的马夫是一个20多岁的小伙子,即兴在蝴蝶石上跳起了藏族舞蹈,非常开心。

吃过路餐继续出发,向导给我说好路线又让我先走,爬坡有点小累,但翻下蛇湖垭口却有几分惊险,坡度很陡,而且又有石砂,有些路段手脚并用才能应对。下到湖边,没太久到达蛇湖营地。一休哥说,今天最后一天大家一起吃吧,所以他们辛苦给我们大家做了晚餐,大家都吃得饱饱的。

做饭时,下起了雨,越来越大,后来转变成好大的冰雹,好担心把帐篷给砸塌了,冰雹停了,地面都铺上厚厚一层,久久不化。这是央迈勇神山再次露出脸来,十分惊艳!我突然想到是否可以给央迈勇拍个倒影。于是踩着铺满冰雹的小路往山下跑去,400米左右才找到一个角度能拍到央迈勇的倒影,很神奇的是,两分钟后,倒影突然没有了,拍不到了,不过我也很满足了。很精彩的一天!

黄金战袍经受考验,防雨透气很棒!


前后不到30秒的央迈勇蛇湖倒影,随后光线变化倒影消失,很神奇!

突如其来的冰雹,铺满地面


8.24 从蛇湖--松多垭口--牛奶海--五色海--洛绒牛场观光车到冲古寺 (单程30) 大巴车到景区大门(正价120) 景区门票(正价146) 包车到稻城(每人50) 这些钱怎么花看各人操作, 没有一定答案。
由于景区修路,找行李多走了5公里,后面又重装走了3公里,多出了一半行程
昨晚10点下起了雨,雨越下越大伴随着电闪雷鸣,两小时了一直没停,扎帐篷的石围子里没有泄水孔全靠自然渗水,所以积水越来越多,帐篷和睡袋也潮了,雨没有停的意思,心里越来越担心。几经犹豫之后收拾背包,抱着睡垫和睡袋跑到30米外的空牛棚里(好在我昨天就已经看好),回头又把丸子也喊了过来。
终于安心睡了一晚。天亮了,雨停了,大家收拾好7点半就早早出发,出门就爬坡翻垭口,阴天雾气浓浓翻过4700垭口后进入到亚丁景区。最先看到的是牛奶海,粉蓝色的海子镶嵌着一圈白色的石子,像高原上到一块蓝宝石。在往下来到五色海,平静的湖面仿佛宝蓝色的缎带,小伙伴们按捺不住穿越成功的喜悦,在湖边放肆摆pose拍照。

指点江山

打靶归来

逍遥一剑

陶醉其中

执鞭在手

一直往下走到洛绒牛场,由于沟通问题,为了找到行李在棧道上来回走了5公里,又因为景区修路,再背着大包走了3公里(洛绒牛场7号乘车点走到5号乘车点),坐观光车景区大巴车离开景区,又包车到稻城(30+120+50)。终于,住进了酒店睡到舒服的床上。晚上,和小伙伴们共聚一席,举杯同庆。
此时,亚丁景区对我已经几无兴趣

隐约可见的仙乃日


顺便说下回程,3个小伙伴分别稻城飞重庆和杭州,我和洛阳稻城大巴到成都,早上七点半出发晚9点半到成都新南门车站,除去新都桥堵车2小时,坐车12小时。

也许,正是进出线路的不易,对季节也有较高要求,洛克线没有成为大众景点,对于户外人算得上是好事。当然,5天徒步,其中3天一直在海拔4000以上行走,也是让部分人放弃的原因。相对而言,如果不遇上极端天气,线路的难度和强度并不算很高,有一定户外经历的驴友都能胜任。这些是我个人的看法。
费用方面,我个人大约2800元左右,包括遵义到成都来回火车,成都到西昌汽车,西昌到呷洛村包车,稻城到成都汽车,以及分担的向导,驮马,餐费,亚丁景区费用,等等,但是,费用这东西每个人处理方式不同,消费不同,不好作何推荐,也就没必要详细说明。
非常感谢这一路对我们照顾有加的一休哥夫妇!

——转自8264,作者:吴枫