网络部分基础知识(一)

发布于:2024-08-12 ⋅ 阅读:(150) ⋅ 点赞:(0)

网络协议的意义

        单台主机内部的设备之间需要发送和接收消息,那么和相隔很远的两台主机之间发送消息有什么区别呢?两台主机通过网络发送消息,相当于两个网卡设备之间进行通信,最大的区别在于距离变长了。而距离变长带来的结果就是:

1. 会面临数据包丢包的问题

2. 需要解决目标主机的定位问题

3. 如何保证经过无数台设备转发,数据仍能准确被接收

        为了解决这些问题,就有了协议,协议本质上就是一种约定,两套主机约定好一定的数据格式,这样能保证不同厂商生产的计算机也能顺畅地通信,并且网络通信的分层协议各层能够处理丢包、定位的问题。网络协议的范围非常广泛,从硬件到软件,能保证不同的机器都能无障碍地接入互联网:厂商要想让机器接入互联网就要遵守协议。

网络的层状结构

        在网络通信的过程中,为了保证把数据可靠地从一台主机送到另一台主机,并且另一台主机能对数据作相应的处理,我们需要:

        1. 保证把数据交给下一跳主机

        2. 进行路径选择,定位目标主机

        3. 如果报文出现错误或丢失怎么办

        4. 如何使用送达的数据

        这些问题都需要有协议来解决,所以协议是很多的,为了更好地编码实现协议,就对协议进行了分层,我们把网络看作是层状结构。

        为了方便理解协议分层的好处,我们举一个现实生活中的例子,我们在和亲人打电话的时候,并不是直接和对方沟通,而是我们电话把我们的声音发送到对方的电话,再由对方的电话发出声音让对方听到。这个事件实际上也可以分为两层:语言层和通信设备层,语言层由汉语协议保证顺利交流,通信设备层由电话协议保证能够正常通信。那和外国友人打电话呢?语言层的协议切换为英语协议,但通信设备层并不需要修改协议,这实际上把各层的协议进行了解耦合,每层只需要专注于解决一件事情,并且都能够认为是同层的协议在进行直接通信。

        我们最常用的TCP/IP五层协议模型中,数据链路层协议保证把数据送到下一跳主机,网络层协议解决转发过程中的路径选择和确认目标定位问题,传输层解决报文出现错误或丢包的问题,应用层负责对接收到的数据进行处理,而物理层则负责光电信号的传递方式。

        

网络协议与系统

        现在我们已经知道网络协议是分层的,那么各层协议与一台主机具体是什么关系呢?

        网络协议应用层就在计算机的用户层,传输层和网络层协议位于操作系统的内核中,众所周知,用户想要访问计算机的硬件通常必须调用操作系统提供的接口,操作系统调用驱动程序来使用底层硬件,而数据链路层在计算机的驱动程序层。因为如果用户想进行网络通信,就必须访问网卡,所以自顶向下过程中贯穿了网络协议栈的每一层,这保证了用户会使用协议。

        再进一步,主机A向主机B发送数据时,首先由主机B的网卡接收到数据,然后要想把数据送到主机B的用户层,就需要自底向上贯穿网络协议栈的每一层。

网络传输的基本流程

(封装和分用)