tcp连接的建立和释放

    大家新年好,新年第一博,我们来写一点干货。

    建立tcp为什么是三次握手?

    从两军问题说起太远了,三次握手的假定是一条双工线路的每个方向,要么持续通,要么持续不通。就好比一个电话,你和对方可以同时说话,所以是双工线路。你说了对方能听到,这叫单方向。单方向上,要么通,要么不通。
    如果从一个不保证稳定的电话线上(例如移动电话,这是典型例子),你怎么确定你们通话是正常的?
    假如你首先说“喂”,这时候你什么都不知道,对方能听到,他就知道你到他这里的电话是好的。他会说“喂,我听到了”。你听到了,会知道他到你这里的电话是好的。
    事情结束了么?没有呢,他还不知道你能听到他讲的东西,所以你还要回“我听到了”,然后开始说正事。
    回想一下自己打电话的经历,是不是往往漏掉了最后一个“我听到了”呢?这样会使得对方无法确认你能听到他说的东西。不过一般来说,当你开始滔滔不绝的时候,他会假定你听到了那句“喂,我听到了”。因为通常没有人会没听到对方的回应就开始说话说个不停。这个模式在tcp中也是可以做到的,在最后一个ack上附加数据。
    为什么由发起方开始?因为我们必须要假定有一个方向开始,任意开始就需要处理碰撞问题(就是同时开始)。接通socket总是由发起方开始传输第一个包,你不觉得直接在这个包上面开始测试连通会比较合理一些么?
    电话为什么由被叫方开始说话?因为主叫方打电话后,被叫方决定了电话什么时候接通。电话接通的时候,被叫直接就可以说话了(假如电话稳定的话),而主叫要等到下一个“嘟”不出现才能有所反应。所以通常都是被叫先开口。当然,也有被叫方接起电话来等着主叫说话的情况。
    另外提一句,如果你使用手机拨打的话,当听到对方“喂,这里是XX,您好”之类的信息的时候,应当先说“喂,我是XX,您好”。等对方确认能听到了,再开口说正事。因为手机有不算太小的几率,双方都听不到,或者单方向听不到。如果不巧是后者,很容易引起不必要的误会和麻烦。例如你滔滔不绝的说,对方作为反应,说了几句。然后你什么都听不到,继续说。对方当然会生气,对不对?
    OK,现在我们来说说挂电话。
    tcp的fin机制,其实是要解决这么一个问题。当你说“再见”后,能够马上把电话放下么?
    不行的,因为对方可能还有一些重要的事情还没说。你一说再见就挂断,这个会造成问题。从简单的思考上,我们会得出一个结论。当你说了“再见”后,对方可能还需要说一些事情。当对方也说了“再见”后,你就可以挂电话了。
    可是且慢,对电话而言这个模型成立,我们得稍作修改才符合网络——当你挂下电话机后,对方不会出现忙音。于是,当你说再见,对方说再见,你必须再说一次再见,对方才能确定你听见了再见。而且这次,事情非常符合两军问题——你们永远也无法就什么时候挂机达成一致。这个问题再折衷回来,也是一个三次模型,对方说再见,你说完你要说的话,然后说再见,对方再见,挂机。
    被动关闭上,这个模型基本是正确的。当你收到“再见”后,把你要说的事情说完,然后再见。这时候不能挂电话,因为你不确认对方听到你的“再见”了。如果你的“再见“对方没收到,那么对方会死等到天荒地老。至于为什么对方可以肯定你收到了他的再见,是因为刚刚你说的那堆废话里,应该已经包含了“我知道你要挂电话了,我会尽快说完”的意思。所以,你需要等对方的“再见”回来。
    当然,在tcp的实现上说,所有对对方的回应,都在ack里面。所以是FIN FIN-ACK ACK,关闭。最后一个ACK前,叫做LAST ACK状态。如果ACK丢失,会造成被动方挂断有问题,因此这里需要一个超时机制。用电话术语来说,就是最后一个再见没听见,你就要等到天荒地老,因此当对方首次再见完成的时候,你说再见,如果一定的时间等对方的最后一个再见等不到,就别等了,直接挂机。这个时间比等不到对方任何消息而挂机,要来的短。tcp标准设定为两倍最大生存周期,即2MSL。当然,如果等到了最后一个ACK,就直接删除连接数据结构。
    主动关闭的时候,情况会更加复杂一点。为什么?因为刚刚的超时机制。我们从你说再见之前开始说起,这次你是主动告别一方。
    你首先说了一个再见,然后进入FIN_WAIT1状态,换成电话术语,就是等对方说再见。tcp机制上,对方的ACK先到,就是FIN_WAIT2。对方的FIN先到,就是CLOSING——这种情况不多见,只在双方同时想挂断的时候发生。如果对方的FIN-ACK一起发送,那就直接保送上TIMED_WAIT。无论是哪种先,最后会收到一个ACK和一个FIN,并且发送一个ACK。换成电话术语,就是你说了再见,对方一定会说知道了和再见,并且你会说知道了。差别在于tcp需要用多个状态来表示哪个事情先,哪个事情后,打电话就不要这么麻烦了。
    最复杂的事情,在于说了最后一个再见之后。当你说完最后一个再见,就可以直接挂电话么?电话可以,但是作为tcp,却不可以。因为某些情况下,对方的FIN包没有到就会进入TIMED_WAIT状态。另外一些情况下,对方的LAST_ACK等不到你的ACK,会把他的FIN重发一遍。如果直接销毁连接结构,那么最后一个FIN包可能对新的连接造成干扰,而且会阻碍对方关闭连接。所以,作为主动挂断一方,你有一点很不利的是,无论如何,你必须等这个2MSL的时间。这个值在linux中一般是60s,更进一步可以查看rfc1337
    刚刚解说的最后一个情况,就是很多机器TIME_WAIT很高的原因——因为你的服务器主动关闭了连接。作为本质解决方案,你需要理解为什么会发生这件事情,服务器端关闭连接是否正常。如果正常,那么加一些内存,并且启用tcp_tw_recycle来减缓这个问题。注意,这个参数不应当在NAT后的机器上被启用。具体可以查看rfc1323

