内容简介:今天部门同事问了个非常基础的网络问题,什么是上行流量,什么是上行流量。听同事在讨论,我觉得我这个伪网工实在看不下去了,不过他的问题说起来比这个要稍微复杂一点点,于是就有点搞不懂到底是怎么算上行和下行。我之前给同事分享过一个穿透内网的工具,叫 frp,可以把你的内网某个设备的端口映射到一台公网的机器上,然后你访问公网的某个端口就相当于访问了内网的机器。他的问题是如果我现在通过这个端口远程到内网的机器去下载文件,这个流量是算这台公网的机器的还是算内网的机器。比如我本机 SSH 到公网的22端口,实际是连接到内网
今天部门同事问了个非常基础的网络问题,什么是上行流量,什么是上行流量。听同事在讨论,我觉得我这个伪网工实在看不下去了,不过他的问题说起来比这个要稍微复杂一点点,于是就有点搞不懂到底是怎么算上行和下行。
我之前给同事分享过一个穿透内网的工具,叫 frp,可以把你的内网某个设备的端口映射到一台公网的机器上,然后你访问公网的某个端口就相当于访问了内网的机器。他的问题是如果我现在通过这个端口远程到内网的机器去下载文件,这个流量是算这台公网的机器的还是算内网的机器。比如我本机 SSH 到公网的22端口,实际是连接到内网的那个机器的22端口,然后我在内网的机器上下载文件。这个流量是算哪个机器的。对于公网的机器来说这个流量是算上行还是下行。
要知道这个问题的答案,我们首先要知道网卡是干什么吃的?网卡的功能其实就2个,收数据和发数据,对应的 RX 和 TX 表示。
通过 Linux 的 iftop 命令我们可以很直观的看到数据包的发送和接收的实时信息,当然 ifconfig 也可以看,只是我个人习惯用 iftop
iftop -i interface
那么我们就用事实说话,看看这个流量到底是算内网的机器的还是算公网的机器的,我们准备一台内网的机器,并且安装 frp 和 配置
这里我在内网的 Windows 中安装一个 linux 系统。然后在我的 mac 远程过去
我们先在内网的 linux 上开启 frp
然后我在本机远程
➜ Downloads ssh root@121.42.14.64 -p 65423 The authenticity of host '[121.42.14.64]:65423 ([121.42.14.64]:65423)' can't be established. ECDSA key fingerprint is SHA256:a/CERDy7adLz7mgkB//4oZIseFElz/aOJ8SvhdkTWaM. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[121.42.14.64]:65423' (ECDSA) to the list of known hosts. Last login: Fri Sep 1 08:46:01 2017 from adsl-172-10-100-1.dsl.hstntx.sbcglobal.net [root@elk ~]# [root@elk ~]# [root@elk ~]#
同时我们在阿里云的机器上开启一个终端执行
[root@aliyun ~]# iftop -i eth1
然后我们返回连接到的内网机器,下载一个文件
然后切换到阿里云的终端观察,我大概等了有5分钟,此时这个文件已经下载了8%,总大小4.1G
[root@elk ~]# wget -c http://mirrors.163.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso --2017-09-01 08:52:11-- http://mirrors.163.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso Resolving mirrors.163.com (mirrors.163.com)... 123.58.190.209, 123.58.190.236, 123.58.190.234, ... Connecting to mirrors.163.com (mirrors.163.com)|123.58.190.209|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 4379901952 (4.1G) [application/octet-stream] Saving to: ‘CentOS-7-x86_64-DVD-1611.iso’ 8% [======> ] 389,358,141 1.01MB/s eta 40m 58s
然后我们返回阿里云的设备,此时的终端我们看不管是收和发总共也才几百 k的
这是为什么呢?
因为我 SSH 连接到内网的 Linux 主机只是和主机的 SSH 协议对应的端口建立了连接,而下载的是内网的机器和网易开源镜像站建立了连接,这和阿里云半毛钱关系都没有。
同时,通信是双方的,虽然中间数据包会经过很多个路由,但是目标IP 和端口只有一个,不会牵扯到第三个人,不管是 TCP 协议还是 UDP 协议都有源IP 目标 IP 源端口和目标端口。
从上面的例子中我们可以看出,我本机和阿里云的65423端口建立了连接,而阿里云服务器的 frp程序的7000端口和我内网的设备建立了连接
[root@elk ~]# ss -ant| grep 121.42.14.64 ESTAB 0 44 192.168.1.111:36080 121.42.14.64:7000
而内网在调用 wget 去下载的时候又会和网易的服务器去建立连接,所以这就解释了这个流量到底是算谁的这个问题。
同时在科普下本文的主题,如何判断上行和下行流量。
网卡有收和发2个功能,你从其他服务器获取数据,这叫下载,是下行流量,反之,你本机向某个服务器发送数据,比如 FTP 上传、HTTP POST 或 PUT 数据 这叫发,也就是上传,上行流量。不知道是不是看明白啦!
那么 Windows 电脑 打开网络连接可以看到收和发的数据包字节总数
Linux 的 ifconfig
[root@aliyun ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.169.22.37 netmask 255.255.248.0 broadcast 10.169.23.255 ether 00:16:3e:00:05:11 txqueuelen 1000 (Ethernet) RX packets 11 bytes 1340 (1.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 38 bytes 2480 (2.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 121.42.14.64 netmask 255.255.252.0 broadcast 121.42.15.255 ether 00:16:3e:00:29:6d txqueuelen 1000 (Ethernet) RX packets 1172482 bytes 1430753982 (1.3 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 617708 bytes 817228882 (779.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 5028 bytes 406494 (396.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5028 bytes 406494 (396.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
解答
1.内网流量算上行还是下行?
这个和内网外网没关系,和设备的网卡有关系,每一块网卡都可以收发数据,比如你从连接内网的网卡出去到某个内网的机器下载东西,这个流量就算是内网网卡的下行数据,如果你通过内网的网卡向局域网的某个设备上传文件就是上行。
2.比如我映射内网的80到公网的8080端口,然后我在本地访问公网的8080端口下载文件,这个流量算谁的,是上行还是下行?
我在内网放了一个600多 M 的文件,然后按照上面的方式进行映射,本地下载,观察流量变化,你发现公网机器上收和发的流量几乎差不多。
按照之前说的,我们来分析下为什么会这样:
- 我本机和服务器的8080端口建立连接,去请求数据,对于我本机来说是下载数据。
- 对于服务器而言是发数据,是服务器向我本机发送数据,是一个上传的过程。
- 而服务器和内网机器之间建立连接,是服务器从内网机器的80端口去获取数据,是收数据,而内网的机器则是向公网机器的8080端口发送数据,下图是内网机器的收发数据截图
所以通过 frp 这种内网 工具 对于公网的设备而言是双向的哦。
3.比如某个节点10g带宽,这个10g 带宽是指上行还是下行
这个要问购买这个节点带宽的人咯,这个到底是上行下行都是 10G,还是只是上行10G,比如说对于我阿里云的服务器来说,2M 带宽,这个带宽是指上行速度2M。
好啦!本期话题到此为止,希望能对你有所帮助。
以上所述就是小编给大家介绍的《科普:什么是上行流量什么是下行流量》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- CVPR 2019 | 旷视研究院提出Re-ID新方法VPM,优化局部成像下行人再识别
- 混淆加密流量规避检测:黑客利用加密流量趋势明显
- 还为模拟流量测试发愁吗?!滴滴开源RDebug流量回放工具!
- 利用最新Flash漏洞,通过“流量宝”对流量从业者的攻击活动
- 亿级流量系统架构之如何设计承载百亿流量的高性能架构【石杉的架构笔记】
- Linux 查看网络流量
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
React Native开发指南
[美]艾森曼 / 黄为伟 / 人民邮电出版社 / 2016-6-1 / CNY 59.00
本书通过丰富的示例和详细的讲解,介绍了React Native这款JavaScript框架。在React Native中利用现有的JavaScript和React知识,就可以开发和部署功能完备的、真正原生的移动应用,并同时支持iOS与Android平台。除了框架本身的概念讲解之外,本书还讨论了如何使用第三方库,以及如何编写自己的Java或Objective-C的React Native扩展。一起来看看 《React Native开发指南》 这本书的介绍吧!