【计算机网络】基础知识学习小结

800 阅读9分钟
  1. 广域网和局域网
  2. 标准化机构
  3. 协议分层模型
  4. 传输方式分类
  5. IP地址和MAC地址
  6. 网络构成要素
  7. 网络通信示例

广域网和局域网

计算机网络,根据规模可以划分为广域网(WAN)和局域网(LAN)。

标准化机构

标准化组织大致分为三类:国际级标准化机构(ISO[1]、ITU-T[2])、国家级标准化机构(ANSI[3])和民间团体(IETF[4])。

协议分层模型

在OSI参考模型中,将计算机网络分为七层。

OSI参考模型vsTCP/IP模型

应用层:

规定了应用程序通信相关细节。常见协议:HTTP、FTP、TELNET、SSH、SNMP等。

表示层:

负责数据格式转换。

会话层:

负责管理通信连接以及数据分隔。

传输层:

保证传输的可靠性。常见协议:TCP、UDP等。

网络层:

将数据传输到目标地址,负责寻址和路由。常见协议:IP、ICMP、ARP等。

数据链路层:

负责数据帧的生成和接收。

物理层:

负责比特信号与电压、光信号之间的转换。

传输方式分类

面向有连接和面向无连接

在分层协议中,不同层对连接的定义有所不同,有的连接是逻辑的,有的连接是物理的。无连接类型的传输不需要建立和断开连接。发送端不需要确认对端存在,对端不存在或者无法接收消息的情况下,发送端仍然会将数据发送出去。

电路交换和分组交换

电路交换历史比较久远,计算机在发送数据时,需要通过交换机与目标主机建立通信电路。分组交换中,路由器接收到数据以后会按照顺序缓存到相应队列,再以先进先出的顺序将它们发送出去。

单播、广播、多播和任播

  • 单播(Unicast):一对一通信。
  • 广播(Broadcast):发送给相连的所有主机。
  • 多播(Multicast):多播通信典型场景是电视会议。
  • 任播(Anycast):在多台主机中选出一台作为接收端。

IP地址和MAC地址

MAC地址是负责最终通信的地址,但是寻址过程中,IP地址是必不可少的。IP地址由网络号和主机号两部分组成,网络号相同说明他们处于同一网段。MAC寻址参考地址转发表,IP寻址参考路由控制表。

网络构成要素

数据链路和通信媒介

链路 媒介 说明
以太网 同轴,双绞线,光纤 局域网通信
无线 电磁波 局域网通信
ATM[5] 双绞线,光纤 局域网、广域网通信
FDDI[6] 双绞线,光纤 局域网、广域网通信
帧中继 双绞线,光纤 广域网通信
ISDN[7] 双绞线,光纤 广域网通信

网卡

计算机接入网络,必须使用网卡,目前大部分计算机都有内置的NIC。

中继器

在OSI模型的第一层,用于调整和放大数据传输中的光、电信号。中继器不能在传输速度不同的媒介之间转发。连接两个不同速度的网络需要的是网桥或者路由器。

集线器可以看作多口中继器,每个端口可以看成一个中继器。

网桥/2层交换机

网桥能够识别数据链路中的数据帧,并将数据帧临时存到内存,再重新生成信号作为一个全新的帧转发给下一跳。数据帧中有一个数据位叫做FCS[8],用于校验帧数据是否正确发送到目的地。

网桥能够通过地址自学机制和过滤功能控制网络流量。网桥中的地址是MAC地址、硬件地址、物理地址以及适配器地址。

自学式网桥:这类网桥会记住层级通过自己转发数据帧的MAC地址,在后续的数据转发中,可以判断哪些网段中包含持有哪些MAC地址的设备。数据帧直接发到目标网段。

交换集线器(Hub)属于网桥的一种,每个端口提供类似网桥的功能。

路由器/3层交换机

路由器连接网络层上的两个网络,转发分组报文。网桥根据物理地址处理数据,路由器根据IP地址处理数据。

路由器还能分担网络负荷,具备一定的网络安全功能。

4~7层交换机

负责处理OSI模型中从传输层到应用层的数据,以TCP等协议的传输层及上面的应用层为基础,分析收发数据,并对数据进行特定的处理。

4~7层交换机的应用场景有广域网加速、特殊应用访问加速以及防火墙等。

