网络原理:
(1)概念
网络原理涉及到计算机网络的基本组成、工作原理、以及网络通信的基础知识。而计算机网络是由节点 、链路 和协议三个重要元素组成的系统,通过通信线路连接多个计算机及其外部设备,实现资源的共享和信息的传递。网络通信的本质是网络数据传输,计算机之间通过网络来传输数据。
(2)局域网(LAN)
局域网也称为内网,是局部组建的一种私有网络。在局域网内的主机之间可以很方便的进行网络通信。
局域网有很多种组网方式:
1.基于网线直连
2.基于集线器组建
3.基于交换机组建
4.基于交换机和路由器组建
(3)广域网(WAN)
广域网通俗来讲就是通过路由器把很多个局域网连接起来,在物理上组成一个范围很大的网络。如全世界最大的广域网就是"因特网"。
如果属于全球化的公共型广域网,我们也可称为互联网(公网,外网)
(4)路由器和交换机
1.路由器
路由器是工作在网络层 (协议分层)的一个硬件设备,通常有多个LAN 接口(LAN接口来连接本地设备)和一个WAN接口(WAN接口来连接外部网络)
路由器的作用在于可以为连接统同一个网络的不同设备分配不同的IP地址,确保设备之间的通信。也可以连接俩个或多个网络的硬件设备,实现不同网络之间的互连和通信等。
2.交换机
交换机是工作在数据链路层(协议分层),交换机可以理解为路由器的扩充接口,由于路由器的接口有限,需要交换机来进行扩充。路由器可接多个交换机。
IP地址
IP地址是指在互联网上给每个网络每台主机分配的逻辑地址,用于标识和区分不同的网络设备和主机。
每个IP地址由俩部分组成:网络id和主机id,网络id是标识在同一物理网络上的所有设备,而主机id是标识在该网络上的每一台设备。
IP地址是一个32位的二进制数,通常被分为4组,每组8位,用点号分隔,如:01100100.00000100.00000101.00000110二进制形式
通常用"点分十进制"的方法来表示,如回送地址(用于本机网络测试和内部通信):172.0.0.1
以**a.b.c.d(abcd的取值为0~255之间的十进制整数)**的形式
端口号
IP地址是用于标识主机网络地址,而端口号用于定位主机中的进程(标识主机中发生数据、接收数据的进程)
一个主机上可能有多个程序同时使用网络,而端口号就是用来区分主机上的多个应用程序的。
端口号是0~65535范围的数组,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
协议
由于网络通信是基于二进制01数据来传输,网络通信传输的数据类型可能也五花八门,如图片,视频,文本等,为了解决以上问题,我们需要使用协议。
网络协议,就是双方用于发送/接收数据格式的约定。是计算机网络中进行数据交换所遵循的规则、标准、约定的集合。
计算机之间的传输媒介是光信号和电信号,通过频率和强弱来表示0,1这样的信息,要想传递不同信息,就需要双方约定好双方的数据格式,协议最终也体现在网络上传输的数据包的格式。
进行一次网络通信,涉及到一个重要的概念,就是五元组 :
五元组:
在TCP/IP协议中,用五元组来标识一个网络通信:
1.源IP:标识源主机
2.源端口号:标识源主机中该次通信发送数据的进程
3.目的IP:标识目的主机
4.目的端口号:标识目的主机中该次通信接收数据的进程
5.协议号:标识发送进程和接收进程双方约定的数据格式
也类似于发快递:
由寄件人地址和寄件人(源IP源端口) 使用顺丰快递(协议)发送给接收方收件地址和收件人(目的IP目的端口)
协议分层
由于网络通信十分复杂,要是指望靠一个协议规定好网络通信方方面面的问题,那这个协议必将错乱复杂。所以我们可以把一个大的协议拆分成若干个功能单一的协议,再将这些若干个小协议分类,内聚起来。我们可以使用层次结构来解决这个问题。
网络协议通常被分为几个层次,每层完成特定的功能。并且规定只有****相邻的俩层之间才能进行交互
上层协议可以调用下层协议,下层协议可以给上层协议提供帮助(协议之间的交互不能跨层进行)
如图所示,通过分层可以进行较好的封装和解耦:
只有处在同一层的双方才能进行交互,下层给上层提供服务,下层可直接调用下层
上层不需要关心下层的结构细节如何,只需会如何使用即可(封装)
任意层的替换都不影响其他层的工作(解耦)
OSI七层模型:
如图所示,这就是OSI七层模型的各层功能及其协议的表示。
由于体系太复杂,对于我们真实的网络环境来说使用TCP/IP五层(四层)协议
TCP/IP五层(四层)模型:
如图所示,这就是五层协议,至于四层协议,就相当于把物理层和数据链路层看成一个整体,合并称为网络接口层,包含设备驱动程序(硬件)和网络接口(网卡)
我们上述提到的路由器和交换机的工作和主机工作有和不同呢?
封装
这里的封装是指将数据包封装成特定的格式的过程,以便在网络中传输。这些数据从最上层依次往下封装,每层都有每层的封装。通过封装添加了一些必要信息(如报头),报头中含有源地址,目的地址、协议类型等。
使得这些数据包在网络环境中能够正确路由和传输。
分用
而分用就是和封装反着来了,从发送方发送的数据由物理层的光电信号传输到接收方的物理层还原成二进制数据,然后将二进制数据交给上层数据链路层,解析报头的相关协议,取出载荷,然后再依次往上层传递,上层再解析,再取出载荷传递,直到到达应用层将真实的数据发给接收方。
客户端和服务器
两台主机之间的网络通信流程
接下来粗略的介绍一下网络通信的基本流程:
假设我们现在小帅需要发送微信给小美,发送内容是"可以约你一起吃饭嘛?"。在不同的主机上,一台是负责发送数据,一台用来接收数据。从小帅发送信息到小美接收信息,中间需要经历怎样的过程呢?
向下封装
1.应用层
假设应用层读取了用户输入的数据,然后使用这样的协议格式:
这些数据会被转化成字符串拼接起来,然后在应用层被转变层机器所认识的二进制形式
应用层会调用下一层(传输层)提供的接口(api),然后把数据包传给传输层
2.传输层
传输层拿到数据后再构建一个传输层数据包 ,传输层遵守TCP/UDP协议
然后传输层再继续调用下层(网络层)的api,把数据包传输下去
3.网络层
网络层主要使用IP协议 ,再构建一个网络层数据包,对传输层提供的数据进行封装,拼上报头
然后接着调用数据链路层的api,把数据包传下去
4.数据链路层
数据链路层核心协议是"以太网",以太网也是一种局域网,广泛应用于数据传输,网络连接等网络通信功能。
以太网这个协议也会对网络层传递过来的IP数据包进行加工封装,构建一个以太网数据帧
最后以太网会把数据发给硬件设备(网卡)
网卡把这些二进制数据最终通过光/电/电磁波信号传播出去了。
整体封装结构:
向上分用
小美的主机接收到小帅发送过来的信号后,从网卡逐层进行分析:
1.网卡
网卡接收到了对方传递过来的信号,还原成二进制数据01
物理层的信号和数据链路层息息相关
最后网卡把二进制数据发送给上层数据链路层
2.数据链路层
3.网络层
4.传输层
5.应用层
整体分用结构:
此篇文章只是粗略的展示了基本的网络通信过程,真实情况会更加复杂。仅供参考...