家庭网关,三网融合

Sunny Sunny<sunnyboyme@gmail.com>:
要做一个关于home gateway的论文,讨论不同服务下的 Service Level Agreement (SLA),带宽,延时,数据包 schedule 策略 等等。不知大家有什么好的 想法/Question/Hypothesis,或者 以往的使用体验。
希望来个 头脑风暴,呵呵 ~~

shell:
我好像全都部署了,就是不整那么多名词而已,不知道你要干啥。
出口是光纤,20M下行/1M上行。路由器是dir-825,上面部署iptables arptables 还有tc。可以控制端口进出,还有控制机器的访问权。tc负责控制QoS。
后面主要是两台机器,一台atom,上面放2T硬盘,作为NAS/开发服务器/电视的长期支撑设备/家里的定时通知机器/闹钟/将来准备接个摄像头做更好玩的应用。
另一台amd x955 8G,两个人用。一个DVI连接显示器,一个HDMI连接电视,可以看看高清电影,开发也很舒服,一般开虚拟机干各种应用。
其余设备都走了网线或者无线,最近考虑装一个网络电话。
电视是三星的,上面集成了一个简单的android,就是app market是专用的,里面没有vnc/rdp客户端,否则我连atom都不需要登录就可以直接访问各种服务器了,更方便。

电话,电视,网络,全部走在了ethernet上面,不知道算不算三网融合。不过我吐槽过一篇文章,这年头不知道要电视和电话干吗用。给我视频网站和手机就能很high了。

 

在 11-12-11,Sunny Sunny<sunnyboyme@gmail.com> 写道:
> 哇咔咔,不错不错,可以拿来当模板用~~
> 不知道你的电视和电话走网路时候用的是什么协议?或者说,用的哪家公司的服务? 电视走网络(IPTV?)会带来巨大流量,相比普通电视/数字电视有什么优势?
>

在 2011年12月12日 上午9:16,Stone Zhang <kelxzhang@gmail.com>写道:

其实,我感觉三网融合现在最大的问题是,在三层没有连上的时候,如果可以打电话。  就是说,在断网时(就是物理连上,但拿不到IP
)普通用户如何能够打电话。  还是就是收费问题。

