自学内容网 自学内容网

【网络编程】初识网络



前言

学习网络的相关知识是为了后续做到主机之间通信等操作,为打造一个网站、编写一个程序所必须打下的基础。


一、网络的组成

IP地址和端口号的区别
IP地址是网络上的设备进行标识,通过IP地址能够查找到对应的设备并进行进一步的通信。
端口号是每台主机中对应不同应用程序所做的一个标识。在每个程序启动的时候,都需要绑定一个与其他进程不相同的端口号。
主机之间通过IP地址进行区分,因此IP地址不会相同;端口号是每天主机各自使用,因此端口号可以相同。

二、协议

协议是在通信过程中,所制定的一套方案。协议的种类有许多,同样,对于协议而言所需要注意的细节有许多,如果使用一个协议来约定所有的内容,那么这个协议将会非常庞大且复杂。
为此,程序猿们通过拆分的方法将一个功能复杂的协议进行了分类/分层操作,减轻了协议管理的压力。

协议分层

协议分层,顾名思义是将很多协议,根据功能不同分成不同层级,每个层级都有各自的任务,上层协议调用下层协议的功能,下层协议服务于上层协议。层与层之间不能够越级调用。

  1. 对协议进行分层之后,能够达到封装的效果。即协议的层与层不需要知道彼此之间的细节,降低了学习使用成本。
  2. 任意层次的协议都可以灵活进行替换,达到解耦合的效果。

协议分层经典模型(TCP/IP模型)

TCP/IP模型是在现实世界中,是接触的最多的网络分层模型。它主要分为五层

  1. 物理层:是硬件层面上的约定,其中包括网线、网口等标准的制定。
  2. 数据链路层:关注的是通信过程中,两个相邻节点之间的通信。
  3. 网络层:关注通信路径的规划,通过网络层的规划,可以决定数据要通过哪些节点进行传输,称之为“点到点的传输”。
  4. 传输层:关注的是通信双方的起点和终点。即”端到端传输“
  5. 应用层:和主机中的应用程序直接相关,通过应用层发起请求或接收数据。

网络传输的过程模拟

假设用户A发送一段文字信息“hello”通过QQ给用户B,在A点击发送之后,QQ就要负责实现通信的逻辑。
将结构化的数据转化为字符串/二进制字符串,成为序列化操作;将字符串/二进制字符串转化为结构化数据,成为反序列化操作。

  1. 首先,QQ将要传递的信息组织成”应用层数据包“
  2. 第二,将应用层数据包交给传输层,传输层进一步对数据进行分装,构造成“传输层数据包”
  3. 第三,通过网络层的IP协议,获取数据中发送人和接收人的IP地址,为数据包添加一个IP报头,构成“IP数据包”
  4. 第四,进入数据链路层之后,为IP数据包添加“帧”,这样一来数据包就完整封装好了。
  5. 第五,进入物理层,硬件设备将上述二进制数据转成光信号/电信号/电磁波信号发射出去。
  6. 第六,当数据传送到接收方的物理层之后,所进行的操作就是以上五个操作的逆操作。即在数据链路层中对数据进行解析,拆除帧;在网络层中,对IP报头解析提取出关键信息,取出载荷信息;在传输层中,对数据包根据不同的格式进行数据解析,再把信息提交给对应的应用程序;在应用层中QQ根据自己的协议格式将数据转成结构化数据供用户查看。

总结

在本文中,简单介绍了网络的组成和网络协议模型。


原文地址:https://blog.csdn.net/Starc_/article/details/140648748

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!