计算机网络
计算机网络是指互联的计算机系统之间通过通信设备和通信线路进行数据交换的系统。计算机网络可以分为局域网、城域网、广域网和因特网等不同的类型。计算机网络使用各种协议来实现不同的功能和服务,例如 TCP/IP 协议用于互联网通信,HTTP 协议用于网页浏览,SMTP 协议用于电子邮件传输等等
网络协议是计算机之间进行数据交换的一类规则协议、标准集合,不同计算机之间的通信必须建立在相同的标准上,如:HTTP协议、TCP协议等等,在这些协议中TCP/IP协议影响力最大,是必须学习的协议,本模块会列出常见的协议并进一步分析,加深印象和理解
网络层次划分
为什么要进行网络层次划分?互联网的通信都必须建立在同一标准上才能够正常进行,划分层次可以进一步促进不同层次标准化,使得不同的供应商和组织可以遵循相同的标准进行设计和实现;进行模块划分、简化整体设计更有利于不同标准的实现、维护和扩展,提高网络的灵活性
网络协议层次划分的两个经典代表:OSI模型
、TCP/IP模型
OSI模型
OSI七层模型是国际标准化组织(ISO)在20世纪70年代提出的一个计算机网络通信模型。当时,由于不同的厂商和组织都在开发自己的网络协议,这导致了网络之间的互操作性和标准化问题。为此,ISO组织提出了OSI七层模型,以便解决这些问题。总之,OSI七层模型推动了网络协议的标准化和互操作性,为网络设计和实现提供了重要的参考模型,对于推动计算机网络的发展和应用具有重要的作用
以上是OSI七层模型,层层向上每一层为上一层提供服务
- 应用层(Application Layer):负责提供各种应用程序所需的服务,如文件传输、电子邮件、网页浏览等
- 表示层(Presentation Layer):负责数据格式的转换,提供数据加密和压缩等功能
- 会话层(Session Layer):负责建立和管理会话连接,提供数据交换和同步功能
- 传输层(Transport Layer):负责建立端到端的可靠传输连接,提供数据流的分段和重组功能,包括协议TCP和UDP等
- 网络层(Network Layer):负责在数据链路层上建立逻辑连接,选择最佳传输路径,进行数据包的传输和路由选择
- 数据链路层(Data Link Layer):负责在物理层上建立数据链路,进行数据帧的传输和接收,并进行错误检测和纠正
- 物理层(Physical Layer):主要负责传输比特流,包括建立物理连接、信号编码、调制解调制等
TCP/IP模型
TCP/IP协议的诞生背景是20世纪60年代末和70年代初,当时美国国防部的ARPA(高级研究计划局)在研究如何建立一种去中心化、可靠的通信网络,以应对核战争带来的威胁。ARPA的研究成果最终演变成了TCP/IP协议
可以说是TCP/IP协议是OSI的具体实现,其中典型的的代表是TCP和IP协议。TCP协议负责数据的可靠传输,它将数据分成小的数据包并确保它们以正确的顺序被发送到目的地。IP协议则负责数据包的路由和寻址,它将数据包从一个网络设备传输到另一个网络设备,使得不同类型的计算机和网络设备能够相互通信,并且能够在全球范围内进行数据传输,它是互联网的基础
- 应用层:应用层是TCP/IP协议的最高层,它负责处理应用程序之间的通信。这个层次包括许多协议,如HTTP、FTP、SMTP等,这些协议决定了应用程序如何在网络上进行通信
- 传输层:传输层负责处理数据的传输,如TCP协议提供了可靠的连接服务,能够确保数据的完整性和顺序性;UDP协议则提供了无连接服务,适合于需要快速传输的数据
- 网络层:网络层负责数据包的路由和寻址,它使用IP协议来实现数据包的传输。IP协议能够将数据包从一个网络设备传输到另一个网络设备,同时还能够进行网络地址转换(NAT)
- 数据链路层:数据链路层负责将数据包封装成帧并发送到物理层,也负责接收物理层传输的帧并解封装成数据包。这个层次包括了以太网、Wi-Fi、蓝牙等协议,它们决定了数据在物理层如何传输
传输过程
了解了网络模型后那数据到底是怎么传输的呢?假如以上计算机A、B要进行通讯,A在浏览器上提交网页登录信息点击发送,这里我们认定他使用HTTP协议,接着将数据发送到传输层当然这里会使用TCP协议作为可靠传输。TCP协议中会添加自己的相关信息作为数据的首部,如:源端口和目标端口、窗口大小、相关标识等等,形成数据段,再提交给网络层。网络层ARP协议会探测源IP地址的mac地址,IP会添加源IP和目标IP等信息作为首部形成数据包,再提交给数据链路层。链路层将添加以源mac地址和目标mac地址等信息为首部,交给物理层。物理层以比特流的形式开始转发,假如遇到路由器时路由器识别目标ip并根据路由表进行转发,期间会将源mac地址修改为路由器另一出口网卡的mac地址,然后再经过其他的路由器或交换机,这样层层转发直到目标主机。目标主机链路层去掉链路首部给到网络层,网络层去掉IP首部给到传输层,传输层去掉TCP首部给到应用层,应用层拿到数据后根据不同情况进行响应或拒绝
以上简单的概述了两端数据转发的过程
mac地址每经过一个路由器时都会将源mac地址修改会其某一网络接口的mac地址,而IP地址不会,因此IP地址决定了数据的起点和终点,mac地址决定了下一跳地址,二者缺一不可
TCP/IP协议
TCP/IP
协议是互联网最重要的协议,它是万物互联的基础。TCP/IP协议不是一种协议而是一类协议,是个协议簇包含了很多不同层次协议,因为TCP、IP两种协议比较经典而作为重要代表。以下列出TCP/IP协议中各层所包含的协议:
- 应用层:HTTP、FTP、Telnet、SMTP、DNS、POP3等等
- 传输层:TCP、UDP、TLS、QUIC等等
- 网络层:IP、ARP、RARP、ICMP等等
- 数据链路层:PPP、HDLC、CSMA等等
TCP/IP协议中包含很多重要的协议,如:HTTP协议对于web开发者了解其数据报文信息很有用、TCP协议连接过程(面试考点)、IP划分(子网掩码、网段等等)、ARP寻址、ICMP网络诊断等在实际开发或网络排错中都很有用
总之搞懂这些协议是非常有用的,了解网络传输本质对于网络的学习也很有帮助,接下来以TCP/IP为范畴详细讲解部分协议
为什么要懂计算机网络?
可以说计算机网络是每个工程师的基础,了解它会让我们明白其背后的原理是怎么样的,比如:前后端的数据传输,使用的什么协议,换成什么协议可以加快数据传输等等。总之学习计算机网络是很重要的,可以拓宽自己视野发展,总之关于网络中的盲区最好还是填补一下