何必走专用协议呢?现在中国没有一家服务是大到可以称为标准协议的。
电话我还在考虑,用SIP还是skype。前者有很多现成的网关,也很容易和普通电话通话。后者看样子也不差。反正我手头有atom服务器,用skype长期开机也是没什么问题的。
电视更简单,直接上youku/tudou/verycd搜索就好。其实你本心的想一想,我们到底是为了解决问题而发明标准还是为了制造问题而发明标准?使用目前已经存在的服务能解决需求就好了。这些点播唯一的缺陷是还缺少一些连续播放的视频DJ/选材制作,我在吃饭的时候看节目往往还要自己挑。所以目前我吃饭的时候都在看电影,atom机器一天能下N部高清下来,就是我怕现在的导演们没那么多时间去拍。。。
视频走网络有什么好处?论广播能力,格式兼容性,不如RF。论节目,也比电视台差了很多。但是电视走网络胜在制式可以几乎无限上升,目前我看1024×768已经觉得不够清楚了。你觉得目前的IPTV,就算加上数字电视机顶盒,能够到多少分辨率?
至于电话问题,断网是极端情况。虽然网络比电话线不稳定,但是也不是天天断的。有网络用网络,没网络用手机。android加上sipdroid也可以当作sip客户端用。如果手机都走不了,那问题就不在三网融合的设计上了。
你可以想想,网络电话到底有什么优势?电话到底干吗用的?在我们业务类型大幅变化的时代,讨论如何将上个世纪的业务完全不差的照搬到网络时代真的有帮助么?我们真的需要在网络时代,等待一个前向兼容的标准么?实话说,这是中老年业务。我家里没有普通电话,外婆和岳母说要装一个,我和老婆都没什么兴趣。因为除了多交钱,没有任何帮助。要找我们,手机总能找到。手机找不到,电话也找不到。
传统认为,使用可以容忍的语音标准,提供持续而稳定的服务是电话服务的第一要素。实话说,在网络时代,这个可能要改为低成本,高可用性。网络(尤其是中国网络)已经把我们训练的很有抵抗力,对无法服务的系统基本可以接受,只要这个系统大部分时候能跑通。让我选择十年保证故障在1小时以内的普通电话服务,我宁可选择一年保证故障在五小时以内的网络电话服务,只要这个电话服务可以:
1.大部分时候打的通,比移动/联通打不通的机会低。
2.便宜,我可以和远程一聊数小时,甚至干脆保持一两天不断线。
3.功能集成,例如视频电话?多人电话?
为什么不选择后者呢?我正在准备把老婆家里的设备做一下定制,让她的电脑可以很方便的视频保持和我服务器的连接。这样岳母可以通过她家里的电脑和我这里保持持续通讯几个小时,甚至可以一边吃饭一边聊天,双方还能互相可见——免费。我不觉得普通电话业务能够提供这种优势,更不提昂贵的话费。

另一个例子是我一个朋友,也在shlug里面。他十月去日本,带的是一台iTouch。在日本可以很容易的连上wifi,速度还很快。通过skype打电话回家,价格便宜服务稳定。如果是我,我更希望带一个3G设备,直接用当地的3G接入保持持续通讯。你觉得带传统手机出国然后办理套餐需要多少手续和多少钱?这是一个移动电话被网络服务比下去的例子。也许有人说中国的网络没这么好——好吧,看看五年前的网络,看看今天的,想想看五年后,这个论点还有没有优势。

同样,在网络时代抱着电视不放也将会是种无谋。目前网络视频还是替换不了普通电视,不过这天总会来的。

拨号的几个简化

1.pptp client

    安装pptp-linux,使用pptpsetup,按照man来。使用pon configname启动,poff关闭,plog看日志。
2.3g网卡拨号
    应当使用usb_modeswitch进行编码转换,然后用wvdial拨号。MF190而言,至少我这里modeswitch会自动转换的。后者直接编辑/etc/wvdial.conf,然后输入wvdial开始拨号。wvdial有个包装叫做gnome-ppp,依赖很少,在其他桌面也可以用。我还没有研究出来怎么玩。
附,MF190使用的usb_modeswitch配置(debian自带):
########################################################
# ZTE devices
DefaultVendor=  0x19d2
DefaultProduct= 0×2000
TargetVendor=   0x19d2
TargetProductList="0001,0002,0015,0016,0017,0031,0037,0052,0055,0063,0064,0066,0091,0108,0117,0128,2002"
MessageContent="5553424312345678000000000000061e000000000000000000000000000000"
MessageContent2="5553424312345679000000000000061b000000020000000000000000000000"
MessageContent3="55534243123456702000000080000c85010101180101010101000000000000"

