tcp/ip客户端临时端口
2017-09-02 19:43
1116 查看
当我们在一台服务器上写了一个服务程序,比如一个http服务,监听端口是4000,服务器的IP地址是172.16.0.1,这时,其他客户端程序可以通过由地址172.16.0.1和端口4000组成的socket来发起请求。这时客户端向服务端发起请求是明确知道IP和端口的,可是服务端是如何相应多个客户端的呢。
服务端可以从请求体的头部拿到请求端的IP和port,然后根据不同客户端的IP和port去相应。可以通过netstat或者lsof命令来查看服务程序的监听端口对多个客户端请求的返回:
netstat -anp | grep 4000
上面输出的第三第四列分别是本地地址:服务监听端口 和 客户端地址:端口
客户端在发起请求的时候,也就是说与服务端172.16.0.1:4000组成的socket建立连接的时候,随机选择了一个端口号,然后用这个随机端口号和客户端地址组成请求体的头部,写入服务器端socket
下面是一个简化的数据流图:
服务端可以从请求体的头部拿到请求端的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
下面是一个简化的数据流图:
相关文章推荐
- tcp/ip客户端临时端口
- Windows TCP/IP 临时、保留和封锁端口行为
- VC++ UDP转TCP互发数据 UDP为服务端 TCP为客户端 可修改IP和端口最小化 2TCP/UDP中转
- 系统出现tcpip临时端口不够用
- Windows TCP/IP 临时、保留和封锁端口行为
- libuv之开启tcp服务端监听,并获得客户端的ip及端口
- Windows TCP/IP 临时、保留和封锁端口行为
- Windows TCP/IP 临时、保留和封锁端口行为
- WCF获取客户端IP和端口
- 利用“TCP/IP筛选”功能限制服务器的端口
- python: tcp/ip学习、端口、udp和tcp的应用
- 【转】Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
- TCP/IP 协议栈 -- 编写UDP客户端注意细节
- tcp/ip网络中端口的选定
- 【WCF】无法连接到 net.tcp://IP:端口/Service。连接尝试持续了 00:00:01.0840620 时间跨度。TCP 错误代码 10061: 由于目标计算机积极拒绝,无法连接。
- Tcp/Ip网络要点二(简易客户端编写)
- TCP/IP通信 客户端、服务器 实例
- 基于libuv实现tcp客户端和服务端(支持监听1000多个端口;打印客户端服务端socket;固定端口连接)
- 【Tomcat】-- Tomcat + Nginx反向代理https和wss并解决获取客户端真实IP、域名、协议、端口
- VC源码多人网络聊天 TCP服务端向多客户转发 加最小化开机启动参数保存可修改ip和端口版权限制等