及时更新技术认知

先来讲一下最近真实经历的一件事:

一般在测试网络是否通畅的时候,我们往往用ping这个命令,但它不能测试有端口防火墙限制。

于是,我们一般自己手写socket,一个server端,一个client端,什么语言都可以,c/c++/java/python/go等等,其中c最麻烦,高级语言直接用类库,但也得个10行左右的代码。

那么,有没有更简单的方法呢?

有!一行代码(命令)即可,如下:

python -m SimpleHttpServer  8080

我们知道,随着python的流行,目前很多系统都自带了python,尤其是Linux的各种发行版,基础模块,不用额外安装什么。

服务端有了,那客户端呢?

curl闪亮登场,如下:

curl http://server_ip:8080/

我们知道,http是应用层协议,基于tcp传输协议,而且在socket的四元组中,有三个元素是确定的,只有客户端的端口是随机的(限定在一个范围中,Linux下可修改,大概文件名是/proc/sys/network/ip_port_range,凭记忆手写,可能有误差,网上很容易搜到)。

这样,就能很好的测试网络出入端口是否被限制了(安全性比较高的环境,有两个防火墙,一个出流量的,一个入流量的),如果出的放开了(出流量对于我们来说都是已知的,即server端的ip和端口),但入的没有放开(入流量,client端只有ip是确定的,端口是随机的),则TCP三次握手不成功,会导致第一次握手client向server发送SYN报文,而server沿着原路向client发送SYN的ARK报文时,由于随机端口被防火墙限制了,导致握手失败。

技术方面,还介绍的基本介绍完了。

我还想多说一句,从事技术工作的,技术革新很快,我们也要随时升级自己的知识体系,软件工程本身就是编码、工具和过程管理组成的,工欲善其事必先利其器,能提高我们工作的效率,何乐而不为呢?!

上面是一个例子,再举一个例子。

Linux中有ifconfig、route这样的命令,最近使用的很多是ip addr xxx、ip route xxx、ip link xxx,为什么有这个变化呢?昨天在网上一搜,原来Linux上对于网卡和路由的配置由ifconfig和route逐渐演变成了ip addr和ip route,后者显示信息更简洁,更易于阅读和理解。

TonyBai前辈在第一次研究Docker时,开篇就讲了,Docker的出现,不仅仅改变了开发和部署的灵活性,更大的是我们对待新技术、新思想、新理念的最快的接受程度和态度,从而才能更好的为我们所用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容