NeedResponse=1

CheckSuccess=20
附,MF190可用的wvdial.conf:
[Dialer Defaults]
Modem = /dev/ttyUSB2
Init1 = ATZ

Init3 = ATE0V1

Init5 = ATS0=0
Init6 = AT+CGDCONT=1,"IP","uninet"
Init7 = AT+CFUN=1
Modem Type = USB Modem
Baud = 460800
New PPPD = yes
ISDN = 0
Phone = *99#
Password = any
Username = any
Stupid Mode = 1
3.wpa联网
    很简单,安装apt-get install wpasupplicant。用iwlist scan扫描网络。然后用wpa_passphrase ESSID password > wpa.conf来生成conf。最后,wpa_supplicant -Dwext -ieth1 -c/root/wpa.conf。启用某个配置文件,连接网络。
    注意,这样是不管分配ip的。你可以用/etc/network/interfaces来指定,或者直接用ifconfig进行设定。如果有dhcp,也可以在interface里面设定,或者用dhclient直接解决问题。
参考:

python conf 2011无线组网总结和分享

    这次python conf 2011结束了,具体成败sting去总结。我主要负责网络部分,把网络部分的总结一下吧。总体来说,网络不算成功也不算失败。在现有条件下,资源没有都发挥出来。但是万幸的是,关键部分还没有掉链子。下面是具体总结。

1.没在场地里面拉好线并且实地测定过所有地点信号的不算部署完毕。
    这次的会场平时不允许进入,只能在工作日去,所以只能在会议前一天跑现场。而且进入时没有长网线,墙壁上也没有网线接口。因此是会议前一天先根据具体环境完成了设定,支支下午去买了线,第二天早上部署的。这留下一个严重隐患,我把设备间当成了贵宾室,凭经验估计信号覆盖范围的时候出了错,信号没有覆盖到贵宾室,而且没有考虑门口。第一天的嘉宾和志愿者们,是否感觉信号像渣一样(尤其是杨毅涛)。其实这主要就是因为根本没有考虑到信号覆盖的问题所致的。
    要解决这个问题,必须先知道会场结构,包括贵宾室,设备间,签到处等等重要但是部署时又不容易想起来的地方。然后估算需要多少个多强的AP才能覆盖。例如本次的贵宾室,最佳方案是拉40米网线到贵宾室,然后再架一个AP。会场往往没有线,需要自带网线。因此最好是有人知道会场大致结构(手绘亦可,但是标注一下承重墙),然后计算AP位置和网线长度,再去购买。或者直接买一箱网线,配上水晶头打线剪自己做。会议前至少一天去部署,用android测试每个点的信号强度,最好都达到-70db以上。完成后把电线和网线都用胶带封在地上,以防绊倒。
2.足够的AP和信号。
    在估算AP和信号的时候,这次经验是,多一个天线,信号强10db。支支的三天线AP信号明显强于我的双天线AP。AP的信号是和距离的立方成反比的,一个AP保证20-30米的无阻挡会场是没问题的。但是每穿一道墙,信号就会下降大约20db。低于-70db就开始出现大量掉包了,-80db的时候tcp重传严重,导致基本无法使用。
    一个AP可以接入的客户端是有限的,按照我看下来,大约在50上下(TP-LINK)。这个和事先估计一致。本来我想用6个AP,但是很难凑够这么多,而且带宽不足,就没借这么多。预定就是需要一些人没有设备或者接不上去的,否则就是所有人都不能顺利上网了。结果有一个AP在连接10个设备后就会崩溃,所以等于无法容纳用户。大部分用户都拥挤在同一个AP上,导致踢掉非常严重。会场峰值时刻,300人,有120个设备试图获得IP或者已经获得成功,但是AP在线只有20/50(AP1/AP2),即40%左右的设备被踢掉或者自动断开了Wifi(部分手机为了省电会发生这样的事情)。如果三个AP完好,120人在线刚刚好支撑的起来(20/50/50),但是这样的话连线设备可能还要多一些。
    下次部署的时候,除了要考虑信号覆盖问题,还要考虑预留一些AP作为备用。因为会场AP都是民用过去支持,这些设备以前也没有做过大容量测试。我只能说TP-LINK的两台机器很给力,说到50就到50,多了就不能支撑,但是不死机。有台机器就频频死机,这样就需要备机更换。
    另外,我们这次最高三个AP,因此分别设定为1/6/11频道就行了。如果AP还要多,请注意让同样频段的设备分到会场的远端。
