1、局域网(LAN)
局域网全称:Local Area Network;
局域网组建网络的方式有很多种,例如以下就是其中三种:
2、广域网(WAN)
广域网全称:Wide Area Network;
通过路由器将多个局域网连接起来,就形成了广域网,广域网内部的局域网都属于其子网。
3、网络通信基础
1、IP地址
IP地址用于定位主机的网络地址,就像发快递一样,IP地址就相当于收货地址;
IP地址的格式:
32位的二进制数,通常被分割为4个“8位二进制数”,也就是4个字节;
但是我们通常用“点分十进制”的方式来表示:例如:01100100 00000100 00000101 00000110我们通常用 100.4.5.6(都是0~255之间的十进制数)来表示
注意:当数据传输到主机后,需要主机中的那个进程来接收也是一个问题,此时就需要端口号来标识。
2、端口号
端口号定位主机的进程,就想发快递一样,不只需要收货地址(IP),还需要指定收货人(端口号)。
在网络通信中,进程可以绑定一个端口号来发送、接收网络数据;
注意:
1、两个不同的进程不能使用相同的端口号,但是一个进程可以使用多个端口号!
但是问题来了:网络数据全都是以二进制01传送,我们要怎么告诉对方发送的数据内容呢?看下面
3、认识协议
协议:即网络协议;网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流,通常协议是有三个要素组成:
1、语法:即数据与控制信息的结构或格式;(类似于打电话时双方使用相同的语言)
2、语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;(类似于对话时双方都明白对方说话的意思,互相有回应)
3、时序:即事件实现顺序的详细说明;(例如通话时,由谁发起通话,由谁结束通话)
协议最终体现为在网络上传输的数据包的格式
为什么需要协议?
计算机之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。
计算机生产厂商有很多;计算机操作系统,也有很多;计算机网络硬件设备,还是有很多;如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是 网络协议
4、协议分层
对于网络协议来说,往往分成几层进行定义
分层的作用:
1、降低了学习和维护成本(封装)
2、灵活针对这里的某一层协议进行替换
1、网络模型
目前有两种协议分层:1、OSI七层网络模型 (实际上是没有的) 2、TCP/IP五层(四层)网络模型(实际情况使用的)
因为OSI七层网络模型复杂且不适用,所以我们实际生活中并不适用七层网络模型;实际上都是以TCP/IP五层(四层)模型实现的。
在网络分层这里,下层协议为上层协议提供服务,上层协议要调用下层协议
1、物理层:网络通信中基础硬件设备是啥样的;例如通信时用的网线、网口,因此我们使用的网线、网口都是相同规格的
2、数据链路层:两个相邻接点之间的传输方式;(例如,我从北京到徐州,是坐高铁,还是坐火车,还是坐飞机,具体的交通方式就是有数据链路层决定的)
3、网络层:主要负责路径的规划;
此时我们选择哪条线路(1或2或3)就会有网络层决定的
4:传输层:我从徐州去深圳,并不关心我是乘什么交通工具去的,也不关心我是从哪里中转的,只要能到深圳就可以,我只关心起点和终点;这个过程就是传输层做的工作
5、应用层:应用程序,描述了传输数据,用户要如何使用类似于说明书,但是如何使用还是要看用户自己
以上五层协议各司其职;
问题:TCP/IP五层协议和四层协议有什么区别?
五层协议算上了物理层,四层协议没有算上物理层
2、网络数据传输的基本流程
例子:A在qq上给B发送hello;
1、发送方(A):用户在输入框输入hello,并按回车键
2、应用层:将hello这个字符串构造成下图的一个应用层数据报(本质上是一个遵守了约定格式的字符串)
接着程序会调用操作系统的api,把这个应用层数据交给传输层
3、传输层:(进入系统内核了)
在传输层中,会把上层应用层数据,构造成传输层数据报
传输层使用协议,最出名的就是UDP和TCP,此处使用的就是UDP,就需要构造出UDP数据报(如下图所示)(在应用层数据报的基础上加上了UDP报头)
UDP报头(相当于一个字符串)包含了两个重要信息:源端口和目的端口;
接着传输层就把这个UDP数据报嫁给了网络层
4、网络层:最知名的协议就是IP协议,IP协议就是要基于上述的UDP数据报,打包成一个IP数据报(如下图所示)
IP报头(相当于一个字符串)包含了两个非常重要的信息:源IP和目的IP;
5、数据链路层 最知名的协议是以太网协议,基于上述的IP数据报打包成一个以太网数据帧(如下图所示)
接下来,这个数据会继续往下传输,交给物理层
5、物理层:把上述的二进制数据(01010101010100000…)转换成电信号或者光信号然后发送,此时数据才算是真正意义上发送出去了
上述过程,从应用层到物理层,层层加码,这个过程称为“封装”
接收方(B)
1、物理层
网卡接收到的是电信号或者光信号,是在物理层,把这个光电信号转换为二进制数据;转换完的这个数据就是以太网数据帧
接着把该数据传输给数据链路层
2、数据链路层
接收到的数据是这样的(如下图所示)
数据链路层会去掉帧头帧尾,取出中间的载荷,然后将载荷(IP数据报)(如下图所示)交给上层的网络层
帧头里会记录这个载荷是不是IP数据报
3、网络层
传输过来的IP数据报在网络层中,IP协议会针对这个IP数据报进行解析,解析出IP报头,取出IP数据报的载荷,然后将传输层数据报(如下图所示)交给上层传输层
IP报头里会记录载荷是UDP还是TCP
4、应用层:qq程序
qq程序会针对应用协议进行解析,显示到应用界面上(如下图所示)
上述,从下到上层层解析,这个过程叫“分用”
封装:即“包装快递”
分用:即“拆快递”