最近好几个准备跳槽做测开的朋友都来问我同一个问题:计算机网络到底要怎么准备?说实话,这个问题背后藏着两层意思——一是担心自己网络基础不行,二是不知道面试官到底会问多深。我自己这些年面试候选人的经验是,测开面试里的网络题,广度比深度更重要,但每一道看起来“简单”的八股题,面试官都可能顺手追问两三层。这篇文章我不绕弯子,直接按面试官喜欢问的方向,把网络高频考点、背后原理、答题思路和避坑点全部梳理一遍。你可以把它当成一份复习清单,也可以当成面试前一天晚上的突击手册。
1. 测开面试网络考点分布:面试官到底在看什么
1.1 为什么测开岗位必考计算机网络
测开的工作内容决定了网络知识是底层能力。你日常要做接口测试,就得对HTTP协议烂熟于心;要排查线上问题,就得能看懂抓包结果里的TCP握手和TLS加密流程;做性能测试,就得理解连接复用、超时、重传是怎么影响吞吐量的。所以面试官问网络题,不是单纯想考察你背了多少概念,而是想确认你具不具备“用网络思维去定位和解释问题”的习惯。
我举一个最常见的例子:接口偶发超时,很多人第一反应是加大超时时间,但懂网络的人会先抓包看是不是TCP重传,再判断是网络抖动还是服务端迟迟不回复。两种人的排查路径完全不同,面试官通过一个问题就能看出你是背书的还是真正懂原理的。
1.2 高频考点全景图与考频参考
我根据自己的面试经验,把测开面试中常见的网络考点整理成了一张表,按出现频率从高到低排。复习时间有限的话,从上往下分配精力就好。
| 考点 | 考频 | 常见追问方向 |
|---|---|---|
| TCP三次握手与四次挥手 | 几乎必考 | 为什么不能两次?TIME_WAIT是什么? |
| HTTP状态码 | 高频 | 301和302区别?502和504区别? |
| HTTPS与TLS握手 | 高频 | 为什么握手用非对称加密?证书链怎么验证? |
| Cookie、Session与Token | 高频 | 分布式Session怎么做?Token优势在哪? |
| TCP可靠传输与拥塞控制 | 中高频 | 滑动窗口是什么?快重传何时触发? |
| UDP与TCP对比 | 中频 | UDP为什么快?丢包了怎么办? |
| DNS解析流程 | 中频 | 递归和迭代啥区别?缓存不生效怎么办? |
| HTTP版本演进 | 中频 | 1.1和2.0最大区别是什么?哪里还存在瓶颈? |
| OSI七层与TCP/IP四层 | 低频但基础 | 每层有哪些协议?和抓包的关系? |
| 抓包排查思路 | 加分项 | 看到大量重传怎么定位? |
这张表基本覆盖了测开面试里能遇到的大部分网络问题。接下来我按照从应用层到传输层、再到基础模型的顺序,把每一块的核心细节和面试表达方式展开来说。
2. HTTP协议考点深挖:报文结构、状态码与版本演进
2.1 报文结构:请求和响应都要说清楚
HTTP报文是接口测试的直接操作对象,必须能完整说清楚。
请求报文由四部分组成:请求行、请求头、空行、请求体。请求行格式是“方法 路径 HTTP版本”,比如POST /api/login HTTP/1.1。请求头里常见的字段包括Host(目标主机)、Content-Type(请求体格式)、Content-Length(请求体长度)、Authorization(认证信息)、User-Agent(客户端标识)、Cookie(携带登录态)。
响应报文同样四部分:状态行、响应头、空行、响应体。状态行格式是“HTTP版本 状态码 原因短语”,比如HTTP/1.1 200 OK。响应头里要重点关注Content-Type(返回格式)、Content-Length(响应体长度)、Set-Cookie(服务端下发Cookie)、Cache-Control(缓存策略)、Location(重定向地址)。
从测开角度看,接口测试本质上是“构造请求 + 校验响应”。构造请求的关键就是把请求行、请求头、请求体填对。其中Content-Type尤其重要,它决定服务端怎么解析body。我经常遇到有人把application/json和application/x-www-form-urlencoded搞混,结果接口一直报参数错误。响应里的Content-Length可以用来判断响应体是否完整,如果实际收到的字节数和Content-Length对不上,说明传输过程出了问题。
还有一点容易被忽略:空行是报文头结束的标记。如果自己写HTTP客户端时漏掉了空行,服务端会一直等请求头结束,直到超时。这是我早年踩过的坑,面试时主动提出来,反而能展示你真的写过底层的东西。
2.2 状态码:从答对到答出深度
状态码不能死记硬背,核心是理解分类逻辑,然后挑高频的几个展开讲。
1xx,信息响应。100 Continue表示服务端引导客户端继续发送请求体,实际场景中用得不多,但HTTP面试偶尔会问。
2xx,成功。200标准成功;201表示创建成功,通常对应POST新增资源的操作;204表示无内容,常见于DELETE成功但不需要返回body的场景。接口测试断言里,201和204的校验逻辑和200不一样,这个细节面试时可以提。
3xx,重定向。301是永久重定向,浏览器会缓存新地址;302是临时重定向,每次都要重新请求原地址。两者在缓存策略和SEO上有明显区别。304是协商缓存命中,服务端告诉客户端“你的缓存还能用”,响应体为空。测开要注意接口返回3xx时的跨域问题,以及自动化脚本默认不跟随重定向时需要手动处理。
4xx,客户端错误。400参数错误、401未认证、403无权限、404不存在、405请求方法不允许、409资源冲突、429限流。其中401和403是面试常考对比:401是你“没登录”或“凭证无效”,403是你“登录了但没权限”。这个区别在接口测试用例设计里非常关键。
5xx,服务端错误。500服务端代码异常、502网关收到了后端的无效响应、503服务不可用、504网关超时。502和504的区别是经典考点:502是后端“回了一个坏响应”,504是后端“根本没在超时时间内回响应”,一个是内容有问题,一个是时间有问题。回答时用这个角度切入,面试官会觉得很清晰。
2.3 HTTP版本演进:从1.0到3.0
HTTP版本演进是近两年面试中频率上升的考点,核心要把握“连接管理”和“传输效率”两条主线。
HTTP/1.0是短连接,每次请求都要新建TCP连接,请求完就断开,开销很大。
HTTP/1.1引入了持久连接,默认开启keep-alive,一个TCP连接可以连续发送多个请求。同时支持管线化,但服务端必须按顺序响应,前面的请求慢的话后面的请求也会被卡住,这就是队头阻塞的雏形。另外1.1增加了Host字段,让一台服务器可以托管多个域名。
HTTP/2.0做了几个关键改进:二进制分帧、多路复用、头部压缩。多路复用允许一个连接上同时交织发送多个请求,不再需要排队等响应,解决了应用层的队头阻塞。但2.0底层还是TCP,TCP层的丢包重传依然会阻塞后面所有数据,所以队头阻塞只是被移到了更底层。
HTTP/3.0改用基于UDP的QUIC协议,真正解决了传输层的队头阻塞。QUIC还支持0-RTT握手和连接迁移,在网络切换时连接不中断。
面试回答的加分姿势是:主动点出“2.0解决了应用层队头阻塞,但TCP层的队头阻塞还在,3.0才算是彻底换了个思路”。这句话一说,就能和只会背版本号的人拉开差距。
3. HTTPS握手全流程:加密链路面试追问怎么答
3.1 加密基础:对称、非对称、摘要与数字签名
要讲清楚HTTPS,先得把四个密码学概念讲明白。我习惯用类比来记忆。
对称加密:加密和解密用同一把密钥,速度很快,但问题是怎么把这把钥匙安全地交给对方。如果钥匙在传输途中被截获,加密就白做了。
非对称加密:用一对密钥,公钥加密、私钥解密,或者私钥签名、公钥验签。好处是公钥可以公开传输,不需要担心被截获,但缺点是计算开销比对称加密大得多。
哈希摘要:把任意长度的内容计算成固定长度的摘要,用于完整性校验。内容是“被篡改过”,摘要就会变化。MD5和SHA-256都属于这类,注意哈希是单向的,不可逆。
数字签名:用私钥对内容做签名,别人用公钥验证签名,解决“这个消息到底是不是你发的”的问题。签名的作用不是保密,而是防冒充和防篡改。
四个概念串起来就是HTTPS的设计逻辑:非对称加密解决密钥分发难题,对称加密解决通信性能问题,数字签名和证书解决身份可信问题。
3.2 TLS握手流程:把每一步讲给面试官听
TLS 1.2的完整握手过程,面试时建议按下面这个顺序讲:
第一步,客户端发送ClientHello,包含一个客户端随机数和服务端支持的加密套件列表。
第二步,服务端回复ServerHello,选定加密套件,带上服务端随机数和自己的数字证书。
第三步,客户端验证服务端证书,验证通过后生成预主密钥,用服务端证书里的公钥加密后发送给服务端。
第四步,服务端用自己的私钥解密得到预主密钥。此时客户端和服务端都拥有了客户端随机数、服务端随机数、预主密钥,各自独立计算出相同的会话密钥。
第五步,双方互相发送Finished消息,确认密钥协商成功。之后所有通信都用会话密钥进行对称加密。
回答这段话的关键点是强调:非对称加密只用在了“传递预主密钥”这一步,真正的业务数据加密全部走对称加密,因为对称加密性能高,能扛住大量数据传输。这个“混合加密”的思路是整个HTTPS设计的精髓。
顺带可以提一下TLS 1.3的变化:握手过程大幅简化,客户端可以直接发送密钥交换参数,通常一个RTT就能完成握手,还支持0-RTT会话恢复。面试里主动提到1.3的优化方向,是明显加分项。
3.3 面试追问:中间人、证书链与测试环境的坑
关于HTTPS,面试官最常见的追问有三个方向。
第一个是中间人攻击。核心是:如果客户端不去验证服务端证书,或者误信任了一个伪造的证书,中间人就能同时和客户端、服务端建立两套加密通道,所有流量都经过中间人转发和窃听。所以证书验证不是可选项,而是HTTPS信任链的基石。
第二个是证书信任链。浏览器内置了一批根证书,证书验证是逐级进行的:根CA签发中间CA证书,中间CA签发服务器证书。任何一个环节不被信任,整条链就断掉。回答时可以提到自签名证书的问题——测试环境里最常见的坑就是自签名证书导致客户端报错,解决办法是在客户端信任该证书,或者给测试环境配置正规证书。
第三个是结合测试场景的追问:你测HTTPS接口时遇到证书错误怎么办?这里要把操作经验说出来:接口自动化工具里可以配置关闭SSL验证或指定证书路径,但生产环境绝对不能这么干。能结合真实测试经验回答的人,面试官记忆点会深很多。
4. TCP与UDP核心考点:三次握手、可靠传输与粘包问题
4.1 三次握手:原理、攻击与面试展开
三次握手的过程我就不赘述了,重点讲讲面试官喜欢的“为什么”。
第一次握手,客户端发送SYN,服务端确认“客户端的发送能力正常”。第二次握手,服务端回复SYN+ACK,客户端确认“服务端的发送和接收能力都正常”。第三次握手,客户端回复ACK,服务端确认“客户端的接收能力正常”。三次完成后,双方都确认了彼此的收发能力都正常,连接才算建立。
用打电话类比更直观。A说“喂,你听得见吗?”(SYN),B说“听得见,你听得见我吗?”(SYN+ACK),A说“听见了”(ACK)。如果只有两次握手,B无法确认A能不能正常收到自己的回复,这就可能导致B发出去的消息石沉大海。
延伸考点是SYN Flood攻击。攻击者伪造大量客户端IP发送SYN,服务端回复SYN+ACK后长期收不到ACK,半连接队列会被占满,正常用户无法建立连接。防御手段包括SYN Cookie、增大半连接队列、限制SYN到达速率。测开岗位遇到安全相关的问题时,这道题的出现概率不低。
4.2 四次挥手与TIME_WAIT
四次挥手为什么是四次,因为TCP是全双工通信,双方各自要关闭自己的发送方向,每个方向都需要一次FIN和一次ACK。
流程大致是:主动关闭方发送FIN,被动方回复ACK,此时主动方进入FIN_WAIT_2;被动方处理完数据后发送自己的FIN,主动方回复ACK并进入TIME_WAIT状态,等待2MSL后彻底关闭。
面试必问的一个点是TIME_WAIT为什么是2MSL。两个原因:第一,确保最后一个ACK能到达对方,如果ACK丢了,对方会重发FIN,Time_WAIT期间可以再补回ACK;第二,让本次连接的所有旧数据包在网络中过期消失,避免干扰后续使用相同端口的新连接。
测开角度更有价值的表达是排查经验。线上大量TIME_WAIT通常意味着短连接关闭太频繁,可以开启连接复用或调整keep-alive来缓解。如果大量CLOSE_WAIT堆积,往往不是网络问题,而是服务端应用代码没有正确关闭连接,属于代码缺陷。能在面试里区分这两种状态的排查方向,说明你真的做过线上问题分析。
4.3 可靠传输机制:ACK、超时重传、滑动窗口与拥塞控制
TCP可靠传输包含四套机制,我建议按“为什么需要、怎么工作、面试怎么答”三层去理解。
第一层是确认应答和序列号。每个数据包都有序号,接收方收到后回ACK,发送方根据ACK确认数据已送达。序列号还解决了乱序和去重的问题。
第二层是超时重传。发送方发出数据后启动定时器,超时未收到ACK就重传。超时时间RTO不能太长也不能太短:太长浪费等待时间,太短可能在没有丢包时误重传,所以RTO是动态调整的。
第三层是滑动窗口。如果每发一个包就等ACK,网络利用率太低。滑动窗口允许发送方不断发送多个包,确认连续到达后窗口整体前移,大幅提升吞吐。窗口大小由接收方的接收能力和网络状况共同决定。
第四层是拥塞控制,核心是四个算法:慢开始、拥塞避免、快重传、快恢复。慢开始阶段拥塞窗口指数增长,到达阈值后进入拥塞避免的线性增长;发生丢包时,快重传机制在收到三个重复ACK时就立即重传,而不是等超时;快恢复把拥塞窗口调整到合理值继续传输。
面试回答建议用“一句话总结每个机制”的方式:ACK解决对没对,重传解决丢了怎么办,滑动窗口解决快不快,拥塞控制解决会不会把网络塞爆。这样逻辑很顺,面试官也容易跟上。
5. 网络模型与基础概念:OSI分层、子网掩码与DNS解析
5.1 TCP vs UDP:不只是可靠与不可靠
TCP和UDP的对比题看起来基础,但很多人答不好。
TCP是面向连接的可靠协议,有三次握手、序列号、ACK、重传机制,提供可靠的字节流传输,头部开销20字节。UDP是无连接的不可靠协议,发送前后都不用建立和拆除连接,只管把数据报文扔出去,头部只有8字节,速度更快、延迟更可控。
表格对比起来更清晰。
| 对比维度 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接 | 无连接 |
| 可靠性 | 可靠,有重传 | 不可靠,可能丢包 |
| 数据边界 | 字节流,无边界 | 报文,有边界 |
| 头部开销 | 20字节 | 8字节 |
| 速度与延迟 | 相对慢,延迟波动 | 快,延迟稳定 |
| 典型应用 | HTTP、FTP | DNS、音视频、游戏 |
面试易错点有两个。第一个是直接说“UDP不可靠所以不好”,正确的说法是UDP把可靠性决策权交给了应用层,很多实时场景反而主动选UDP,因为TCP的重传和拥塞控制会带来延迟不确定性。第二个是不知道“TCP流没有边界”这句话的杀伤力,这直接引出了粘包问题:TCP是字节流,应用层需要自定义消息边界,常见方案是固定长度、分隔符、长度前缀等方式。
5.2 OSI七层与TCP/IP四层:分层思维的面试应用
OSI七层模型和TCP/IP四层模型的对应关系,建议用快递寄送的例子来理解。
应用层是寄件内容本身,你写的是什么就是什么;表示层和会话层在TCP/IP模型里基本并入应用层。传输层是选快递方式——选面向连接的TCP还是无连接的UDP,相当于选顺丰还是普通快递。网络层是写收件地址和规划路线,对应IP协议和路由。数据链路层是驿站到驿站的转运机制,对应以太网和MAC地址。物理层是车在跑、光缆在传,对应物理介质。
测开工作中,抓包工具看到的每一个报文就是这些层级叠加起来的样子。接口测试主要关注应用层和传输层,比如HTTP响应慢,要往上排查服务端逻辑,往下排查TCP握手和网络延迟。网络层一般用于排查可达性问题,ping工具用的就是网络层的ICMP协议。
这个知识点考得不算频繁,但它决定了你能不能理解“A和B能通信,但接口就是报错”这种现象到底卡在哪一层,属于面试中的隐形基础题。
5.3 IP、子网掩码与DNS:快速计算与常见问题
IP和子网掩码的基础不能含糊。比如192.168.1.0/24,斜杠后面的24表示网络位是24位,主机位是8位,可用地址数是2的8次方减2,也就是254个,减去的一个是网络地址、一个是广播地址。如果换成/26,主机位就是6位,可用地址数是62个。面试不一定会考计算,但至少要能说清楚这个逻辑。
DNS解析流程是另一个高频题。完整的解析过程是:浏览器缓存 → 操作系统缓存 → hosts文件 → 本地DNS服务器。本地DNS服务器会进行递归查询,一路问到根域名服务器、顶级域名服务器、权威域名服务器,拿到IP后逐级缓存。
测开实际工作中最常遇到的问题改了hosts不生效。原因往往是浏览器缓存了DNS结果,解决办法是清DNS缓存或者开无痕窗口验证。另一个常见场景是测试环境切换IP后,解析到了旧地址,可以先检查hosts文件是否被本机DNS设置覆盖。这些细节在面试时随口说出来,比单纯背流程有说服力得多。
6. 测开实战加分项:抓包定位、登录态与接口测试表达
6.1 抓包定位:从报文反推问题
网络八股背得再熟,不会抓包定位也容易在二面翻车。我建议每个人至少完整抓包分析过一次真实问题。
举一个我遇到的场景:某个接口偶发超时,服务端日志显示请求确实进来了,但处理时间不稳定。第一反应不该是调大超时时间,而是抓包看时间线。如果看到TCP重传,说明前一个包丢了或者服务端没有及时ACK,网络链路或对端处理速度有问题;如果看到TLS握手频繁出现,说明客户端和服务端在反复重建连接,应该排查连接复用配置。
抓包分析的基本功有三个方向:按端口或协议过滤流量,找到目标会话;观察TCP往返时间,判断延迟主要消耗在哪个环节;看重传率,重传率偏高说明网络质量差或对端处理不过来。另外Wireshark里Follow TCP Stream功能可以把整个HTTP会话拼出来,比一个个帧翻方便得多。
面试时如果被问到“线上接口变慢怎么排查”,能把这个思路讲出来,效果远超只回答“看日志、看监控”的候选人。
6.2 Cookie、Session与Token:登录态的三张面孔
登录态相关概念是测开面试的高频延伸题,因为它直接关系接口自动化怎么做。
Cookie是浏览器保存的小型键值对,每次请求自动携带,节省了服务端查状态的复杂度,但容量有限且有安全风险。Session是服务端维护的会话数据,通过SessionId关联,客户端只需要保存这个ID。Token是无状态认证的核心,服务端通过签名验证Token合法性,不依赖服务端存储。
三者对比可以这么记忆:Cookie是“你身上贴了个标签”,服务端一看标签就知道你是谁;Session是“服务端笔记本上记着你”,客户端只拿着页码;Token是“一张带签名的通行证”,拿给谁都认,不需要别人查本子。
测开场景里最常见的操作是:登录接口调用成功后,从响应中提取Token或Cookie,设置到后续请求的Header里。自动化测试里登录态过期、刷新失效是非常典型的坑,面试时可以主动提这些经验。追问“分布式Session怎么解决”时,可以答三类方案:粘性会话、Session集中存储、直接采用Token无状态方案,并说明各自适用场景。
7. 高频追问Top10与答题套路:这些网络题别答错
7.1 面试官追问Top10与参考思路
这里整理了我面试中最常问的十个网络问题,每个附上参考答题思路。
输入URL到页面显示经历了什么?按层回答:DNS解析 → TCP三次握手 → TLS握手(HTTPS) → 发送HTTP请求 → 服务端处理返回 → 浏览器解析渲染。提一句缓存和连接复用会让回答更有层次。
GET和POST的本质区别?核心是语义差异:GET获取数据且幂等,POST提交数据且不幂等。缓存、书签、历史记录等行为差异都源于语义,而不是网上流传的“GET有长度限制,POST没有”。
为什么要升级HTTPS?三个点:保密性防窃听、完整性防篡改、身份认证防冒充。
一台服务器的TCP连接数上限怎么算?TCP连接由四元组标识:源IP、源端口、目的IP、目的端口。理论上服务端上限受端口数(约65536)、文件描述符数量、内存等共同约束。
粘包怎么解决?TCP是字节流没有消息边界。应用层协议需要设计边界,常见方案:固定长度、分隔符、长度前缀、TLV格式。
长连接和短连接怎么选?高频交互场景长连接复用连接降低握手开销;低频请求短连接更简单不占资源。注意长连接要处理超时和保活。
接口返回504怎么排查?先看网关和后端连通性,再看后端处理时长,重点排查慢查询、日志阻塞、线程池耗尽、后端过载。
怎么设计登录接口的测试用例?覆盖功能(正确/错误密码、token过期)、契约(参数缺失、格式错误、字段类型)、安全(密码暴力破解、越权访问)、性能(并发登录、限流)。
Session和Cookie的区别?存储位置(客户端vs服务端)、大小限制、安全性(Cookie易被窃取)、有效期机制、跨域表现都有差异。
HTTP断点续传怎么实现?客户端请求带Range头指定字节范围,服务端返回206 Partial Content和Content-Range字段,支持断点下载和视频拖动。
7.2 三类常见回答错误与纠偏
我每次面试都能听到类似的错误表达,集中说三个,千万别踩。
第一类是只背概念不解释原因。比如回答三次握手,只说了SYN、SYN+ACK、ACK三个单词,但不说为什么需要三次。面试官一旦追问“两次不行吗”,就直接卡住。我强烈建议每个概念都准备一层“为什么”的解释。
第二类是混淆相近状态码和概念。502和504分不清、401和403说不明白、Session和Cookie混为一谈。这些问题在面试中特别容易暴露基础不牢。建议自己画一张对比表,把容易混淆的成对概念用一句“核心差异”总结清楚。
第三类是觉得HTTPS就是“全加密”。实际上HTTPS的加密只针对内容传输,请求的域名、IP地址、端口这些网络层信息依然是可见的。把HTTPS说成“什么都能保密”会被追问到细节时露馅,准确说法是“加密了HTTP报文内容,并提供了身份验证和完整性保护”。
8. 考前怎么复习:按轮次分配重点与个人心得
8.1 按面试轮次分配复习重点
不同轮次的考察侧重点差异很大,不要一刀切地复习。
一面通常是基础八股,重点放在HTTP状态码、TCP三次握手四次挥手、GET和POST区别、Cookie/Session这些基础概念上。二面偏场景深挖,接口测试怎么设计用例、线上超时怎么排查、接口自动化的登录态怎么管理,这类“实战表达题”更多。三面基本不直接考八股了,但如果你的项目里涉及性能测试或线上问题分析,网络知识会变成聊项目的背景板。
时间分配上,我自己的建议是:TCP协议相关占30%,HTTP协议占30%,HTTPS占15%,网络模型和DNS占10%,实战排查思路占15%。实战排查思路很多人忽略,但它恰恰是区分“背题型候选人”和“有经验候选人”的关键。
8.2 我的几点复习心得
最后分享几条实际复习中的心得体会。
第一条,光背不够,一定要动手抓包验证一次。我当年复习HTTPS握手时,对着文章背了三遍流程,转头就忘。后来自己抓了一次包,看着ClientHello、ServerHello、ChangeCipherSpec这些报文依次出现,整个流程再也没忘过。十分钟的实操顶得上三个小时的背诵。
第二条,用“为什么”串联知识点。每背一个概念,都问自己一句:面试官如果追问一层,我还能接住吗?比如背了TIME_WAIT,能不能说出为什么是2MSL;背了快重传,能不能说出为什么是三个重复ACK而不是两个。把每个知识点往下挖一层,面试时才算真的稳。
第三条,回答组织成“结论+过程+场景”三段式。先说结论让面试官抓住重点,再展开过程证明你懂原理,最后补一个自己遇到的真实场景。这个表达节奏我试过很多次,效果明显好过从头到尾闷头背诵。
如果面试时间只剩一天,优先保住这些:三次握手和四次挥手的完整流程、HTTP状态码分类和几个关键区别、GET和POST的本质差异、HTTPS混合加密思路、输入URL的完整过程。这几块能讲顺,面试大概率不会翻车。祝各位顺利。