3.世界真的很麻烦,有的时候有位置却没有电源。
    这次电源还算给力,从墙上引出了不少拖线板,基本满足组委需求。至于普通听众就抱歉了,自带拖线板坐到边上的,互相交错给便携设备还能充个电。中间听众只有依靠地接。偏偏地接基本都拉给了组委的摄像机,周围一圈的人可以沾沾摄像机拖线板的光,其他人就只能相信电池续航了。
    我们的AP3,第二天搬到了贵宾室那个方向。反正上面只能接不到10个人,给贵宾室小规模用用还可以。结果线只有30米,拉不到贵宾室。合适的位置又没有电源。只好委屈在后门口接了一下,把贵宾室的信号提高了不到10db。
    据说有的会场更恶心,只有一两个电源接口。这种会场就必须带够插线板和移动设备来保证电力。
3.留出会议运营所需资源。
    这次还算成功的一点,是为大会组委和志愿者/嘉宾保留了一路AP。大会的签到系统,嘉宾演讲都需要Wifi支持,为了让听众上网导致演讲失败就本末倒置了。为嘉宾保留的是AP1,上面还有一些比较活跃,或者着急使用网络的普通听众,一般大约20人左右,相对比较空。可是这个AP又不敢开放给听众使用,一使用就怕嘉宾没法演讲了。
    wifi管理者比较怕的问题,主要就是有人使用wifi下载比较大的内容。因此开始的时候,会议需要网络的时候,我都用平板监控网络使用状况。如果有人正在使用大流量,就准备踢人。幸好,大家都很安分(或者是AP上不来)。后来也就放松警惕了,结果老外演讲的时候延迟很厉害,我差点就跑去拔掉AP2的电源了。这会断开所有人的网络,但是演讲者的使用就通畅了。
    按照雨苍说的,组委wifi组一个重要任务往往就是封锁各个debian/ubuntu镜像的下载。我们这次没有出现这么恶劣的问题,谢天谢地。
4.会场的网络使用有非常强的峰值效应
    这次会议只有2M带宽,因此我一直担心不够。后来开始看看还不错。但是休息的时候一直接到wifi很慢的投诉,空下来一直测不出。我第二天休息的时候去测试了一下,我的天,带宽全满,延时超高。说明演讲者水准很不错,大家专心听会,不怎么用网络。一休息,得,网络不够了。
    这个没法解决,要解决只有增加带宽,或者在不休息的时候再使用一些比较耗费流量的业务。一个缓解的办法是使用qos系统,但是这次dir-825没有前往会场,所以没机会调试qos系统。
    相对来说,路由器的NAT让我很放心。TP-LINK普通路由器的NAT在支撑80-90人的极限在线的时候仍然很稳健,速度不快是带宽问题,路由器没有崩溃就是万幸。
5.根据具体情况配置。
    WEP比较节约资源,所以我们开始配置的是WEP信号。但是测试下来,苹果系统对WEP的支持非常差,基本接不上去。所以就不要节约了,使用WPA/WPA2。
    运营商的接入情况比较多变,而且很难控制。这次运营商给我们的是一个内网IP,192.168.1.2。他们已经有了一个路由器在前面。我使用了双重NAT方案,而且避开192.168.1.x网段,来避免修改它们的路由器(我们无权控制)。
    这次我们使用的是192.168.0.1/24网段,三台AP的连接模式是一主多桥。一个主router负责DHCP和NAT,其余的全部当单纯的AP使用。从1到3分别分配0.1-3的IP,2/3的DHCP关闭,1的DHCP从20开始分配起,直到254,共计最高容纳234人在线。20以前的IP让组委的人作为静态IP预留。如果还要多,建议使用192.168.2.0/23网段,最高可以容纳500人不到,足够大部分的会展使用。如果再不够——你们考虑10网段吧。
    最后的经验总结。
1.会前勘察真的很重要,尤其是会场平面结构,承重墙位置,会场部署,电源插座位置,一定要提前至少三天确认。提前一天的时候要配好所有AP,备件和网线到会场部署,然后测试信号。
2.会场带宽一定要大,万一实在不够大,想办法ban掉debian/ubuntu的镜像,然后做qos或者squid。
3.自带足够材料,如果没有胶带/接线板/剪刀,那很多事情就要抓瞎。
4.据说TP-LINK之类的路由器在人数多到一定程度的时候会自爆,推荐使用高级设备或者电脑来做NAT/DHCP。不过我至少肯定100人的时候还没问题。

