网络初识
局域网:把若干个电脑组成在一起,通过路由器进行组网。
广域网:把局域网进一步的连接,构成更复杂的网络体系。
IP地址:区分主机。
端口号:区分主机上不同的程序。
协议:是一种约定,通信双方,对于通信规则的约定,一定是通信双方都得认可。
协议分层
协议分层就是把很多的协议,按照功能分成不同的层级,每个层级都有对应的主线任务(目标要解决问题),上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。
那么协议分层有什么好处呢?
1)起到封装的效果,某一次的协议,不必知道其他协议的细节,降低学习使用成本。
2)任意层次的协议,都可以灵活的替换。
TCP / IP 五层或四层 模型
关于五层协议具体有哪五层:
1)物理层 :硬件层次上的相关约定。如:网线,网口.....
2)数据链路层:关注的是,两个相邻节点之间的通信。
3)网络层:关注的是通信中,通信路径的规划,数据要经过哪些节点,点到点的传输。
4)传输层:关注双方的 起点和终点。端到端的传输。
5)应用层:和具体的应用程序直接相关。传输的数据是干啥的,有什么意义?等。
上述是TCP的5层,如果是IP的4层,就少了一个物理层。
协议的层与层之间是如何配合工作的呢?
上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。
具体怎么实现:
1)封装。这里的封装和java面向对象的封装是不一样的。
2)分用。
这里我会举个例子来解释这两个。 A通过QQ发送hello给B。
1. A通过窗口输入hello,点击发送给B。QQ应用程序就要通过实现上述的逻辑,上述的逻辑都需要网络进行传输,QQ首先呢会把这些数据组成一个应用数据包,QQ里的应用层就会有一个协议,来约定数据的格式。
**2.**应用层数据包,已经有了QQ 程序, 就要调用系统的 api,,来进行传输。应用层接下来要把数据交给,传输层怎么交给传输层?
传输层 (操作系统内核) 提供了 api, 让应用程序去调用。
调用这样的 api,,就会把刚才的应用层数据交给传输层(进入到系统内核了)。
传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,构造成 传输层数据包。
如图:
3.到了网络层,最典型的协议就是IP协议,他会对UDP数据包进一步的封装成IP数据包,包含发送人的IP地址和收件人的IP地址。然后调用数据链路层的api,发送给数据链路层。
如图:
4.数据链路层,最典型的协议,以太网,通过以网线的传输,就叫做以太网协议。
以太网也有自己的数据格式,会对IP数据包进行封装。
如图:
5.物理层,硬件设备,对上述的二进制的数据,转换成 电信号或光信号等。
上述层层的包装数据,层层的对数据包增加包头的过程,称为封装。
B这边接受到数据,就是逆过程,进行分用,拆快递。