爬虫|网络类型和分层协议
日拱一卒|数据挖掘002
一、网络类型
网络就像一市集,有各种各样的摊位,有摆摊的计算机大叔,练摊的手机小哥等等。网络就是将计算机和计算机互相连起来,互相连通之后,就可以实现信息共享,这就是我们说的“网络”。
网络可以分为局域网LAN和广域网WAN比如家里的电脑用网线或者WiFi连在一个路由器上就是局域网的应用。将这些局域网连起来就是广域网。
因特网就是个大大大大大广域网,覆盖全球,可以做到国际互联,有时候也被称为互联网Internet。
有了互联网Internet之后,我们可以刷剧,逛淘宝,聊天等等,但是带给我们如此享受的不是互联网,而是基于互联网提供的一种信息服务——万维网World Wide Web。
万维网有以下四个特点:
- 构建在互联网之上;
- 不管是文档,还是视频、音频,所有的资源用URI来标示;
- 提供一种超文本标记语言HTML来编写网页;
- 计算机间数据传输采用HTTP超文本协议;
二、分层协议
计算机之间的网络对话是分层实施的,每一层都会对应不同的网络协议。国际标准化组织ISO为了把这些不同的网络协议统一起来,提出了一个七层的开放系统互联参考模型OSI。这个体系很复杂,因此并没有谁去遵循它。
真实的网络分层协议是四层,分别是链路层、网络层、运输层和应用层,如果把网线一类的硬件归进来,就再加上一层物理层。
1.物理层
网络传输的一切硬件
物理层是指硬件层,泛指网络传输的一切硬件,比如网线、路由等等。物理层传输的是电信号,简单理解为0和1即可;
2.链路层
MAC地址
单纯的0和1是没有意义的。因此需要把0和1变成有意义的数据包传给对方。
**从链路层开始,我们可以以寄信的方式来比喻计算机在网络中间的通讯, 发送数据的每一层都会提供一个信封(按照某种协议) 把数据包起来,而相应的接收数据的每一层都会正确地把这个信封打开。 **
在链路层中以太网协议就是一种典型且占据主导的协议。寄信最重要的就是要填邮寄人和寄信人的地址,而在链路层对应每个计算机或者更准确地说是每个网卡都有一个世界上独一无二的 MAC 地址。
传统的寄信我们是通过邮递员,以太网用了一种最简单也是最原始的方法,就是广播。比如 1 号计算机向 2 号计算机发送数据,它会向这个网络里面的所有计算机发送一封信(Frame,帧),这封信由信封(head)和信(data)组成,信封上包括了寄信人(2 号计算机 MAC 地址) 和寄信人(1 号计算机 MAC 地址) 的地址等信息。
在该网络里的所有计算机都会收到这封信,并与自己的 MAC 地址相比较,如果一致则接收这封信,如果不一致则拒绝。
3.网络层
解决了计算机之间相连
在以太网里我们通过MAC地址来唯一表示一个计算机,这个MAC地址总共由12个十六进制位数来表示,比如01-00-5C-08-A8-30,前六位代表的是厂商,后六位是厂商为自己网卡设定的唯一表示。
如果在局域网里,以太网的这种广播方式是可行的,但是如果
在多个网络里, 比如北京的一台机器要给纽约的一台机器发数据, 采用这种广播方式,将会是一种灾难。 MAC 地址是只
与厂商有关系的,通过 MAC 地址并不能知道纽约的那一台机器在哪个网络里。
因此我们需要重新定义一种地址,通过该地址能够迅速定位到机器属于哪一个子网络,然后再结合 MAC 地址,知道**计算机所在的位置。 ** 这一套地址系统,我们就称之为网址,也就是大家所熟知的 IP 地址了。
即在网络层,我们把这封信又嵌套了一下加上了 IP 协议的相关信息。
![](https://img.haomeiwen.com/i11013023/adb742ca2119fbbb.png)
4.传输层
实现了应用程序之间的相连
IP 地址已经可以让两台主机相互连接, 但是一个机器上是会有很多程序需要用到网络的,比如上网的时候,可以用迅雷下载,还可以登录QQ聊天,登录浏览器发邮件等等。此时就是传输层提供的是两台主机上应用程序提供的端到端的通信。
IP 地址配合 MAC 地址已经使得在互联网上的任意两台机器能够建立联系,但是应用程序之间的联系,还需要加上一个端口port地址。
所谓端口,即网卡给微信客户端、迅雷下载等各种应用程序提供了一个编号,有些端口非常随机的,某些应用需要用到网络的时候,就随机分配一个。而有些端口是非常固定的分配,比如 80 端口就是默认浏览网页的端口号。
最直接的想法就是在 IP 数据包里面再加上相应的端口信息,这种协议我们称之为 UDP 协议。但是这种协议存在一种潜在的风险,即有可能这个数据包最后在网络中“走丢了”无法到达指定的主机。
更稳定但需要付出“成本”的是 TCP 协议。它的原理简单理解就是数据要是到了指定的主机,就必须给个回执,如果收不到回执,默认认为没收到该数据, 从而重发该数据,直到收到对方的回执为止。
5.应用层
到了应用层,则主要是规定不同应用程序的数据格式,比如网页要求用 HTML 的方式来书写和传输,传输该网页的则正是 HTTP 协议,还有如 FTP 协议等,这些了构成了应用层。
![](https://img.haomeiwen.com/i11013023/857a75e139477828.png)
推荐阮一峰老师的文章:
互联网协议入门(一)
参考资料:
爬虫基础知识之你未必清楚的网络和分层协议模型
感谢geodatamining这篇科普文,梳理了一遍收获多多。作者有个知识星球“互联网地理数据挖掘”,推荐呢~