《图解TCP/IP》第一章——计算机网络基础知识

协议

协议是什么

简单来说,协议就是计算机与计算机之间通过网络实现通信时实现达成的一种“约定”。

就像人与人对话,我们约定好都说汉语,那我们可以正常交流;如果我说汉语你说外语,那我听不懂你在说什么,也就无法交流

使用的语言不同,我们无法交流,同理:使用的协议不同,就无法实现通信

协议分层与OSI参考模型

协议与接口

OSI参考模型将通信协议中必要的功能分为7层。每个层都接收由他下一层所提供的服务,并且为自己的上一层提供特定服务。上下层之间交互时所遵循的约定叫做“接口”。同一层之间的交互所遵循的约定叫做“协议”。

分层的优缺点

优点:

  • 每个分层独立使用,某个分层变化不会波及整个系统。因此,分层可以构造一个扩展性和灵活性都较强的系统
  • 分层能够细分通信功能,更易于单独实现每个分层的协议,并界定每个分层的具体责任和义务

缺点:

  • 过分模块化,使处理变得更加沉重
  • 每个模块都不得不实现相似的处理逻辑

OSI参考模型

层数分层名称包含协议功能功能概览
7应用层FTP SMTP HTTP DNS针对特定应用的协议电子邮件=》电子邮件协议 文件传输=》文件传输协议
6表示层 设备固有数据格式和网络标准数据格式的转换接收不同表现形式的信息,如文字流、图像、声音等
5会话层 通信管理。负责决定建立和断开通信连接的时机以及连接方法,同时管理传输层以下的分层何时建立连接、何时断开连接以及连接保持多久
4传输层TCP UDP管理两个节点之间的数据传输,负责可靠传输是否有数据丢失
3网络层IP地址管理与路由选择经过哪个路由传递到目的地址
2数据链路层 互联设备之间传送和识别数据帧数据帧与比特流之间的转换
1物理层 以“0”、“1”代表电压的高低、灯管的闪灭。界定连接器和网线的规格。比特流和电子信号之间的转换
  • 应用层

    为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件、远程登录(虚拟终端)等协议。

  • 表示层

    将应用处理的信息转换为适合网络传输的格式,或将下一层的数据转换为上层能够处理的格式。因此他主要负责数据格式的转换

    具体来说,就是将设备固有的数据格式转换为网络标准传输格式。不同设备对同一比特流解释的结果可能会不同。因此,使他们保持一致是这一层的主要作用

  • 会话层

    负责决定建立和断开通信连接的时机、决定采用何种连接方法,以及数据的分割等数据传输相关的管理。

  • 传输层

    进行实际的建立和断开连接,起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。

  • 网络层

    将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择

  • 数据链路层

    负责物理层面上互连的、节点之间的通信传输,以及数据帧的生成与接收(将0、1序列划分为具有意义的数据帧传送给对端)。

  • 物理层

    负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的转换。

注意

网络层和数据链路层都是基于目标地址将数据发送给接收端,但是网络层负责将整个数据发送给最终目标地址,而数据链路层只负责发送一个分段内的数据。

层间通信

发送方从第7层到第1层由上至下按照顺序传输数据,接收方则从第1层到第7层由下至上传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行“首部”与“内容”的分离,再转发给上一层,并最终将发送端的数据恢复为原状

传输方式的分类

面向有连接型和面向无连接型

面向有连接

必须在通信传输前后,专门进行建立和断开连接的处理。如果与对端之间无法通信,就可以避免发送无谓的数据。

面向无连接

面向无连接不要求建立和断开连接。发送端可与任何时候自由发送数据。反之,接收端也永远不知道自己会在何时从哪里收到数据。因此,在面向无连接的情况下,接收端需要时常确认是否收到了数据

在面向无连接的通信中,不需要确认对端是否存在。即使接收端不存在或无法接收数据,发送端也能将数据发送出去。

电路交换与分组交换

