关于TCP与Socket对端口使用的一些理解

本文探讨了TCP与Socket在端口使用上的几个关键问题,包括服务器端口占用、TIME_WAIT状态的影响、服务器如何处理多连接以及端口冲突。在服务器崩溃与端口占用的关系上,指出TIME_WAIT状态可能导致端口不可用,但大多数服务器实现允许在同一端口建立新连接。服务器通过端口和应用程序绑定来区分不同连接,避免冲突。
摘要由CSDN通过智能技术生成

最近在复习计算机网络上的一些知识,产生了几点困惑。

  1. 首先是一道面试题,之前蚂蚁金服的面试官问到的:服务器突然崩溃了,然后重启服务器的时候80端口被占用了,什么原因,提示我与四次挥手有关。
  2. 之前看四次挥手的时候,有说到服务器上会有大量的time_wait浪费资源,就想到一个问题:服务器是上层是使用Http协议传输数据的。那么使用http协议传输数据的时候,谁先主动断开TCP连接呢?(只有主动断开的一方才会有timewait状态)
  3. 还有一个一直以来的疑惑这次终于搞明白了:服务器只监听了一个80端口,怎么处理这么多连接的,端口不会被占用吗?

带着这些问题查了一些资料,对这些问题也算是基本上搞明白了。
先说下socket。TCP/IP本身仅仅是一个协议,需要具体的实现。scoket就是对其实现之一。是支持TCP/IP协议的网络通信的一个基本操作单元。一个Socket连接是对一对TCP连接的抽象表示。socket由且只由一个五元组表示(客户端IP,客户端端口,服务器IP,服务器端口,使用的协议)。

首先第一个问题:其实现在我的观点还是四次挥手的时候服务器崩溃是不会导致端口被占用的。查到与四次挥手时端口占用相关的资料很少。但是在TCP/IP详解书上看到了一段描述,大致是说:当TCP连接处于TIME_WAIT状态时,通信双方将该连接(socket)定义为不可用的状态,也就是说只是不能建立一个完全相同的五元组socket。但是有一些系统在实现的时候加上了更严格的约束,一个端口号被一个处于TIME_WAIT的socket使用,那么这个端口号将不能再被使用,这也就意味着一个不能再使用这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值