【计算机网络 - 基础问题】每日 3 题(三十)

✍个人博客:https://blog.csdn.net/Newin2020?type=blog
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

88. TCP 连接一个不存在端口,会发生什么?

#一个窗口检测连接信息
sudo tcpdump -i any port 12345 -nn
#另一个窗口发起连接,连接一个存在的ip地址,但端口不存在
nc -v 82.157.234.205 12345
  • 如果有 bind IP 地址和端口,不管目的 IP 是回环地址还是局域网内外的 IP 地址,目的主机的传输层都会在收到握手消息后,发现端口不正确,发出 RST 消息断开连接;
  • 如果没有写程序 bind,单纯就是瞎发起连接,虽然 IP 地址存在,但是没有服务器程序运行,那么客户端就会因为重发第一次握手次数达到上限而超时。

当然如果目的机器设置了防火墙策略,限制他人将消息发到不对外暴露的端口,那么这种情况,发送端就会不断重试第一次握手。

发消息到给百度域名背后的 IP,且瞎随机指定一个端口 8080,抓包。

现象却不一致。没有RST。而且触发了第一次握手的重试消息。这是为什么?

这是因为 baidu 的机器,作为线上生产的机器,会设置一系列安全策略,比如只对外暴露某些端口,除此之外的端口,都一律拒绝。

所以很多发到 8080 端口的消息都在防火墙这一层就被拒绝掉了,根本到不了目的主机里,而 RST 是在目的主机的 TCP/IP 协议栈里发出的,都还没到这一层,就更不可能发 RST 了。因此发送端发现消息没有回应(因为被防火墙丢了),就会重传。所以才会出现上述抓包里的现象。

在这里插入图片描述

89. TCP 连接一个不存在的 IP 地址(主机),会发生什么?

#一个窗口检测连接信息
sudo tcpdump -i any port 12345 -nn
#另一个窗口发起连接,连接一个不存在的ip地址
nc -v 82.157.234.205 12345
  • 如果 IP 在局域网内,会发送 N 次 ARP 请求获得目的主机的 MAC 地址,同时不能发出 TCP 握手消息。
  • 如果 IP 在局域网外,会将消息通过路由器发出,但因为最终找不到目的地,触发 TCP 重试流程。

90. TCP 四次挥手过程是怎样的?

天下没有不散的宴席,对于 TCP 连接也是这样, TCP 断开连接是通过四次挥手方式。

双方都可以主动断开连接,断开连接后主机中的「资源」将被释放,四次挥手的过程如下图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值