tcp/ip客户端临时端口
2018-03-30 15:02
399 查看
原文链接
当我们在一台服务器上写了一个服务程序,比如一个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
下面是一个简化的数据流图:
当我们在一台服务器上写了一个服务程序,比如一个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
下面是一个简化的数据流图:
![](http://www.tcpipguide.com/free/diagrams/portsclientserver.png)
相关文章推荐
- tcp/ip客户端临时端口
- 系统出现tcpip临时端口不够用
- Windows TCP/IP 临时、保留和封锁端口行为
- libuv之开启tcp服务端监听,并获得客户端的ip及端口
- VC++ UDP转TCP互发数据 UDP为服务端 TCP为客户端 可修改IP和端口最小化 2TCP/UDP中转
- Windows TCP/IP 临时、保留和封锁端口行为
- Windows TCP/IP 临时、保留和封锁端口行为
- Windows TCP/IP 临时、保留和封锁端口行为
- Python socket网络编程TCP/IP服务器与客户端通信
- 增加最大 TCP/IP 可用端口数
- 关于"通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败"的错误解决
- 在系统启动时,Windows Vista 中、 在 Windows 7 中,Windows Server 2008 中和在 Windows Server 2008 R2 中的 497 天后未关闭 TIME_WAIT 状态的所有 TCP/IP 端口
- SQL Server 2005通过端口1433连接到主机127.0.0.1的TCP/IP连接失败解决方案
- tcp/ip网络中端口的选定
- domino无法绑定tcpip端口
- sqlserver2008通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性。确保 SQL
- tcp/ip端口大全
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- WebService及WCF获取客户端IP,端口
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目