tcp/ip客户端临时端口

当我们在一台服务器上写了一个服务程序,比如一个http服务,监听端口是4000,服务器的IP地址是172.16.0.1,这时,其他客户端程序可以通过由地址172.16.0.1和端口4000组成的socket来发起请求。这时客户端向服务端发起请求是明确知道IP和端口的,可是服务端是如何相应多个客户端的呢。

服务端可以从请求体的头部拿到请求端的IP和port,然后根据不同客户端的IP和port去相应。可以通过netstat或者lsof命令来查看服务程序的监听端口对多个客户端请求的返回:

netstat -anp | grep 4000

tcp        0      0 172.16.0.1:4000         172.27.247.112:51214        TIME_WAIT   -                   
tcp        0      0 172.16.0.1:4000         172.28.39.118:35831         TIME_WAIT   -                   
tcp        0      0 172.16.0.1:4000         172.18.38.7:37281           TIME_WAIT   -                   

上面输出的第三第四列分别是本地地址:服务监听端口 和 客户端地址:端口

客户端在发起请求的时候,也就是说与服务端172.16.0.1:4000组成的socket建立连接的时候,随机选择了一个端口号,然后用这个随机端口号和客户端地址组成请求体的头部,写入服务器端socket
下面是一个简化的数据流图:
这里写图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值