关于http请求65536魔咒和3次握手的理解

  1. 客户端发送http请求,服务器都会消耗一个端口进行链接?

每个客户端发送HTTP请求到服务器时,都会使用一个本地端口号来建立连接。这个本地端号是随机选择的,并且在通信结束后会被释放。这个本地端口号是用来区分不同的客户端连接的,因为在同一时间,同一客户端可以建立多个连接到同一个服务器。

换句话说,每个客户端连接到服务器的端口号是服务器端口号,而每个客户端使用的本地端号则是不同的。因此,如果一个客户端与服务器建立多个连接,每个连接都会使用不同的本地端口号。

  1. 既然每个http请求都会开销 一个服务器的端口,那么服务器的并发数是不是最高是65536?

端口号是一个16位的无符号整数,可以表示的端口号范围是0到65535,因此,65535是端口 号的最大值。在实际应用中,一般会预留一些端口号,比如0-1023端口用于系统和常用服务,1024-49151端口用于注册的用户应用程序,49152-65535端口用于私有或动态端口

虽然端口号的最大值是65535,但并不是每个端口都可以用于TCP连接,因为一些端口被保留用于特定的应用程序或协议。此外,操作系统还会保留一些端口用于系统服务或其他目的,因此,实际上可用于TCP连接的端口数量可能会比最大值小。

另外,尽管一个TCP连接通常会占用一个端口,但是操作系统可以通过动态端口分配的方式来支持更多的并发连接。当一个TCP连接被关闭时,它占用的端口也会被释放,这样这个端口就可以被重新分配给其他TCP连接使用,从而实现更高的并发连接数。因此,虽然65535是端口号的最大值,但实际上,操作系统可以支持更多的并发连接,取决于系统的配管和咨源限迎

虽然每个HTTP请求会占用服务器的一个端口,但实际上,服务器的并发连接数并不等同于可用的端口数量。这是因为:

1.端口是针对单个IP地址的,而一个服务器通常可以使用多个IP地址,因此服务器的并发连接数可以是多个端口数的总和。

2.一个TCP连接可能会在不同的端口上进行数据传输。因此,即使使用一个端口,服务器也可以同时处理多个HTTP请求,只要它们来自于不同的客户端连接。

3.操作系统可以为每个TCP连接维护一个状态,这个状态可以在连接建立时动态分配端口因此,即使在已用完所有可用端口的情况下,服务器仍然可以接受新的TCP连接,只要之前的连接口经关闭并且其端口已经释放

因此,虽然可用端口的数量是有限的,但实际上,服务器可以处理的并发连接数远远高于端口数,这取决于服务器的性能和资源限制,以及操作系统的TCPP实现和配置

  1. 关于三次握手的理解

  • 第一次握手

在建立TCP连接时,客户端会向服务器发送一个SYN报文段,其中会包含客户端 的IP地址和随机选择的未被占用的端口号。这个过程发生在三次握手的第一次握手。这个SYN报文段的目的是告诉服务器,客户端想要与服务器建立一个TCP连接,并且客户端的地址和端口号是什么。

  • 第二次握手

当服务器接收到客户端发送的SYN报文段后,会返回一个SYN-ACK报文段,其中会包含服务器的IP地址和一个随机选择的未被占用的端口号。这个端口号是服务器要使用的端口号,也可以称为“应答端口”。这个过程发生在二次握手的第一次握手。服务器选择这个端口号是因为这个端口号当前没有被占用,可以用于建立新的TCP连接。

  • 第三次握手

当客户端接收到服务器发送的SYN-ACK报文段后,会再次向服务器发送一个ACK报文段,其中会确认服务器的应答端口。这个过程发生在二次握手的第三次握手。当服务器接收到客户端发送的ACK报文段后,就可以认为TCP连接已经建立成功了。

总之,在TCP连接的建立过程中,客户端会随机选择一个未被占用的端口,并将其作为源端口发送给服务器。服务器在接收到客户端发送的SYN报文段后,会选择一个未被占用的端口作为应答端口,并将其作为目标端口发送给客户端。客户端在接收到服务器发送的SYN-ACK报文段后,会确认服务器的应答端口。这样,客户端和服务器就可以使用各自的IP地址和端口号建立一个唯一的TCP连接。

  • 总结

客户端发送HTTP请求时,不会占用服务器的端口,而是会占用客户端的一个随机端口,并且这个端口在连接关闭后会被释放。

当客户端发送HTTP请求时,会向服务器指定的端口 (通常是80或443) 发起连接请求。在TCP协议中,客户端和服务器需要进行三次握手,以建立一个TCP连接。在这个过程中,客户端会随机选择一个未被占用的端口,并在连接请求中指定这个端口。服务器在接受连接请求后,会将数据发送到客户端指定的端口上,客户端在接收到数据后,会将响应发送到同样的端口上。这个过程中,服务器并不占用客户端的端口,而是占用服务器的一个固定端口进行通信。

因此,客户端发送HTTP请求时,不会占用服务器的端口,而是会占用客户端的一个随机端口。而服务器在处理多个客户端请求时,会使用不同的端口来处理不同的连接,以保证每个连接的独立性和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值