目前,网络通信方式主要有两种——电路交换与分组交换。电路交换主要用于过去的电话网,分组交换是较新的一种方式,TCP/IP就是采用了分组交换。

电路交换

在电路交换中,交换机主要负责数据的中转处理。计算机首先被连接到交换机上,而交换机与交换机之间则由众多通信线路再继续连接。因此计算机之间在发送数据时,需要通过交换机与目标主机之间建立通信电路。我们将连接电路成为建立连接。建立好连接以后,用户就可以一直使用这条电路,直到该连接被断开为止。

电路交换会独占整个连接,无法实现多台计算机相互通信。

分组交换

将所要发送的数据分成多个数据包,按照一定的顺序排列之后分别发送。这就是分组交换。

在分组交换中,由分组交换机(路由器)连接通信线路

分组交换的大致处理过程:

发送端计算机将分组数据发送给路由器,路由器收到这些分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。因此分组交换也叫蓄积交换。

路由器收到数据后会按照顺序缓存到相应的队列当中,再以先进先出的方式将它们逐一发送出去(有时,也会优先发送目标地址比较特殊的数据)

注意:

  • 在分组交换中,计算机和路由器之间以及路由器和路由器之间通常只有一条通信线路。因此这条线路是一条共享线路。
  • 在电路交换中,计算机之间的传输速度不变,但在分组交换中,通信线路的速度可能会有所不同。根据网络拥堵情况,数据到达目标地址的时间有长有短。
  • 路由器的缓存饱和或溢出时,可能会发生分组数据丢失、无法发送到对端的情况。

根据接收端数量分类

网络通信当中,也可以根据目标地址的个数及其后续的行为对通信进行分类。

单播(Unicast)

一对一通信,如固定电话

广播(Broadcast)

广播是指将消息从一台主机发送给与之相连的其他所有主机。如电视播放。

进行广播通信的计算机有它们的广播范围。只有在这个范围内的计算机才能接收到相应的广播消息。这个范围叫做广播域。

多播(Multicast)

多播与广播类似,也是将消息发给多个接收主机。不同之处在于多播要限定某一组主机作为接收端。比如远程会议

任播(Anycast)

任播是指在特定组内的多台计算机中选出一台作为接收端的一种通信方式。

任播通信从目标主机群中选择一台最符合网络条件的主机作为目标主机发送消息。通常,所被选中的那台特定主机将返回一个单播信号,随后发送端主机只会跟这台主机进行通信。

任播在实际网络中的应用有DNS根域名解析服务器。

地址

地址的唯一性

一个地址必须明确表示一个主体对象

地址的层次性

注意:MAC地址和IP地址在标识一个通信主体时虽然都具有唯一性,但是他们当中只有IP地址具有层次性。

MAC地址为何没有层次性

MAC地址由设备的制造厂商针对每块网卡进行分别指定。虽然MAC地址中的制造商识别编号、产品编号以及通用编号等信息在某种程度上也具有一定的层次性,但对于寻找地址并没有起到任何作用,所以不能算作有层次的地址。正因如此,虽然MAC地址是真正负责最终通信的地址,但是在实际寻址过程中,IP地址却必不可少。

IP地址怎样实现分层的

一方面,IP地址由网络号和主机号两部分组成。即使通信主体的IP地址不同,若主机号不同,网络号相同,说明它们处于同一个网段。通常,处于同一个网段的主机也都属于同一个部门或集团组织。

另一方面,网络号相同的主机在组织结构、提供商类型和地域分布上都比较集中,也为IP寻址带来了极大的方便。

地址转发表和路由控制表

网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。在这一点上MAC寻址与IP寻址是一样的。只不过MAC寻址中所参考的这张表叫地址转发表,而IP寻址中所参考的叫做路由控制表。MAC地址转发表中所记录的是实际的MAC地址本身,而路由表中记录的IP地址则是集中了之后的网络号。


代码书写世界,吉他演奏生活