The network is always considered to be the "outside", and the CPU etc. to be the "inside".
"Bytes In" is the amount of data received through that interface (i.e to your host from the network).
"Bytes Out" is the amount of data sent through that interface (from your host to the network).
Which of those you consider to be "upload" and which to be "download" depends on your view of your system - i.e. whether it is "up" or "down" from what that interface is connected to. If it's a home PC, you probably equate "In" with "download"; for a fileserver, "In" is usually called "upload".
You may also see "In" as "Rx" (i.e. Received) and "Out" as "Tx" (Transmitted), as in the output of
eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.x.x netmask 255.255.255.0 broadcast 192.168.x.255
inet6 fe80::xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 1813934 bytes 68509518 (65.3 MiB)
RX errors 1032120 dropped 0 overruns 0 frame 81778
TX packets 1473055 bytes 1797493199 (1.6 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 699501
device interrupt 18
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:172.20.x.x Bcast:172.20.x.255 Mask:255.255.255.0
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:36387424 errors:0 dropped:0 overruns:0 frame:0
TX packets:15636657 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:6378638797 (6.3 GB) TX bytes:14222465675 (14.2 GB)
(two different implementations of
ifconfig; identifying details x'ed out)
Some tools (e.g.
xosview) may show an aggregate of all network interfaces, i.e. total sent and received on all network interfaces. Then, the upstream/downstream terminology is unhelpful if some of the networks are "up" and some are "down".