网络是个什么东西?

  1. 1. 计算机网络!
  2. 2. 物理层
  3. 3. 数据链路层
  4. 4. 网络层
  5. 5. 运输层
  6. 6. 应用层

假设某一天,世界上没了网络,那就不是你看不到我更新的问题了,生活的各个方面都会受到影响!
网络可以说是离我们生活很近,但就是看不见摸不着理解不了的东西——我是怎么浏览到全国各地甚至世界范围的网页并且能够下载文件的?我和同学打游戏时,我们是怎么互相看到对方的?SSH是怎么远程链接上云端的主机的?
带着这些 疑问,我粗浅滴浏览了一遍《计算机网络》这本书,做个很简单很简单的总结吧!

计算机网络!

作为个人用户,我们要上网,就需要连接到本地的网络服务供应商ISP才可以,之后本地的ISP一级一级向上连接直到主干ISP,世界主流的主干ISP都是连接在一起的,他们再根据这些信息的目的地将信息传递到目的地。中国主要几个ISP就是中国电信、中国联通、中国移动等。向这些ISP交钱换来的是连接到ISP的网络中的权利(至于如何连接,则是接下来要讲解的),也获得了相当于与世界上所有其他计算机连接的权力(被墙的不算啊( ఠൠఠ )ノ)。
连接ISP,方式分为ADSL、LAN、FTTH、PON四种。
ispdis.PNG

要研究数据如何传送,就要了解网络传输的结构:
按照TCP/IP五层结构,由浅入深,从最底层到最表层地解释信息在网络中的传播
5ceng.PNG
首先我们要理解为什么构建一个五层结构,这是因为每层的结构既得到了前面一层的支持,又为后面一层提供了服务,最终每一层看起来就像只在本层互相通信而不受其他层干扰一样。可以说分层是对其他层的一个抽象,使得你不用去管其他层是如何完成任务的。

物理层

首先最底层,就是物理层,在这个层次跑的是bit流,也可以理解为表示0与1的物理现象,可以是数字量的高低电平,也可以是被调制后的模拟信号,甚至可以是光信号(光纤网络),这些传播方式作为物理层为上层提供了很完善的信息传播途径。(这些0、1的规范协议也是属于物理层的范畴,类比串口的三根线、TTL电平规范以及传输前后的调制解调)
xDSL(数字用户线)技术就是属于物理层面上的,这种技术可以利用原本假设好的电话线进行网络通信,只需在电话线两端接上调制解调器(Modem也就是俗称的“猫”),ADSL也是用户连接到ISP(网络服务供应商)的方法之一。

数据链路层

在往上就到了数据链路层,在这一层主要是面对硬件(对网络来说硬件就是网卡)的,主要有两种协议工作在数据链路层,他们是点对点通信的PPP(Peer to Peer Protocol),以及面向局域网(以太网Ethernet)的MAC协议。
PPP是最常用的点对点通信协议,通常用在广域网通信上(比如ISP之间的通信?),还有大家经常说的PPPoE(PPP on Ethernet,基于以太网的点对点通讯协议),可以实现以太网中没有的身份验证、加密、压缩的功能,也用于ADSL宽带接入。
重点讨论MAC协议。每个硬件生产就被赋予了一个全世界唯一的编号,称之为硬件地址也就是MAC地址,MAC帧仅可被局域网中目标MAC地址对应的主机、路由器接收,达到使用MAC地址传输的作用。
mac.PNG

网络层

接下来我们来到了网络层(IP层),MAC地址用来访问局域网中的硬件,而IP地址则是整个互联网中独有的身份证。我们想要访问到世界上任意一台联网的计算机,必须使用这个32位的数字来确定目标。然而要确定这个目标就需要以下几个重要协议来支持:
ARPA协议,通过IP地址解析下一个目标主机、路由的MAC地址,来添加到MAC帧的首部,所有的设备都应可以从IP解析到MAC,因此ARPA成为数据链路层到网络层的中介;
路由表,记录在路由器中,在路由表中记录着本网络下的其他路由的信息,可以通过目标网络IP地址解析出下一跳最佳路由,是IP数据报传输的引导者。
路由器作为两个网络的连接者,拥有两个MAC地址和两个IP地址!
一个主机要通过局域网发送一封IP数据报,要经历一下步骤:
0.若通信双方处于同一网络,则可直接交付,不需经过路由。
1.找到本局域网下的默认路由(即网关gateway),把目标IP、本机IP连同数据一同发送给默认路由;
2.默认路由根据目标IP查询路由表,寻找下一跳路由的IP,以此类推;
3.直到路由器若发现目标IP属于同一个局域网,则进行直接交付,完成一次传输。
IP数据报(IPv4)的结构如图所示:
IP.PNG
上面介绍了局域网中主句的重要参数,IP地址、网关,还有一个重要参数:子网掩码(mask),一般为连续的1与连续的0组合,根据子网掩码可以得到主机所属的网络号和主机号,由此可以判断该主机处在那个网络,进而可以判断是该直接交付还是该查找路由表。
由于IP地址的紧缺,不能保证每台主机都能够分配到一个IP地址,我们在家上网使用的都是NAT(网络地址转换)技术产生的本地IP地址(内网IP),而不是互联网上的IP地址(公网IP)。如何区分一个IP是公网还是内网呢?IP在分配时已经作了规定,以下这些段的IP都用作内网使用,因此不会出现内网IP与公网IP冲突的情况。
zhuanyong.PNG
只要本地互联网上的其中一个路由器接入到了公网,也就是其中一个IP地址为公网IP,则这个本地网络都能够访问到互联网,方法就是不同的主机占用那个路由器公网IP的不同端口,远程主机就像是在与这个IP的不同端口通信一样。但由于没有公网IP只能使用端口,这些本地网络中的主机不能作为互联网上的服务器使用,因为互联网上的客户无法请求本地网络中的服务器提供服务。
VPN(虚拟专用网)开始并不是用来“科学上网”的,而是通过使用互联网将多个分布在各地而不互相连接(仅通过互联网连接)的局域网虚拟地连接起来,使得这几个局域网好像在同一个局域网下一样,并且通过加密手段使在互联网上传输的数据也很安全。
vpn.PNG

运输层

接着我们来谈运输层,运输层主要讲了两种传输方式,即无连接,尽最大努力交付的UDP与面向连接,可靠交付的TCP。
UDP就类似于我们在单片机通信中的协议,二者只管尽力发送,就算发送失败也不会做处理。而TCP则确保每一帧的完整接收,首先双方先建立连接,之后开始数据传送,每一帧数据发送后,接收方回复确认则表明收到,否则重新传送,传输完成后断开连接。由此可见,UDP快但不稳,TCP稳但不快,二者的应用方向不同!
运输层作为连接应用与网络的中介,引入了端口这一工具,通过端口,发送数据时IP地址得到了分用,接收数据时IP地址得到了复用,UDP与TCP都使用了端口,并且为了方便建立连接,TCP使用了套接字(socket)作为连接的端点,套接字就是IP+端口的组合。
udp.PNG
tcp.PNG

应用层

最后到了应用层,有了前面几层的铺垫,应用层所需要完成的任务很简单,就单纯是建立与目标主机的连接(TCP),将数据封装成UDP或TCP帧,随后发送,就可以完成通信,其余完全是应用程序想干嘛干嘛。常见的应用层协议有FTP、TFTP、HTTP(用于万维网服务)、DHCP(自动配置IP,即插即用网络服务)等等等等。