关于局域网和TCPIP协议的几个疑问?

lxh8810 2015-09-07 09:52:07
场景如下:
假设我用的是电信的宽带接入,家里用路由器连了3台设备(假设为A、B、C)。再假设有一个外网服务器S,端口为P。
1、现在如果我的3个设备都要通过TCP连接服务器S,那么这3台设备的外网IP是电信随机分配的么?这3台设备的外网IP是同一个通过不同端口区分还是随机的IP随机的端口?
2、如果A设备需要与S建立多个TCP长连接,是否A每个SOCKET长连接的端口是否不一样?如果一样,是通过什么实现?如果不一样,那么A与S最多建立的长连接是不是就不超过65535个?
3、再假设A、B、C三台设备都同时和S服务器建立长连接,或者A、B、C三台设备都同时分别和S1、S2、S3服务器建立长连接,那是不是电信得为我同时分配三个外网IP?如果不是那它是怎么复用的?

这几个问题一直没弄懂,个人基础比较差,在自学计算机网络,还望大牛给予指导。谢谢
...全文
286 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxh8810 2015-09-08
  • 打赏
  • 举报
回复
引用 1 楼 silverpot 的回复:
1、你三台设备A、B、C是通路由器上的互联网,那么电信只会给你分配一个外网的IP,即路由器的IP。在服务器S眼里,你这三台设备的连接是来自一台机器的。内网到外网是NAT,外围到内网是端口映射。端口如何分配,路由器知道。 内网设备的数据包会被发送到路由器,路由器会记住这个设备IP和端口,解封装以后,他会把用户IP报文里的ip和端口换成自己的ip和端口(这个端口也是随机的),再把数据转发到目标网络,这样就和目标网络建立了连接。目标网络往回传递信息的时候就会把数据包发给路由器,然后路由器看一下自己的映射表,他会发现这个端口是和内网的 那台主机做的 映射,所以就会把数据传给你,这样你就读到了对方的信息 2、这个问题 可参考:http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html,至于连接数量,影响的因素比较多,个人觉得视具备情况而定。 3、参考1
看了http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html这个之后大家明白了,还有个疑问,如果是这样端口复用的话,路由器的NAT地址转换表应该包含哪些字段呢,是不是除了外网IP:PORT和内网IP:PORT外还应该有目的IP:PORT?
缘中人 2015-09-08
  • 打赏
  • 举报
回复
不会在多分配外网的,一个路由器IP只有1个。
lxh8810 2015-09-08
  • 打赏
  • 举报
回复
引用 3 楼 kfrght 的回复:
理论上,一个长链接端口可以几个进程共享,但实际上一个端口似乎只能对应一个进程 理论上,一个端口可以服务很多长链接,实际上也确实是这样的 其实,所谓的长连接,并不是连个机器之间真的有一个连续不断的电流联系着,而是两台机器分别各自维护一个列表或称为结构的,其中记录着目标机器地址、端口以及自身地址和端口等信息,当发信息时把这个结构写在要发送的数据流的头部,目标网卡通过这个头部首先确认是发给自己的信息,然后确认端口,然后提交 在发送空闲时间里,长链接一般会用心跳包这样的数据包确认目标机器和自己通信正常,再空余的时间就没有任何数据交互了 这个原理就决定了,网卡和这个长链接端口在空余时间有足够的能力处理其它任何机器发来的数据,那为什么限制为一个端口只能为一个进程服务?其实很简单,如果一个端口在连接后需要交互一个庞大的数据,那将影响其它进程接收数据
是这样的,其实我的疑问点在于,拥有外网IP的路由器其实也相当于一个主机,只不过它负责转发,但这个路由器的端口数也是有限的 不超过65535,但这个路由器接的那些主机每建立一个连接,是不是路由的NAT地址表就会多一条外网IP+端口到内网IP+端口的一个映射,如果是这样的话,当主机的连接数超过65535的时候再建立连接时是会被直接拒绝呢,还是多分配一个外网?
宝龙哥 2015-09-08
  • 打赏
  • 举报
回复
引用 6 楼 lxh8810 的回复:
[quote=引用 1 楼 silverpot 的回复:] 1、你三台设备A、B、C是通路由器上的互联网,那么电信只会给你分配一个外网的IP,即路由器的IP。在服务器S眼里,你这三台设备的连接是来自一台机器的。内网到外网是NAT,外围到内网是端口映射。端口如何分配,路由器知道。 内网设备的数据包会被发送到路由器,路由器会记住这个设备IP和端口,解封装以后,他会把用户IP报文里的ip和端口换成自己的ip和端口(这个端口也是随机的),再把数据转发到目标网络,这样就和目标网络建立了连接。目标网络往回传递信息的时候就会把数据包发给路由器,然后路由器看一下自己的映射表,他会发现这个端口是和内网的 那台主机做的 映射,所以就会把数据传给你,这样你就读到了对方的信息 2、这个问题 可参考:http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html,至于连接数量,影响的因素比较多,个人觉得视具备情况而定。 3、参考1
看了http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html这个之后大家明白了,还有个疑问,如果是这样端口复用的话,路由器的NAT地址转换表应该包含哪些字段呢,是不是除了外网IP:PORT和内网IP:PORT外还应该有目的IP:PORT?[/quote] 这个如果你不参加考试的话是没有必要研究这个的,现在的交换机都在标准的基础上添加或修改了一些东东
银点 2015-09-08
  • 打赏
  • 举报
