我们身边的网络常识
今天咱们交流的主题是网络基础,这块东西对于咱们计算机或者通讯专业的人来说应该是很熟悉的,今天拿出来再说一说,是因为这块知识在咱们工作和生活中时刻都在使用,并且非常重要,希望大家不仅是要了解,还要深入掌握。网络有硬件层面,也有软件层面,更有应用层面的东西,今天咱们就来重温一下这些常识,。
讲到网络,就不能不说一下,网络的分层,这块东西不管是在面试还是咱们看书学习网络知识,都被高频次地提到,网络有多种分层方式,比如:7层、5层等等,那么,为什么网络协议要分层呢?有什么好处呢?其实很简单,就是将复杂的程序简单化。
下面我们看下最经典的7层结构协议,如下图所示:
这个分层结构大家可以观察下,从底层到高层。我们可以看到每一层对应的软件、硬件。
现在我们以一个最基本的http上网为例,看下数据在网络中是怎么走的。
首先我们点击网页后,你的请求会作为http报文的字段装进要发送的数据包中。
HTTP 协议是基于 TCP 协议的,所以它使用面向连接的方式发送请求;
TCP在发送给每个报文段的时候,都需要对方有一个回应 ACK,来保证报文可靠地到达了对方。如果没有回应,那么 TCP 这一层会进行重新传输,直到可以到达。同一个包有可能被传了好多次,但是 HTTP 这一层不需要知道这一点,因为是 TCP 这一层在埋头苦干。
TCP 层发送每一个报文的时候,都需要加上自己的地址(即源地址)和它想要去的地方(即目标地址),将这两个信息放到 IP 头里面,交给 IP 层进行传输。
IP 层需要查看目标地址和自己是否是在同一个局域网。如果是,就发送 ARP 协议来请求这个目标地址对应的 MAC 地址,然后将源 MAC 和目标 MAC 放入 MAC 头,发送出去即可;如果不在同一个局域网,就需要发送到网关,还要需要发送 ARP 协议,来获取网关的 MAC 地址,然后将源 MAC 和网关 MAC 放入 MAC 头,发送出去。
网关收到包发现 MAC 符合,取出目标 IP 地址,根据路由协议找到下一跳的路由器,获取下一跳路由器的 MAC 地址,将包发给下一跳路由器。
这样路由器一跳一跳终于到达目标的局域网。这个时候,最后一跳的路由器能够发现,目标地址就在自己的某一个出口的局域网上。于是,在这个局域网上发送 ARP,获得这个目标地址的 MAC 地址,将包发出去。
目标的机器发现 MAC 地址符合,就将包收起来;发现 IP 地址符合,根据 IP 头中协议项,知道自己上一层是 TCP 协议,于是解析 TCP 的头,里面有序列号,需要看一看这个序列包是不是我要的,如果是就放入缓存中然后返回一个 ACK,如果不是就丢弃。
TCP 头里面还有端口号,HTTP 的服务器正在监听这个端口号。于是,目标机器自然知道是 HTTP 服务器这个进程想要这个包,于是将包发给 HTTP 服务器。HTTP 服务器的进程看到,原来这个请求是要访问一个网页,于是就把这个网页发给客户端。
下面分别介绍下常用网络硬件:
网线和光纤都是物理层设备,进行数据传输。
我们使用的网线一般是双绞线,为什么叫双绞线,看图,
两两搅在一起,目的是为了在传输过程中减少干扰。一般网线八个线,12负责发送,36负责接收,一般使用的网线两端线序,13交换,26交换。
图:双绞线、水晶头接法。
百兆网线其他四星不用,千兆网线或者poe供电的网线,另外四芯是使用的,网线的传输是有损耗的,一般网线最多只能传输100M,超过距离必须加中继,比如交换机。
这里插入POE的一些常识:
POE是指Power Over Ethernet,主要功能就是一根网线既传输数据,也提供电源。现在公共场合随处可见使用POE供电安装网络摄像机或者无线覆盖AP,它有以下好处:
降低成本:无需再进行繁琐的电源布线,省去设备供电建设和维护费用,如电源线、插座、管道等;
部署灵活:设备部署的位置不受限制,也不必再去考虑电源插座是否够长,AP等终端设备可以灵活地安装在远端的任一位置,如天花板、隔断上部等位置;
POE通常输出电压48V,也有24V、12V等不同应用,单端口最大供电功率最大达30W,同时提供对非标准受电设备的支持,极大提升了网络的业务接入能力;
为了达到远距离传输,我们又用上了光缆,光缆内一般都有多条光纤芯(我们通常叫芯),如4芯、8芯、24芯等,我们使用时都是一对芯同时使用,一根用于接收,一根用于发送。
光纤,分单模和多模光纤,单模光纤具有极宽的带宽,特别适用于大容量、长距离的光纤通信,缺点是价格高;多模光纤仅用于较小容量、短距离的光纤传输通信。
传输距离最远的单模光纤,可以传80甚至120公里,咱们港珠澳大桥的点用的就是光纤传回来的,光纤传输并不神秘,只是我们用的少,不大了解。这种模式,咱们开发人员就不需要管太多施工传输方面的工作的,简单的1对1光纤收发器甚至没有任何需要我们设置的地方,那只是个通道,很方便。
网卡,数据链路层设备,他负责接收网线传来的信号,并且网卡有mac地址,我们网上传输的数据包,包头都有目标地址的mac地址,如果没有,那他就是个广播数据。当网卡发现送过来的数据包中目标mac地址和自己一样,他觉得是自己的包,就会收下来。我们的抓包软件,经常选择网卡进行抓包,将本机通过该网卡收发的所有数据抓取并分析,如果将网卡设置为混杂模式进行抓包,还会将传过来的所有数据都抓取,包括一些广播包,比如arp等。
集线器(hub),属于纯硬件网络底层设备,物理层设备,所以它发送数据时都是没有针对性的,而是采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。,当连了多个设备之后容易出现数据冲突。依据实践经验,一个10Mbit/s集线器所管理的计算机数不宜超过15个,100Mbit/s的不宜超过25个。如果超过,应使用交换机来代替集线器。同时利用这个原理,我们可以对连在同一个hub上的所有终端进行抓包分析。
交换机,我们经常会提两层交换机、三层交换机,什么是两层、三层,两层就是MAC层,把数据包的MAC头取下来看一看怎么处理,接收,丢弃还是转发,这种就是两层设备;同样把MAC头取下来,再把IP头取下来,看一看怎么处理,接收,丢弃还是转发,这种就是三层设备。
层数越高,越智能,可以进行的配置就越多,当然价格也上去了。现在我们生活中,很多器件已经合而为一了,比如我们办公室用的那个交换机,就已经把路由器、交换机、网关等功能和在一起了,甚至有些交换机还带有安全功能,可以设置防火墙、过滤数据包。
常用家庭交换机也比较小,现在都注重使用wifi,一般家用的路由器wifi只支持十几个终端,需要支持更多终端则需要买专业的或者想办法通过添加更多交换机扩容翻倍,咱们办公室20多个终端曾经这么做过。大家可以看下商用交换机,他的端口就不受影响,多的可以有64口,前面我们说过hub是无脑复制,交换机有脑表现在哪里,它具有"智能记忆"能力和"学习"能力,学习完后存有的MAC地址表。三层交换机可以设置VLAN,设置多个不同网段的局域网,各局域网互相之间隔离。
交换机因为智能可以设置,针对交换机的环境,有一种端口镜像(SPAN)技术,复制其他端口的数据包到特定端口。通过这种方式,我们可以对网内其他设备进行抓包分析。
到这我已经讲了三种环境的抓包怎么处理,这里大家可以想一下,咱们怎么对手机进行抓包,除了手机root后使用tcpdump这种方式外,还能不能设计出其他方式,我没试过,只是有些想法,感兴趣的都可以试试,看看是不是能分析出那些不讲规矩的APP怎么在背后偷偷把我们IMSI、IMEI等信息传回去的。
硬的暂时结束,以后用其它文章详细说明这些工作原理,接下来咱们来看下软的,我们看几个常用协议
常用协议1——DHCP,动态主机配置协议
相信大家对这个协议非常熟悉了,这个协议通常用在局域网络中主机申请自动获取IP地址。 手动配置IP和DHCP相比就像买房和租房。
过程:DHCP客户端程序发起请求,要求一个动态IP,DHCP服务端根据目前配置的IP地址池,从中提供一个可用IP和子网掩码。(先广播寻找DHCP服务器)
1.保证任何IP地址在任意时刻只能有一台dhcp客户端使用
2.dhcp可以给用户分配永久固定的ip地址
3.允许与其他办法获取ip地址的主机共存,如手动设置IP地址的主机
常用协议2——ARP
基本功能:将已知的IP地址,解析成mac地址,以便主机能正常进行通信。Mac地址对上了,才知道这个包是发给自己的。
工作流程:
- 主机1想发数据,先查arp缓存表
- 如果没找到,在本地网络广播arp请求帧,本地网络各主机检查IP是否与自己匹配,不匹配则丢弃。若主机2匹配,存储主机1信息到缓存表,将自己mac通过arp回复单播给主机1
- 主机1收到回复麻将主机2的IP和MAC添加到自己的arp缓存表。
arp缓存表:保存多个arp条目,每个arp条目由一个IP地址和一个对应的mac地址组成。缓存时间默认为120秒。
Arp包不会主动发送,需要主机进行通信时才可以。
捕获到的ARP包及响应(ping来产生),协议类型。
这里有个例子,上次某个项目有这么个事,对方在设置完板卡ip后一段时间,忘记了设置的服务端到底是什么了,就向我们求助,如果是板卡IP忘了,我们可以用上次分享的shell工具自动发ping命令,很快试验出来,也就分把分钟,但是服务端不一样,如果要一个个去试,得不断修改服务器ip地址去试,这个工作量就太大了,动则可能上百次。后来我们就用抓包工具,抓包,结果我们发现如下:
设备不断发arp包询问后台,当然这个arp是交换机发出来的,板卡发包给交换机,交换机不知道给谁,就发包广播询问,我们一下子就得到了指定服务端的IP。
常用协议3——IP以及TCP/UDP/ICMP
IP数据报首部格式(着重介绍TTL、IP分片(1500字节))
存活时间,定义了在该数据包被丢弃之前,所能经历的时间,或者能够经过的最大的路由数目。减为0时该数据报会被丢弃。
IP分片:分片大小基于数据链路层最大传输单元大小,以太网为1500,不包括14字节以太网头
ICMP协议
TCP和UDP
TCP
端口号:名称–注释
21:ftp–文件传输协议(FTP)端口
22:ssh–安全 Shell(SSH)服务
23:telnet–Telnet 服务
25:smtp–简单邮件传输协议(SMTP)
37:time–时间协议
53:dns–域名服务
69:tftp–小文件传输协议
80:http–超文本传输协议
109:pop2–邮局协议版本2
110:pop3–邮局协议版本3
161:snmp–简单网络管理协议
179:bgp–边界网络协议
213:ipx–互联网络分组交换协议
443:https–安全超文本传输协议
UDP:
应用场景:
1.需要资源少,内网;
2.不需要一对一沟通,可以广播;
3.需要处理速度快,时延低,可以容忍少量丢包
UDP虽然没有TCP那么可靠,并且无法保证实时业务的服务质量,但是,由于UDP的传输时延低于TCP,能与视频和音频很好匹配。因此,在实际应用中,RTP/RTCP/UDP用于音频/视频媒体,而TCP用于数据和控制信令的传输。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议
至于经典的TCP的三次握手、四次断开,大家可以自己查资料温习,这是TCP可靠性的直接体现。
其他常见的协议——FTP、telnet、SSH等我们暂时就不多说,今后以一个个小专题跟大家交流。
最后我们讲一下手机上网,我们的手机从最初的2G、3G到现在的4G,网速越来越快,现在手机上的应用越来越多,大家已经很难离开手机了,但是几乎没有关注过手机是怎么上网的,今天我给大家简单介绍一下。
以下是我们2G时候的系统结构图,我给大家介绍下,毕竟我们搞取号定位出身,了解一下。
其中:手机是客户端,无线信号的服务端就是基站子系统(BSS),基站子系统分两部分,对外的是基站收发信台(BTS),另一部分对内连接有线网络,叫基站控制器(BSC),基站收发信台通过无线收到数据后转给基站控制器。这部分属于无线的部分,统称为无线接入网(RAN)。
基站控制器通过有线网络,连接到运营商的数据中心,这部分称为核心网(CN),核心网还没有真正进入互联网,这部分还是主要提供手机业务,是手机业务的优先部分。移动数据交换中心(MSC),接受外来的数据,他是进入核心网的入口,但它不会让你直接接到互联网上。他首先要对你进行验证蛇否合法。鉴权中心和设备识别寄存器主要是负责安全性的,访问位置寄存器查看你目前在哪里,归属位置寄存器查看你来自哪里,也就是号码归属地,这些牵扯怎么收费。当你的手机卡合法,也有钱,这是才允许你上网,通过一个网关——移动网关交换中心(GMSC),你就可以上网了。
BTS:基站收发信台
BSC:基站控制器
BSS:基站子系统
RAN:无线接入网
CN:核心网
MSC:移动业务交换中心
咨询AUC鉴权中心和EIR设备识别寄存器——安全
VLR:访问位置寄存器——现在在哪里
HLR:归属位置寄存器——来自哪
GMSC:网关移动交互中心
NSS:网络子系统
以下是3G的系统结构图,这部分咱们不多说
下面我给大家介绍下目前的4G,还是看图
基站为eNodeB,下行速度百兆级。前面的2G,MSC检查手机是否合法是他,转发数据也是他,那就是控制面数据面合在一起的。而4G核心网实现了控制面和数据面分开,控制面主要是指令,小包,关注实时性。数据面主要是流量,大包,需要吞吐量。
当一个4G手机想要上网的时候,通过以下步骤:
通过所在基站eNodeB,发起请求;
eNodeB将请求发给MME,“有手机要上网”;
MME请求手机,认证,鉴权,请求HHS看看还有没有钱,看看是在哪里上网的。
MME通过认证后,转给SGW,通过PGW建立一个隧道;
手机通过建立的隧道成功上网。
HHS:存储用户签约信息的数据库,归属地、认证信息等
MME:核心控制网元,手机连上,MME根据HSS判断你是否合法
SGM、PGW数据面
允许接入后,手机直接通过e-Node B连接SGW(数据面接待员),通过PGW(出口网关)连到IP网络
PCRF:策略和计费控制单元
最后结这个给大家普及一个知识,就是咱们现在的手机不能上google,不能用脸书,是怎么回事,哪里做了限制,大家看我上面的描述,给我个答案,哪里
那么当我们出国去以后呢,会是一种什么情况,可以上了吗,答案是不可以,我们看下我们在国外是怎么上网的,看图
SGW是本地运营商的设备,PGW是所属运营商的设备,当你在国外要上网,MME回去查国内运营商的HHS,看看合法性,是否有钱。如果允许上网,手机和SGW会建立一个隧道,SGW和国内运营商的HGW建一个隧道,然后通过这个隧道上网。判断你能不上网的是国内的HHS,上网策略是国内运营商的PCRF,给手机分配的IP也是国内运营商统计,你的流量全部是通过国内运营商,不过国外的也会根据流量来结算。
所以,最后的结论是,我们国内的卡,即使到了国外可以漫游上网,也是不可以翻墙的,所有流量,咱们中移动等运营商都记着给收钱呢。同样,老外的手机即使到了国内,他们照样可以翻墙上网。