前言
从去年入职新公司后,博客基本停更了,开始一段时间确实忙,工作主要是做网络爬虫,所谓的爬虫,就是模拟请求获取数据,有些简单的可以直接获取数据或者解析html页面获取数据,有些需要登陆或者验证码,还有反爬验证ip、请求的频率等等。由于公司需要,博主不再负责爬虫相关工作,转向python和golang的开发,因此想总结下爬虫的相关经验(有时间会写些案例),先介绍下计算机网络,帮助新手预习,老手复习。
1、什么是计算机网络
什么是计算机网络?这个问题你是否想过。你发送一个消息,在远在的朋友就能收到你的消息,是不是很神奇,这中间是如何实现的呢?
计算机网络简单的理解就是能够使计算机互联的网络,它的核心是一系列的网络通信协议,网络通信协议就是网络中(包括互联网)传递、管理信息的一些规范,理解了这些协议,就理解了计算机网络。
2、网络通信协议
在网络通信协议标准化之前,一帮牛人对网络体系结构相关的问题进行了充分的探讨,最终提出了作为通信协议设计指标的 OSI 参考模型(图片来自百度百科)
稍微扫一眼图片,每一层叫什么名字不需要特别的记忆,只要知道越靠近下面越接近硬件,越靠近上面越接近用户就行,我们从右边的接收过程开始,自下而上的了解每一层的功能。
2.1、物理层
大家回忆下,我们在家里使用电脑需要先办理一个宽带,在外面手机上网需要有3G/4G/5G移动信号,这些宽带(连接着光缆、电缆)、移动信号(本质是无线电波)将电脑连接起来,组成了一个庞大的计算机网络,这就是物理层。物理层主要规定了网络的一些电气特性,作用是负责传送0和1的电信号(0表示低电平,1表示高电平)。
2.2、数据链路层
2.2.1、作用
数据链接层的功能,就是在"物理层"的上方,确定了0和1的分组方式。
2.2.2、以太网协议
现在的互联网主要使用的是“以太网”协议,一组电信号就是一个数据包,分成两个部分:标头(Head)和数据(Data)。"标头"包含数据包的一些说明项(发送者、接收者等等),"数据"则是数据包的具体内容。"标头"的长度固定为18字节,"数据"的长度最长为1500字节,如果数据很长,就必须分割成多个数据包进行发送。
2.2.3、MAC地址
连接网络的所有设备都有网卡,数据的传输是从一块网卡传送到另外一块网卡,而网卡的地址(也叫MAC地址)就是发送者、接收者的地址,每块网卡出厂的时候都有独一无二的MAC地址。
2.2.4、发送方式
在子网络中采用广播的方式,向所有的计算机发送消息,子网络计算机通过判断接收者的MAC地址与自己的MAC地址是否相同来决定接收或者丢弃。
2.3、网络层
2.3.1、作用
通过数据链路层,我们知道了MAC地址只能在子网络中广播消息,因此,网络层引进了新的一套地址,区分不同的计算机是否属于同一个子网络,这套地址称为网络地址。
2.3.2、IP协议
规定网络地址的协议,叫做IP协议,IP协议定义的地址是IP地址。IP地址分为网络和主机两部分,前一段代表网络,后一段代表主机,子网络中网络部分是相同的。单从IP地址我们无法判断到底是前几位代表网络,因此需要一个“子网掩码”,通过IP地址和子网掩码&运算,如果两个计算机地址计算的结果相同就表示处于同一个子网络中。
2.3.3、IP数据包
以太网协议中数据包的格式是"标头"和"数据"两个部分,IP数据包也分为"标头"和"数据"两个部分,IP数据包的"标头"包含了IP协议的版本、地址等信息,IP数据包放入以太网协议数据包的Data中,就变成了上图的样子了。
2.3.4、发送方式
IP数据包的发送方式分为两种情况:
- 如果两台主机不在同一个子网络,只能把数据包传送到两个子网络连接处的"网关",让网关去处理。
- 如果两台主机在同一个子网络,就可以用ARP协议,得到对方的MAC地址,然后完成数据包的发送。
2.4、传输层
有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。我们还需要一个端口,表示这个数据包到底供哪个程序(进程)使用。
2.4.1、作用
"传输层"的作用就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。
2.4.2、TCP/UDP协议
同上面的网络层一样,加入了端口,就要提供新的协议,TCP是可靠的传输层协议,UDP是不可靠的传输层协议,TCP/UDP数据包,也是由"标头"和"数据"两部分组成,“标头”定义了发出端口和接收端口,放到了网络层的Data中,整个以太网数据包变成上图的样子了。
2.5、会话层
“会话层”主要作用是用来管理网络设备的会话连接,建立、维护、终止会话。 建立会话:在建立会话的过程中主要会有身份验证,权限鉴定等环节; 保持会话:维护会话一定的时长,期间不需要再次建立会话; 断开会话:会话超时、意外情况下,OSI会话层才会释放这条会话。
2.6、表示层
“表示层”基本作用就是对数据格式进行编译,加解密处理。 表示层接收的数据是二进制形式的,必须通过数据处理才能转换为图片、文字、视频等格式。
2.6、应用层
"应用层"的作用,就是规定应用程序的数据格式,提供应用程序间的服务。应用层的协议非常的多,现在的网络工具,大多是基于这些程序所开发。
结束语
本文对计算机网络自下而上进行了一个简单的介绍,详细过程需要大家自己去看计算机网络的书籍。 写的比较花时间,如果有任何不正确的,欢迎评论区留言指正,对你有帮助的,请点个赞再走,谢谢大家!
|