目录:
一.网络发展史
1.独立模式
2.网络互联
局域网LAN
1基于网线直连
2基于集线器组建
3基于交换机组建
4基于交换机和路由器组建
广域网WAN
二.网络通信
1认识IP
2认识端口号
3认识协议
4协议分层
5协议图
6协议图讲解
7封装分用
8客户端和服务器
9两台主机的网络通信
10.拓展群聊的实现
大家好,今天为大家带来网络部分的相关知识,学完多线程,又来到了一个新的阶段,这部分的难度不比多线程低,可以说更加难,希望大家慢慢理解吧,我们一起加油!!!
既然要学网络,那就得先了解网络发展史
主要分为独立模式和网络互联
下面就来具体看一看
独立模式是指计算机之间相互独立
假如现在有三台电脑ABC,A电脑用来处理姓名,B用来处理身份证号,C用来处理家庭住址
现在一位滑稽老铁来办理业务,要输入姓名必须到A机,输入身份证号必须到B机,输入家庭地址必须到C机前
总的来说就是无法在一台机器上进行多个业务的实现
并且,如果此时来了其他的人,要等待滑稽老铁办理完以后,再办理,要一个一个来
经过时间的推移,到了网络互联模式
局域网,即 Local Area Network,简称LAN。Local 即标识了局域网是本地,局部组建的一种私有网络
局域网就是两台计算机通过一根网线连接,这两台电脑形成的网络叫做局域网,这个就是基于网线直连的局域网
后来,需要连接的电脑越来越多,就开始使用集线器,这个就是基于集线器组建的局域网
后来又用到交换机,就是基于交换机组建的局域网,最后是基于交换机和路由器的局域网
广域网
广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网
所以广域网就是很多个局域网组建起来
要进行网络通信,我们得需要从一台主机发送到另一台主机,那么我们怎么知道主机的位置呢,这时就需要IP了
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。
比如点外卖,填的外卖地址就是你的IP
输入cmd,打开命令行窗口,输入ipconfig,就可以查到自己电脑的IP了
10.128.116.35就是一个IP地址
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数),比如10.101.61.200还有一个很特别的IP地址,叫做环回IP,一般是127开头的,这里我们就记住127.0.0.1就好了
我们现在知道了目的主机的位置,但是一台电脑上有那么多进程,我们如何正确的发送呢?
这个时候就要用到端口了
端口就是用来区分进程的,比如主机A给主机B发了个QQ消息,不能跑到微信上面.那么就是通过端口来解决的
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据.
两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号.
有了IP,有了端口号,就可以通信了,但是通信内容也需要让双方都认识,那么就作出约定,规定发送数据的格式,这个约定就叫做协议
类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
上层协议调用下层协议,下层协议为上层协议提供服务,不能跨层调用
协议分层好处
拿吃饭来说
滑稽老铁可以用筷子吃面条,也可以用勺子吃米饭
这样并不冲突,替换起来也很灵活
那么协议分层有啥好处
1.分层之后做到层次之间耦合程度较低
2.方便对某一层协议进行替换
下面我们看来认识一下真实的网络协议
OSI七层网络模型(教科书上)
TCP/IP五层网络模型(使用最广泛)
我们重点介绍TCP/IP协议
分为五层
从上到到下依次为
应用层 关心的是传输过来的数据是干啥的
传输层 不考虑传输的中间路径,只关注起点和终点
网络层 主要负责两个遥远结点之间的路径规划
数据链路层 主要关注的是两个相邻结点的传输
物理层 网络通信的基础设施 例如网线,光纤,网络接口等
相当于网络上的高速公路
这样说比较抽象,我们来举一个具体的例子
滑稽老哥在淘宝,买了一双鞋
我不管咋传,我买那双鞋是来穿的,这就是应用层
我和卖家不关心咋传输,我只关心起点是啥,终点是啥,这就是传输层
收获地址是北京,发货地址是广州,从北京到广州有很多条路可以走,在很多路径中选择最好的,这就是网络层
从广州到北京的中途,有从广州到杭州,放到船里从杭州到西安,放到火车从西安到北京,放到火车上
这就是数据链路层,也就是网络上相邻结点,就是通过网线/光纤/无线直接连接的设备
除应用层以外的其他四层都是被操作系统内核封装好的,所以我们重点关注应用层,而传射层要被应用层调用,所以我们现在重点来讲解一下传输层
在协议分层下,数据是咋样传输的?
通过封装和分用完成的
发送方发送数据,要把数据从上到下,依次交给对应层次的协议进行封装
接收方收到数据,要把数据从下到上,依次交给对应层次的协议进行分用(解析)
这个过程比较抽象,我们可以理解为包装快递和拆快递
下面我们用发送qq消息为例
发送方:小魏
接收方:王一博
小魏在QQ聊天框输入:一博哥,注意身体
首先,应用层(qq) 拿到上述的数据,进行封装,封装成应用层数据包
这里注意封装的本质其实就是字符串的拼接
1封装成应用层数据包
注意,真实的应用层数据报非常复杂,我们这里只是举个例子
我们在"一博哥,注意身体"这句话前面拼接了发送方和接收方的QQ号,以及发送时间
2.传输层拿到上述数据
应用层要调用传输层的api来处理数据
传输层有很多协议,最典型的是TCP和UDP
这里我们先来说一说UDP的
UDP针对上述数据包再一次封装,就是在最前面加一个UDP数据报头,把上述数据当做UDP数据报的载荷
一个典型的数据报就是报头+载荷构成的
这里加的报头是为了再加一层标签,然后在标签上填写必要属性
3.网络层拿到上述数据
网络层最常见的协议是IP协议
将上述UDP数据包进一步封装,添加IP协议报头,整个UDP数据报作为IP数据报的载荷
源IP和目的IP就是描述了这次传输的起点和终点
4.网络层交给数据链路层
数据链路层最典型的协议就是以太网,以太网其实也包括在物理层内,单词书不做讨论
将上述数据报进行封装,加上以太网数据帧
这里解释一下啥叫mac地址
也叫做物理地址,和IP一样,也是描述一个主机在网络上的位置
它的功能和IP类似,但是这两个地址用于不同的用途
IP用来进行网络层的传输路径的规划
mac用来进行描述数据链路层,两个即将进行传输的相邻结点
一个网卡理论上只有一个mac地址
IP不是,我们后期再来讨论
5.数据链路层把上述以太网数据帧交给物理层
物理层把010101的二进制数据转换成电信号或者光信号,进行传输
刚刚讲的封装过程操作系统给我们封装好了
现在来说一说接收过程
接收过程和发送过程恰好相反
发送是从上到下,依次封装,新增报头
接收是从下到上,依次分用,去掉报头
忽略转发过程,只考虑发送和接收
1.物理层,网卡收到高低电平二进制数据
对电信号/光信号/电磁波进行解析,还原成010101的二进制数据
2.物理层到数据链路层
把上述的0101的数据当做以太网数据帧,这里是从以太网线收到的数据,自然要交给以太网协议处理
现在把帧头帧尾去掉,取出载荷,上交给网络层
帧头有一个消息类型,根据这个类型就知道网络层是IP协议了
3.网络层
现在将数据从数据链路层上传给网络层
此时由网络层的IP协议进行解析数据报,去掉IP报头
最重要的就是取出载荷,交给上层的传输层
IP数据报头也有一个字段标识出当前传输层用的是哪个协议
4.传输层
由UDP进行解析
去掉UDP报头,取出载荷交给应用层
5.应用层
由QQ这个程序,进行解析应用层数据报
取出下列字段,放到聊天界面
最后在王一博的qq界面上会显示
发送方,层层封装,就相当于包装快递
接收方,层层分用,相当于拆快递
刚才所有的讨论我们都忽略了转发过程
在真实的传输过程中,会有路由器和交换机进行转发
数据发出,从应用层封装到物理层,到达交换机,交换机会进行分用,从物理层分用到数据链路层,检查mac地址是否正确,然后再重新封装到物理层,将数据继续转发,注意,此时重新封装.源mac和目的mac就变了
继续传输,遇到路由器,从物理层分用到网络层,根据现在得到的源IP和目的IP进行下一阶段的寻路操作
(IP协议是一边传输,一边规划路径)
然后把数据报重新封装到物理层,再经过数据链路层的时候,源mac和目的mac也进行了更新
继续转发,最后到达接收方电脑
网络中每一次消息的传输都会涉及到封装分用
交换机,只需要封装分用到数据链路层,也就是更改源mac和目的mac
路由器,要封装分用到网络层,需要更改mac以及根据源IP 和目的IP进行下一段的路径规划
一般来说,交换机是二层转发,路由器是三层转发
但是在现实中,路由器和交换机界限越来越模糊
路由器可以通过设定,只进行二层转发
交换机也有高端的交换机进行三层转发,
甚至路由器和交换机还能封装分用到应用层,也就是在路由器或者交换机就捕获到消息了
拓展:群聊是咋实现的
群聊不是一个主机发给另一个主机,而是通过QQ服务器中转的
QQ服务器会根据群的编号,找到当前群里在线设备,遍历列表的在线设备,挨个发
这个功能是在应用层面实现,也就是通过代码实现的
今天的讲解到此结束,我们下期再见,886!!!