自己动手打造mini型QQ(二):从局域网到互联网的miniQQ

上一篇博客:我们实现了局域网下的QQ互联通信:动手实现局域网仿QQ互联
本篇博客我们把通信范围拓展到整个互联网

私有/公有ip

为什么socket绑定了ip地址和端口后,只能在局域网中通信呢,这就需要我们区分私有ip和公有ip

公有IP

公有IP地址是由INIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给向INIC提出申请并成功注册的组织机构。通过公有IP地址能直接访问因特网,当然公有IP是要钱的。

私有IP

随着网络的发展,为节省可分配的注册IP地址,有一组IP地址被拿出来专门用于私有IP网络,称为私有IP地址。私有IP地址范围:

A类: 10.0.0.0~10.255.255.255

B类:172.16.0.0~172.31.255.255

C类:192.168.0.0~192.168.255.255

这些地址是不会被Internet分配的,它们在Internet上也不会被路由,虽然它们不能直接和Internet网连接,但通过技术手段仍旧可以和 Internet通讯(NAT技术)。公网IP是直接与英特网连接可以直接访问网络(上网),而私有IP地址则是在局域网中使用的IP地址,私有IP是不能直接上网的(无法直接和公网通信),当私有网络内的主机要与位于公网上的主机进行通讯时必须经过地址转换,将其私有地址转换为合法公网地址才能对外访问。也就是要使用NAT-Network Address Translation 网络地址转换技术。

那么平时我们的电脑是如何上网的呢?比如我们办理了电信宽带,拉一根网线连接到我们的电脑,我们的电脑就能上网了。实质上此时我们的电脑是一个私有IP,电信那边购买了一个公有IP,我们电脑和电信的公有IP之间有一个NAT技术设备,也就是说我们能上网是通过电信的公有IP实现的。

如果在家安装了路由器我们的多台电脑连接在这个路由器上,那么这些电脑直接就构成了局域网,在这几台电脑上可以直接进行局域网的通信。但是你家里构成的局域网和公司的局域网是不能通过局域网通信的。

在这里记录私有IP和公有IP的原因在于socket网络通信需要区别,以便我们知道哪些IP之间是不能通信的,哪些IP之间是可以通信的。从上述原理我们就知道同一个局域网内的设备A和设备A,设备A和设备B,广域网内的设备A和设备B可以实现双向连接通信,局域网的设备A和广域网的设备B可以单向连接(只能由局域网去连接广域网,也就是局域网是客户端,广域网是服务端;因为广域网的IP是固定且唯一的,局域网连接网络通过指定这个公有IP就能找到这台计算机,找的过程是局域网连接电信网络,通过NAT技术将这个局域网私有IP转换为公有IP然后再去和指定的公有IP通信,这样就可以找到指定的公有IP,相反私有IP是不能被公有IP找到的)通信。不同局域网之间的设备不能通信。

私有ip和公有ip参考了博客 https://blog.csdn.net/youand_me/article/details/83109238

思路分析

了解上述区别了,我们要解决的一个问题是,获得一个可自由使用公有ip,这里推荐使用阿里云服务器,下面就是整个server/client系统上云的配置过程。

阿里云服务器配置

购买阿里云服务器

点击:购买界面传送门

2.png

选择最低配置即可满足需求,完成学生认证后服务器低至9.5元/每月,阿里爸爸算是比较良心了哈哈
如果你不愿花钱,可以联系我免费使用我的阿里云服务器。前提是我的服务器没有到期。

3.png

这里有系统镜像和应用镜像,我的理解是应用镜像是在系统镜像上预装了一些应用软件,这里我选择的是系统镜像、Ubuntu 16.04 64位系统,其实这些配置在购买完成后是可以修改的,相等于重装系统。
由于是Linux系统,需要掌握一些基本的linux终端命令,这个很简单,百度十分钟就学会了。

云服务器配置

概览处修改密码

4.png
5.png

防火墙处设置规则

服务器默认只开放了指定端口,如果想要通过更多端口来访问服务器,我们需要添加一个规则,下图中最后一个规则就是我添加的


6.png

云服务器环境搭建

点击页面右上角的远程连接,可打开一个远程连接终端,我们就是这样来控制服务器的,玩过linux系统的同学应该很熟悉。

输入sudo su root切换至root身份

7.png

虽然报了个错,但是也切换到root了,暂且忽略这个错误,注意最好不要使用屏幕提示的那样升级Ubuntu至18.04.

由于我们的是用python编码的,所以需要python环境,而ubuntu是预装了python的,不过是python2.7,我们可以通过python -V来查看python版本,所以下一步我们要做的就是安装python3,注意一定一定不要卸载python2,否则系统会非常脆弱。

安装

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

解压安装包

tar zxvf Python-3.6.3.tgz

切换到解压目录

cd Python-3.6.3

安装配置,同时指定安装路径

./configure --prefix=/usr/local/python36

编译

make

安装

make install

到此为止python3安装完毕,此时输入python -V,不出意外依然是输出python2.7,还需要一步修改python3为默认才行,这个过程叫做软连接

软连接

mv /usr/bin/python /usr/bin/python.bak

ln -s /usr/local/python36/bin/python3.6 /usr/bin/python

到此python3的环境算是完全配置好了。

上传python代码

下一步就是要把我们的代码上传到阿里云服务器了,为了以后方便,先在云服务器上新建一个myfile文件夹,命令是:

mkdir myfile

8.png

然后windwos下连接linux服务器还需要下载一个软件,putty,非常小巧,也非常强大、好用

putty传送门:点击下载

下载好之后安装,除了修改安装路径其余都是一直next,最后finish。

在“运行”中输入cmd,打开控制台,切换到刚才Putty的安装目录下,我的是d:\putty,然后输入pscp命令,我们需要这个命令来实现文件的上传。如下图所示,命令格式为:

pscp C:\Users\lenovo\Desktop\aliyun\server.py root@xx.xxx.xxx.xx:/home/admin/myfile/

即pscp 要上传的文件路径 服务器账号@服务器IP地址:要存放在服务器的位置路径,服务器账号一般固定是root

输入命令后出来这个:

9.png

,要不要在缓存中存储密码,为了安全输入n吧,回车后再输入密码,如果没出错的话,文件已经上传到服务器了,在服务器上可以通过ls命令查看

运行python代码

理论上说使用命令:

python server.py

就能运行python了,但是这样有一个缺点就是一旦把连接终端关闭,server.py运行的进程已经被杀死了。要想一天24小时使代码在后台运行,可使用命令。

nohup python server.py &

代码打印信息不再在终端输出,而是保存在了同目录下的nohup.out里。

运行结果示例

10.png

左边是云服务器,右边是本地客户端

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,586评论 2 57
  • # 图解TCP/IP 标签(空格分隔): 2018招聘 --- ##第1章 网络基础知识 ### ### 1.1 ...
    Kai_a3da阅读 1,432评论 0 2
  • 这个项目的由来是来自计算机网络课程学习的大作业,基于socket套接字写一个超小型的QQ,晚上8点到12点的奋战,...
    月小水长阅读 1,204评论 1 7
  •   本文简要的分析了长连接产生的背景以及所解决的问题,并对比了keep-alive与心跳机制对长连接保活的影响,最...
    曹丰斌阅读 9,122评论 1 20
  • 《灯》 回忆里总亮着一盏灯 那是妈妈无尽的守望 灯光又明又亮 牵引着回家的方向 多少个日夜流逝 灭不掉的是那一室的...
    张晨870510阅读 147评论 -1 1