合用两个路由器的几种方案

    为什么用两个路由器?最常见的理由是延长信号。在超级大的场地中,中间放一个路由器,用四根线连接到周围的几个路由器上面,信号覆盖整个场地。这是最常见的理由。也有可能是因为你的主路由器LAN接口不足了。当然,也可能是因为蛋疼,或者其他原因。不论如何,为了在多个路由器上达到同时上网的目的,你有以下几个选项。桥接模式,路由模式,双层NAT模式。
    我先解说一下一些基础的环境。我假定你有一个互联网线,有一个路由器的WAN口接到了互联网上面,这个路由器称为M。其他路由器分别称为S1,S2…。直接连接到M的LAN口的电脑称为ML1,ML2…,通过无线连接的就称为MW1,MW1…。同样,连接到路由器S1的LAN和无线的分别叫做S1L1,S1W1,类推。

1.桥接模式

    这是你第一个应当尝试的模式,连接方法是路由器S1的LAN口直接连接路由器M的LAN口。这个模式不一定能够配通,原因是因为要求路由器S必须支持桥接模式。基于某些理由,很多路由器并不支持桥接。一般来说,有可能LAN口支持桥接而WIFI不支持。因此S1L1支持桥接成功的概率比S1W1支持桥接成功的概率高。如果你需要一台支持桥接的路由器,TP-LINK的TL-WR*系列路由器好像大多支持。希望大家补充哪款路由器支持桥接或者不支持。
    桥接是将路由器S完全的作为一个交换机使用,所以你的ML1和S1L1在同一个网段,两者可以互相ping通,发送各种包,也可以看到对方的广播。这种模式一旦连接成功,连接模式是透明的。因此,应当关闭DHCP,只启用一台路由器的DHCP功能。或者最好手工分配IP。
    严格来说,只有S是一个无线路由的时候,这个模式才叫做桥接。如果只做有线连接,这个模式应当叫做交换模式。
2.路由模式
    路由模式,是一个比桥接复杂,效果好,但是用途相对比较窄的方案。接法是路由器S1的WAN口连接路由器M的LAN口,并且为S手工指定IP,再关闭S的NAT功能。M的网段和S的网段必须不为同一个网段,例如M配置为192.168.0.0/24网段,S配置为192.168.1.0/24网段。S的WAN口手工指定为192.168.0.2。然后在M1上配置人工路由,将192.168.1.0的所有包交由路由器192.168.0.2处理。并在S1上配置默认路由为192.168.0.1(M的地址)。
    这个模式是将路由器S和M作为路由器使用。当S1L1发送包时,会被S1转发到M去处理。而M收到要发送给S1L1的包时,会交由S1处理。这一模式能够工作的基础是你能够控制M的路由表,并且S可以关闭NAT。通常情况下,这个S最好是OpenWRT/DDWRT。这也是为什么用途比较窄的原因,毕竟支持桥接的路由器好找,OpenWRT/DDWRT就相对小众了。
    当这个模式连接完成后,ML1和S1L1在不同网段,但是两者可以互相ping通,发送各种包,却无法看到对方的广播。因此这种模式的效果比桥接好一些,因为地址范围更大,而且很容易隔离广播风暴。这种模式一旦连接成功,连接模式是透明的。
3.双层NAT模式
    如果上两种模式都不工作,你就必须使用双层NAT模式。这种模式保证一定工作,但是在使用上比较麻烦,需要用户自行计算访问规则。
    接法是路由器S1的WAN口连接路由器M的LAN口,并且将S配置为DHCP。M的网段和S的网段必须不为同一个网段,例如M配置为192.168.0.0/24网段,S配置为192.168.1.0/24网段。
    S的数据包会被NAT两次再发到互联网上,要进行端口转发也必须配置两次。性能相对比较差,而且无法做NAT穿透。
    当这个模式连接完成后,ML1和S1L1在不同网段,S1L1可以ping通ML1,但是反过来不行。因此,S1L1可以主动连接上ML1,而反过来不行。这种模式不是透明的,两者进行连接时必须考虑网络转换和端口转发。