内容简介:今天部门同事问了个非常基础的网络问题,什么是上行流量,什么是上行流量。听同事在讨论,我觉得我这个伪网工实在看不下去了,不过他的问题说起来比这个要稍微复杂一点点,于是就有点搞不懂到底是怎么算上行和下行。我之前给同事分享过一个穿透内网的工具,叫 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 查看网络流量
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to the Analysis of Algorithms
Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99
This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!