回复
引用 6 楼 lxh8810 的回复:
[quote=引用 1 楼 silverpot 的回复:] 1、你三台设备A、B、C是通路由器上的互联网,那么电信只会给你分配一个外网的IP,即路由器的IP。在服务器S眼里,你这三台设备的连接是来自一台机器的。内网到外网是NAT,外围到内网是端口映射。端口如何分配,路由器知道。 内网设备的数据包会被发送到路由器,路由器会记住这个设备IP和端口,解封装以后,他会把用户IP报文里的ip和端口换成自己的ip和端口(这个端口也是随机的),再把数据转发到目标网络,这样就和目标网络建立了连接。目标网络往回传递信息的时候就会把数据包发给路由器,然后路由器看一下自己的映射表,他会发现这个端口是和内网的 那台主机做的 映射,所以就会把数据传给你,这样你就读到了对方的信息 2、这个问题 可参考:http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html,至于连接数量,影响的因素比较多,个人觉得视具备情况而定。 3、参考1
看了http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html这个之后大家明白了,还有个疑问,如果是这样端口复用的话,路由器的NAT地址转换表应该包含哪些字段呢,是不是除了外网IP:PORT和内网IP:PORT外还应该有目的IP:PORT?[/quote] 这方面你要去研究路由器路由表了。这应该是一个通行标准。我没有研究过,你可以去找RFC文档看看。
宝龙哥 2015-09-07
  • 打赏
  • 举报
回复
理论上,一个长链接端口可以几个进程共享,但实际上一个端口似乎只能对应一个进程 理论上,一个端口可以服务很多长链接,实际上也确实是这样的 其实,所谓的长连接,并不是连个机器之间真的有一个连续不断的电流联系着,而是两台机器分别各自维护一个列表或称为结构的,其中记录着目标机器地址、端口以及自身地址和端口等信息,当发信息时把这个结构写在要发送的数据流的头部,目标网卡通过这个头部首先确认是发给自己的信息,然后确认端口,然后提交 在发送空闲时间里,长链接一般会用心跳包这样的数据包确认目标机器和自己通信正常,再空余的时间就没有任何数据交互了 这个原理就决定了,网卡和这个长链接端口在空余时间有足够的能力处理其它任何机器发来的数据,那为什么限制为一个端口只能为一个进程服务?其实很简单,如果一个端口在连接后需要交互一个庞大的数据,那将影响其它进程接收数据
宝龙哥 2015-09-07
  • 打赏
  • 举报
回复
引用 1 楼 silverpot 的回复:
1、你三台设备A、B、C是通路由器上的互联网,那么电信只会给你分配一个外网的IP,即路由器的IP。在服务器S眼里,你这三台设备的连接是来自一台机器的。内网到外网是NAT,外围到内网是端口映射。端口如何分配,路由器知道。 内网设备的数据包会被发送到路由器,路由器会记住这个设备IP和端口,解封装以后,他会把用户IP报文里的ip和端口换成自己的ip和端口(这个端口也是随机的),再把数据转发到目标网络,这样就和目标网络建立了连接。目标网络往回传递信息的时候就会把数据包发给路由器,然后路由器看一下自己的映射表,他会发现这个端口是和内网的 那台主机做的 映射,所以就会把数据传给你,这样你就读到了对方的信息 2、这个问题 可参考:http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html,至于连接数量,影响的因素比较多,个人觉得视具备情况而定。 3、参考1
是这样的
银点 2015-09-07
  • 打赏
  • 举报
回复
1、你三台设备A、B、C是通路由器上的互联网,那么电信只会给你分配一个外网的IP,即路由器的IP。在服务器S眼里,你这三台设备的连接是来自一台机器的。内网到外网是NAT,外围到内网是端口映射。端口如何分配,路由器知道。 内网设备的数据包会被发送到路由器,路由器会记住这个设备IP和端口,解封装以后,他会把用户IP报文里的ip和端口换成自己的ip和端口(这个端口也是随机的),再把数据转发到目标网络,这样就和目标网络建立了连接。目标网络往回传递信息的时候就会把数据包发给路由器,然后路由器看一下自己的映射表,他会发现这个端口是和内网的 那台主机做的 映射,所以就会把数据传给你,这样你就读到了对方的信息 2、这个问题 可参考:http://blog.sina.com.cn/s/blog_73428e9a0101ih38.html,至于连接数量,影响的因素比较多,个人觉得视具备情况而定。 3、参考1

1,315

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