网关

网关与4~7层交换机一样都是传输层及以上的数据,但是网关不仅转发数据,还负责对数据进行转换。

通常会使用一个表示层或应用层网关,在两个不能直接通信的协议之间进行翻译,最终实现两者之间的通信。

常见的网关分类:

  • 安全网关:防火墙
  • 协议网关:实现不同协议之间的通信
  • 应用网关:邮件网关

网络通信示例

网络通信的过程是消息在网络中正确传输的过程,应用消息经过TCP/IP分层模型的不同层,各层在发送消息、接收消息时,进行封包和解包,最终将消息中数据从网络一端的应用传送到另一端的应用。

数据包

数据包结构

数据包中一般会包含以太网包首部、IP包首部、TCP包首部以及会话、表示、应用层的数据。

数据包单位

数据包在数据链路层用帧为单位,在IP和UDP等网络层用包为单位,而段表示TCP数据流中的信息。消息是指应用协议中数据的单位。

发送数据包

应用程序处理消息

应用程序负责将用户消息组装成具体的消息报文b(应用层)并将消息进行编码处理(表示层),最终应用程序会在合适的时机建立通信连接(会话层)并将消息发送出去。

传输模块处理消息

应用程序会根据应用具体的场景选择使用TCP传输协议还是UDP传输协议。

如果是TCP协议,需要在应用层数据的首部附加一个TCP头,包括源端口号、目标端口号、序号以及校验和。

IP模块处理消息

IP模块将传输层传过来的头部和数据合起来当做自己的数据,并在头部加上自己的IP头。IP头部中包含接收端IP地址以及发送端IP地址,还有用来判断其后数据是TCP还是UDP的信息。

IP包生成后,参考路由控制表决定接受此IP包的路由或主机,随后,IP包被发送给连接这些路由器或者主机网络接口的驱动程序,实现真正的数据发送。

如果此时还不知道接收端的MAC地址,可以使用ARP协议进行查找。知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网驱动程序,实现数据传输。

网络接口处理消息

IP包对于以太驱动来说就是数据,驱动给这些数据加上以太网首部并进行发送。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。

发送处理中的FCS由硬件计算,添加到包的最后。

数据链路中的包

数据包在流动的过程中,从前往后一次被附加了以太网包首部、IP包首部、TCP或UDP包首部以及自己应用的包首部,包的最后则追加了以太网包尾。每个包首部中至少包含两个信息:发送端、接收端地址和上一层的协议类型。

接受数据包

网络接口处理消息

主机收到以太网包后,确定包首部的MAC地址是否是自己,不是自己则丢弃。如果是自己的包,则查找以太网包首部中的类型域,确定数据类型。

如果是IP包,则将数据传给处理IP的子程序,如果是ARP包,则把数据传给ARP处理。如果不识别的类型,则丢弃数据。

网络模块处理消息

以IP协议处理为例,解析得到包首部的IP地址,判断IP地址是否匹配,并确定上一层的协议,根据上一层的协议类型,确定数据传给TCP处理还是UDP处理。

对于有路由器的情况,接收端的地址不是自己的地址,需要借助路由控制表,转发数据到下一个网络节点。

传输模块处理消息

以TCP协议处理为例,首先会计算数据校验和,判断数据是否被破坏,然后检查数据序列号,最后检查数据端口号。

数据接收完毕,会发送确认消息给发送端。接收端如果没有接受到回执,会根据一定的策略重发消息。

数据完整的接收后,传递给端口号识别的应用程序。

应用程序处理消息

应用程序接收到数据后,根据自己程序的协议解析数据,并进行相应的逻辑处理。

文中图片来自百度图片,侵删。


  1. ISO: International Orgnization for Standards ↩︎

  2. ITU-T: International Telecommunication Union Telecommunication Standardization Sector ↩︎

  3. ANSI: American National Standards Institute ↩︎

  4. IETF: The Internet Engineering Task Force ↩︎

  5. ATM: Asynchronous Transfer Mode ↩︎

  6. FDDI: Fiber Distributed Data Interface ↩︎

  7. ISDN: Integrated Services Digital Network ↩︎

  8. FCS: 用CRC(循环冗余校验码)方式校验数据帧中的位。 ↩︎