随着时代发展,现代程序员工作也被细分,不像以前搞全栈,一个人干几个人的活。但工作细分也可能导致程序员在遇到除开发领域外的问题束手无策,比如网络方面,今天就来研究下应该掌握的网络基础知识。
程序员开发过程中,突然有客户反馈应用访问不了。这时候负责此应用的程序员就着急了,打开网页发现一片白板,不是404、403、就是502。确实访问不了再立马查看日志,发现日志没问题,也没有报错,心想这必定是运维的锅,是不是运维做了啥手脚?立马跑去找运维,运维一顿操作发现,唉,费了半天劲,就是连不上服务器,去找网络工程师,最后网工一检查原来是连接服务器的网线松了。当然这是个笑话,但现实中如果运维没有做好监控,开发和运维都又不懂网络的话,真可能就难住了。所以掌握基础网络知识是每个从事it行业人员必备的。
说起上面的网页访问不了,出现各种数字码,这403、404、502代表的都是什么意思呢,今天就来研究研究啊。当我们访问一个网页时,浏览器就会向服务器发送请求,在浏览器接受并显示网页前啊,这个网页的服务器会返回一个包含HTTP状态码的信息头,这些个数字表示的就是状态码,英文叫HTTP Status Code,常见的状态码包括:200-请求成功、404-就是网页不存在、500-就是服务器错误。那具体是怎么分类的呢,HTTP状态码由三个十进制的数字组成,第一个数字意思是状态码的类型,包括信息响应(100-199)、成功响应(200-299)、重定向(300-399)、客户端错误(400-499)和服务端错误(500-599)。当然程序员最想看到的就是200-ok,而不是500-server error,而我们作为用户最不想看到的就是403-forbideen、404-request-timeout,至于具体的每一个数字状态码的意思大家可以百度查看,这里就不细说了。
直接上图:
图源自网络,作者未知,仅供学习
上图就是一个比较典型的传统网络架构,这里就来说一说这里的这些设备都是什么用途。首先咱们用户用的是电脑,想要联网,这电脑就得有个网卡,让计算机能够联网。用网线连到哪里去呢,一般都会连到二级交换机,相当于是延长网络的设备,处于OSI参考模型(七层,度娘可知)的数据链路层,二层又会连接到三层交换机或路由,是通过网络层转发数据的设备,四之七层交换机,就是处理传输层以上各层网络传输的设备了。
交换机有多个网络端口,通过识别数据帧中的目标MAC地址,根据自动生成的地址表决定从那个端口发送数据,如果表里有,就通过端口单播一对一转发出去,那要是没有的话就只能泛洪播出去。这里就得说一个广播域,就是多个交换机和主机组成的网络,这规模越大,广播域就越大,泛洪流量就越大,通信效率大大降低,而且,广播域两台主机还可以互相通信,数据安全性不高,所以为了解决这个问题就产生了VLAN技术,可以将物理局域网分隔成多个广播域,每个广播域成为一个虚拟局域网VLAN,同属一个VLAN的主机才能实现通信,不同VLAN就得通过ip路由实现通信,通过VLAN减小广播域传播范围,提高传输效率和安全性,可以通过基于交换机端口划分、也可以通过MAC地址、ip地址、协议、策略来划分VLAN,具体如何操作这就是网络工程师的活了,咱了解即可。
说起ip地址大家肯定不陌生,就说目前常用的ipv4地址由网络号和主机号两部分组成,例如192.168.1为网络号也就是网段地址,而最后一位就是主机号,网段地址就是设备区域的标识,主机号就是同一个网段的不同设备的标识,同一个网段不能有重复的主机号。路由器是更具网络号进行的路由。IP地址又可以分为ABCD四类,A类网络号范围0-127,去掉首尾保留地址,有126个可用地址,B类是网络范围是128.0到191.255,有16382个地址可用,C类可用地址由20多万个,D类范围224.0.0.0-239.255.255.255,没有主机号,属于组播,ip地址可分为公网和私有,公网就是互联网使用,私有就是局域网使用,贡丸地址是internet NIC分配,如图:
(1)ping 主机名/域名/ip地址,这个命令是一般就是来排除网络访问层、网卡、路由等故障,缩小问题范围。
(2)ipconfig 如果局域网使用动态分配ip,就可以查看本机的IP地址、子网掩码和网关等配置信息。
(3)traceroute ip地址,这个命令可以显示数据包到达目的地址ip所经过的路径,如果网络出问题就可以查看到底是一个节点问题。
(4)nslookup 可以查询ip地址对应的域名
(5)netstat 可以显示tcp连接、监听的端口、ip路由表、Ipv4统计的信息等
好了,至此对于网络的基础知识有一个大概的了解,快去实践吧,祝学习顺利!
END
作者|希里安