前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如果服务进程没启动,客户端发起 tcp 连接,会发生什么?

如果服务进程没启动,客户端发起 tcp 连接,会发生什么?

原创
作者头像
祥祥
修改2021-11-05 14:31:19
1K0
修改2021-11-05 14:31:19
举报
文章被收录于专栏:大写的CPP大写的CPP

面试的时候被问到这么一个问题:如果服务进程没启动,客户端发起 tcp 连接,会发生什么?

先看结果:

代码语言:javascript
复制
sudo tcpdump -i lo  # 监听本地 tcp 数据包

新窗口执行:

代码语言:javascript
复制
nc 127.0.0.1 8000  # 8000 端口下未启动服务

tcpdump 输出结果

代码语言:javascript
复制
10:54:05.381560 IP localhost.36614 > localhost.8000: Flags [S], seq 2559671877, win 65495, options [mss 65495,sackOK,TS val 3728484027 ecr 0,nop,wscale 7], length 0
10:54:05.381567 IP localhost.8000 > localhost.36614: Flags [R.], seq 0, ack 2559671878, win 0, length 0

一来一回两个 tcp 数据包,第一条是客户端的第一次握手请求,SYN 标志位;第二条是服务端的响应,RST 标志位说明目的端口没有进程在等待。

在知道这个结果之前,我以为服务端不会有任何响应,但实际上 tcp 握手过程是操作系统处理的,并不是我们的应用程序处理,所以操作系统会对没有进程监听的端口请求做出 RST 响应。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档