--- 网络基础 ---
我们每天都在上网,通过网络来获取各种各样的信息,那么我们为什么能通过网络来进行通讯的呢?
就比如我点开了csdn来写下这篇文章,其实就是在向csdn发起了一个请求,这个请求表示的是我要写一篇博客,然后这个请求通过了网络机传到了csdn的服务器,csdn的服务器在返回一个对应的响应,通过网络被我们的设备接收到,这样就可以知道,网络把我的设备和csdn的服务器建立起了一个链接,所以网络在我们的生活中其实是起到了一个连接设备的作用
对于服务器就可以把他理解为一个接收处理并返回响应的一台电脑,每当我们在通过网络进行一些操作其实都是在和服务器在进行交流
也可以类比于快递,服务器就是商家,当我们买了一支笔,这时的笔就是请求,而商家就是服务器,他将一支笔包装好,然后交给快递公司让他们把笔送到送到你手里,这和网络通讯特别像,网络在我们交流中扮演的角色就是快递公司,他负责将数据送到指定的地点去
局域网
在一定的范围内将一定数量的设备联系在一起, 这些设备就够成了局域网,比如我把我舍友的电脑通过网线联系在了一起,这就构成了一个局域网,只不过这个局域网和我们平时使用网络的不是同一个,并不能通过这个局域网来聊微信啥的,因为这个局域网并不能连到微信的服务器,但是可以让我们使用自己写的程序来让这几台设备进行数据的交流,需要设置一下设备的静态地址使他们能够知道对方的存在并且能够通过这网线来找到对方
广域网
将许多个局域网连接在一起,在物理层面上构成了一个很大的网络,在他内部的局域网称为其子网,就是广域网,我们平常在使用的就是广域网
局域网和广域网的定义是相对的概念,从不同的角度看可以称其为局域网或者是广域网,但是他们的实际作用并没与什么区别
通讯基础
ip地址
用来唯一表示一台上网设备的真实地址,在一个局域网中每台主机对应的ip都是不一样的,ip地址就像是我们的快递地址
端口号
用来标识一个应用程序或者是进程的数字表示符,用来定位进程在cpu上运行的位置,这样就能知道数据包对应的是哪个进程的,确保了传输的准确,端口号就是我自己
在快递通过了我们填的快递地址(ip地址)送到了对应的驿站(这是操作系统自己完成的) ,然后我们自己(端口号)去取,这是就收到了快递了
协议
俩个设备之间的交流,肯定需要一个约定来确定数据的传输格式,这样才能在收到了对方的数据之后才能正常的使用,而这个约定就称为协议
举个具体例子 一个中国人和一个葡萄牙人打电话交流,发现一个说中文一个说葡萄牙语,听不懂,那这是就有一个人说 can you speak english 然后另一个说 yes ,这时他们就可以用英语来正常交流了,这里英语就是一种协议,是一种提前约定好的标准,然后让大家都来遵守,协议的编写也是写代码,不要想成我们平常看到的文本文件
五元组
在TCP/IP协议中,用五元组来标识一次网络通信:
源IP:发送方的IP地址
源端口号:发送方的端口号
目的IP:接收方的IP地址
目的端口号:接收端的端口号
协议号:发送的数据遵守的数据格式
协议分层
在网络通信中将协议分层,好处是每一层都有对应的协议来完成对应的工作,上层协议来调用下层协议完成对应的工作,将协议分层的话类似面向接口编程,在协议具体的实现时只需要向外面提供一个使用的接口而不需要展示具体的实现细节,调用方也只需要使用他的接口,而不需要管他是怎么实现的,很方便,也会方便维护
TCP/IP 五层协议
应用层:我们平时使用的程序就是工作在引用层的,他将我们发送的请求向下层传递发送出去
传输层:接收应用层的数据并将数据封装成段,起的作用是确保目的主机和源主机之间的联系,确保俩主机之间数据能以正确的顺序到达对方,控制数据发送的流量,确保数据的完整性,TCP/UDP协议就在这一层
网络层:接收到传输层的数据段并封装成包,通过IP映射mac地址(实际的地址)来决定这个数据包的下一个节点是要走哪条路来到达对方(路由),路由器就工作在网络层
数据链路层:接收到网络层的数据包并封装成帧,决定的是俩个节点之间的联系,添加上源mac地址和目的mac地址,这个mac地址是下一个节点的地址,而不是目的地的地址
物理层:规定了硬件的要求,将数据链路层的数据帧解析并通过对应的发送设备实际的发送出去,这时数据才真正的发送了出去
当数据到达一个节点后,会被该节点(可能是路由器,也可能是交换机什么的)解析到网络层,找到目的节点的位置,让后通过自己的算法和路由表来决定下一个节点是谁,然后传到数据链路层加上下一个节点的mac地址,最后给到物理层传输出去,这样就从一个节点传输出去了
网络设备所在的层次
主机,他的操作系统内核实现了从传输层到物理层的内容,也就是五层协议的下四层
路由器,实现了从网络层到物理层下三层的内容
交换机,实现了数据链路层和物理层这俩层的内容,有一些交换机还实现了网络层的内容
封装和分用
传输层接收到应用层的数据包分装为段,网络层接收到传输层的数据段封装为报,数据链路层接收到传输层的数据报封装为帧,每次封装时会在原来数据包头部加上一段数据首部,包含了首部有都多长,有效载荷是多少,上层的协议是什么等信息,这就是数据的封装
对数据的分用就是在经过每层协议是剥掉对应的首部数据,将剩下的数据交给对应的上层协议去处理
END --...