- 博主简介:想进大厂的打工人
- 博主主页:@xyk:
- 所属专栏: JavaEE初阶
互联网是怎么来的?很多先进技术,都是先军用,用了之后太香了才逐渐民用~~
互联网也是如此,互联网之前,可以通过有线/无线,发电报~~缺点非常明显,通信链路容易被打击~~于是美国人开始研究,有没有办法,能够搞出一种通信手段,万一真的收到核打击了,通信链路仍然正常,因此可以发出指令,进行核反击,那么需要多搞几条链路
当这里的链路足够复杂的时候,意味着即使整个路径上,有一部分被摧毁了,仍然有很大可能找到一条能通过去的路~~
那么互联网也是如此,从最开始的局域互联网,到现在的广域网,广域网可以跨区域进行网络通信, 把很多的局域网连接起来,使用更多的路由器,交换机!!
单机阶段 => 局域网阶段 => 广域网阶段 => 移动互联网阶段
那么互联网中有哪些概念呢?请看下文~~
目录
文章目录
一、网络互连
1.1 局域网LAN(小范围)
1.2 广域网WAN
1.3 之后又进入了移动互联网阶段,无线联网~
二、网络通信基础
2.1 IP地址
2.2 端口号
2.3 协议
2.4 知名协议的默认端口
三、协议分层
3.1 什么是协议分层
3.2 分层的作用
四、真正的网络协议
4.1 OSI七层模型
4.2 TCP/IP五层网络模型
4.2.1 应用层
4.2.2 传输层
4.2.3 网络层
4.2.4 数据链路层
4.2.5 物理层
4.2.6 网络设备所在分层
五、封装&分用
5.1 封装
5.2 分用
一、网络互连
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。
网络互连:将多台计算机连接在一起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。
1.1 局域网LAN(小范围)
一栋楼 或 大学校园中有限的, 狭小的, 区域内网络.
局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的一种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。
基于网线直连
把两个电脑,通过一个网线直连,构成局域网~~(局域网联机)
以机房为例,多个机器之间可以进行联机,这就相当于一个局域网
基于交换机也能进行联机,这也是局域网
- 电脑越多,用网线直连就越复杂~
- 区别于集线器:集线器是将一条网线转变成多条网线
1.2 广域网WAN
当局域网足够大时,就成了广域网;即使两个玩家,天南海北,也可以随时PK
广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
网络的组建(通过一些交换机/路由器搭建一个网络环境),其实也是一个专业性很强的技能——网管(网络管理员),不是网吧管理员,而是网络管理员!
1.3 之后又进入了移动互联网阶段,无线联网~
智能手机的普及,尤其是小米和华为,从安卓赛道出发大大的降低了手机的价格成本~~(充话费送手机)
二、网络通信基础
网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。
2.1 IP地址
概念
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。
就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。
格式
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:192.168.0.136。
3个点,把整个IP分成4个部分,每个部分,1个字节
命令行输入ipconfig:
特殊IP
127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。
IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。
2.2 端口号
概念
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。
格式
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
注意事项
两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。
一个进程启动后,系统会随机分配一个端口(启动端口)
程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。
进程绑定一个端口号后,fork一个子进程,可以实现多个进程绑定一个端口号,但不同的进程不能绑定同一个端口号
2.3 协议
概念
协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
作用:
为什么需要协议?
计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。
简单的来说,协议 就是 计算机与计算机之间通过网络实现通信时事先达成的一种"约定".两台计算机之间必须能够支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信.
A和B语言不通,导致无法交流:协议不同
A和C用的都是中文,此时可以交流:协议相同
2.4 知名协议的默认端口
系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:
22端口:预留给SSH服务器绑定SSH协议
21端口:预留给FTP服务器绑定FTP协议
23端口:预留给Telnet服务器绑定Telnet协议
80端口:预留给HTTP服务器绑定HTTP协议
443端口:预留给HTTPS服务器绑定HTTPS协议餐厅的VIP包房是给会员使用,但会员也可以不坐包房,坐其他普通座位。
三、协议分层
对于网络协议来说,往往分成几个层次进行定义
3.1 什么是协议分层
协议分层类似于打电话时,定义不同的层次的协议:
在这个例子中,我们的协议只有两层;但是实际的网络通信会更加复杂,需要分更多的层次
3.2 分层的作用
一个协议太复杂了,就可以拆分成多个协议
协议是拆分出很多,存在有些小的协议,作用或者定位是类似的
就可以针对这些小协议,进行“分类”,同时针对这些不同的类别,进行分层~~
为什么需要网络协议的分层?
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。后续就可以比较容易的针对这里的某一层协议进行替换。
分层之后就可以做到,层次之间,耦合程度比较低
上层协议不必了解下层的细节,下层也不必了解上层的细节
方便的对某一层的协议进行替换
而分层,也需要约定层级与层级之间的调用关系
要求不能跨层级调用
要求上层协议调用下层协议,下层协议给上层提供支持
只有两个相邻的层级才能交互
四、真正的网络协议
4.1 OSI七层模型
OSI -> Open System Interrconnection 开放系统互连.
OSI 七层模型划分为以下七层:
OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
4.2 TCP/IP五层网络模型
当下最广泛使用的网络模型
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。(四层是因为没考虑物理层,软件方面看)
4.2.1 应用层
关注传输过来的数据,要做什么~~
4.2.2 传输层
不考虑中间路径,只关注起点和终点
我和淘宝卖家,都不关心中间是怎么传输的,只关心起点和终点~~
中间你怎么传输都无所谓,只要规定时间送到了就行了~~
4.2.3 网络层
主要负责两个遥远节点之间的路径规划
例如收货与发货之间有很多条路径可以走:
在众多路径中找一个合适的~~
上海 -> 北京 -> 西安
深圳 -> 杭州 -> 无锡 -> 北京
4.2.4 数据链路层
主要关注两个相邻节点之间的传输
上海 -> 南京 火车
南京 -> 北京 卡车
网络上的相邻节点,就是通过网线/光纤/无线直接连接的设备
4.2.5 物理层
网络通信的基础设施,网线,光纤,网络接口.....
网络上的高速公路
4.2.6 网络设备所在分层
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的 下四层;
对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的 下三层;
对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的 下两层;
对于集线器,它只实现了 物理层。
五、封装&分用
- 发送方发送数据,数据从上到下,依次交给对应的协议,进行封装加工
- 接收方接受数据,数据从下到上,依次交给对应的协议,进行分用解析
5.1 封装
以QQ发送消息为例子,解释一下封装分用的过程:
我是发送方,在编辑框输入一个消息发给滑稽老铁:在干嘛呢?
1.应用层到传输层:打包成应用层数据包发送
字符串拼接:
2. 传输层拿到上述数据:
应用层调用传输层(API):封装成传输层数据报
传输层有很多协议,最经典的是TCP和UDP
此处以UDP为例~~
UDP针对上述数据包再进行封装~~
3.传输层到网络层:
UDP数据报,已经有了,接下来就是把这个数据报交给网络层的协议
网络层最常见的协议,就是IP协议~~
上述UDP数据报,到达网络层,还需要进一步的封装,添加上IP协议报头
4. 网络层到数据链路层:
最经典的协议,叫做以太网(数据链路层+物理层)
mac地址,也叫做物理地址.
也是描述一个主机在网络上的位置.
它的功能和IP很相似的.但是当下就把这两个地址分别作用于不同的用途.
IP用来进行网络层的路径规划
mac用来进行描述数据链路层,两个即将进行传输的相邻节点~
mac和网卡绑定的,每个设备都会有一个自己唯一的mac地址
5.数据链路层到物理层
数据链路层就要把上述以太网数据帧交给物理层了.
物理层要把上述0101的二进制数据~~
转换成光信号/电信号/电磁波信号,进行传输了~~
5.2 分用
接受过程和上述过程,刚好相反
- 发送,从上到下,依次封装,新增报头
- 接受,从下到上,依次分用,去掉报头
1.物理层,网卡,收到高低电平二进制数据.
就会对这里的信号进行解析,还原成0101这样的二进制序列.
2.从物理层交给数据链路层.
此时就把上述0101这系列数据当做一个以太网数据帧.(此处是从以太网线。,收到的数据,就是要交给以太网协议来处理了
把帧头去掉,帧尾去掉,取出中间的载荷,再往上交给网络层.
以太网数据帧帧头中有一个消息类型根据这个类型就知道了网络层是ip协议了.
3. 网络层
此时就由网络层的IP协议进行解析数据报.也是去掉IP报头.同时会做一些工作.最重要的还是取出载荷,交给更上层的传输层协议.
ip 数据报,报头中也有一个字段,标识当前传输层用的是哪个协议.
4. 传输层
此处是由UDP来解析处理,还是去掉报头,取出载荷,把数据交给应用层.
借助端口号来区分具体的应用程序.
每个要接受网络数据的程序都需要关联上一个端口号.
5. 应用层
由qq这个程序,进行解析应用层数据报取出下列字段,放到程序的界面中.