前言:
学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容
资料分享:
视频课件分享链接,提取码pho1
计算机网络(第七版) 自顶向下方法分享链接,提取码7ln4
问题:如何设计和实现计算机网络这个极其复杂的系统?
两位异地哲学家的交流
模型解析:
根本是为了实现两位哲学家的思想交流,这里采用分层次的解决方法,也就是下层为上层去服务,第一层是秘书,他们负责两位哲学家书信的传递,比如使用马车邮寄信件,第二层是翻译,负责将书信翻译成哲学家能看懂的语言,重复这个过程,最终实现思想交流。
这样的好处就是将复杂的问题拆分开,比较好实现,而且后续拓展较为容易,比如可以将马车更换为邮车等等。
用层次化的方式实现复杂的网络功能:
**PDU(Protocol Data Unit)**是指在通信协议中,用于在不同层次之间传递的数据单元。通信协议按照 OSI 模型(Open Systems Interconnection model)分为七个层次,每个层次负责不同的功能。在每个层次之间传递的数据单元就是 PDU。
服务(Service):低层的实体向上层实体提供其和其对等实体通信的能力
服务访问点(SAP,Service Access Point):上层使用下层的服务通过层间的接口——地点;因为下层不可能只为上层中的一个实体提供服务,所以需要一个标识来找到本次的信息要提供给哪个实体;例如传输层的 SAP
就是经常提到的端口(port)
- TCP/IP 协议模型层次:网络接口层、网络层、传输层、应用层
- 套接字(Socket)是计算机网络中进行进程间通信或主机间通信的一种机制。它提供了一种标准的接口,允许不同计算机上的进程通过网络进行数据交换。套接字是网络编程中重要的概念之一,通常用于实现客户端和服务器之间的通信。
原语(primitive):上层使用下层服务的形式,高层使用底层提供的服务,以及底层向高层提供服务都是通过服务访问原语来进行服务的。可以理解成一个不可再分的基本操作或者指令,是计算机指令集的基本组成成分。
面向连接的服务(Connection-oriented Service)
无连接的服务(Connectionless Service)
基本理解即可,具体的会在后面课程中详细讲述
服务和协议的关系与区别
- 服务:低层实体向上层实体提供它们之间通信的能力
- 协议:对等层实体之间相互通信过程中遵循的集合
服务与协议的联系
- 本层协议的实现要依靠与下层的服务
- 本层实体通过协议为上层提供更好的服务
理解上图中的概念
PDU
的主要作用是 通过协议栈的各层传递数据,并在每一层添加相应的控制信息。当数据通过协议栈向下传递时,每一层都会封装上层的 PDU,添加自己的头部信息,形成新的 PDU。当数据向上传递时,每一层都会解封装下层的 PDU,提取控制信息,并将数据传递给上一层。
上层(第 n 层)的 SDU 作为下一层(n - 1 层)要传递的数据,下层对这个 SDU 进行拓展,加上本层的头部(Header)形成本层的 PDU,而这个 PDU 又作为更下一层(n - 2 层)的 SDU,是一个相对的概念。
Internet 协议栈是指构成互联网体系结构的协议集合,它定义了在计算机网络中信息如何在不同层次进行传输和处理。
提到模型,首先要区分开 OSI 模型 和 TCP/IP 模型
OSI 模型(开放系统互联模型)是由国际标准化组织(ISO)制定的,其设计目的是为了提供一个通用的框架,能够帮助理解和设计各种计算机网络协议。
OSI 模型并没有在实际互联网中得到广泛的应用,但它仍然在学术界和标准化文档中被用作理论基础,以便更好地理解网络协议的功能和交互。
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
TCP/IP 模型是在实际互联网的发展中形成的,最初是由美国国防部的研究项目 ARPANET 的设计所推动的。它以更简洁的四层结构描述了互联网协议的体系结构,包括链路层、网络层、传输层和应用层。TCP/IP 模型更贴近实际应用和互联网的发展,因此 在实际网络设计和实施中更为常见。
链路层、网络层、传输层、应用层
可以理解为 TCP/IP 模型是在 OSI 模型上发展而来的,且是更偏向于实践的模型,而作为一个通用的规范,OSI 在学习上也有很大的价值。
这里继续记录郑老师课上使用的模型,可以看作是上面两个的结合
继续在传输过程中看这些层次的作用
在传输的过程中会经过交换机和路由器
路由算法就是在路由器上执行的,为了确定到达目标位置的路径,需要借助网络层,而交换机是负责局域网的数据传输,只需要解封到链路层负责端到端的传输,这里有部分关于路由器和交换机的补充知识,了解即可。
关于路由器和交换机的工作
- 在交换机中,决定数据包转发的主要因素是目标设备的 MAC 地址。交换机通过学习源 MAC 地址和构建一个 MAC 地址表,根据目标 MAC 地址来决定将数据包转发到哪个端口。这个过程是根据数据链路层的信息(MAC 地址)进行的,而不涉及网络层(IP 地址)的路由决策。交换机在同一局域网内实现设备之间的高效通信。
- 而在路由器中,决定数据包转发的主要因素是目标设备的 IP 地址。路由器使用路由表来查找目标 IP 地址,并决定将数据包转发到哪个输出端口。这个过程是根据网络层的信息(IP 地址)进行的,涉及到不同网络之间的路由决策。路由器用于连接不同网络,实现跨网络的数据包传输。
关于 MAC 的确定
- 在同一局域网内,如果目标主机位于源主机所在的子网,源主机可以通过 ARP(地址解析协议)查询目标主机的 IP 地址对应的 MAC 地址,然后将目标 MAC 地址写入数据包的目标 MAC 地址字段。
- 如果目标主机位于不同的网络,源主机会将数据包的目标 MAC 地址设置为它直接连接到的路由器的 MAC 地址。这个路由器通常是源主机发送数据包经过的第一个路由器,即默认网关。路由器会负责将数据包从源主机的子网传递到目标主机所在的子网。
- 在目标主机所在的子网内,路由器会将目标 MAC 地址替换为目标主机的真实 MAC 地址。这是通过路由器在两个子网之间进行 MAC 地址转换的过程,通常称为 NAT(Network Address Translation)。
也就是上面说的 PAU,是每层中传递的数据