计算机网络笔记 | 青训营笔记

134 阅读9分钟

计算机网络概念解析

自顶向下

  1. 确定学习目标和整体框架:首先明确要学习的知识领域,确定学习的目标和整体框架,了解这个领域的概念和基本知识。
  2. 深入理解概念和原理:在了解整体框架后,深入学习其中的概念和原理,掌握它们的含义和作用。
  3. 细节和实践:了解概念和原理后,再逐渐深入到具体的细节和实践中,例如算法的具体实现、具体的应用场景等等。
  4. 反思和总结:在学习过程中,不断反思和总结,梳理知识点之间的关系,巩固已经学习的知识,并找出需要加强的地方。

转发表格

转发表格是一种记录网络数据包转发信息的表格。在网络交换中,路由器等网络设备会根据目标地址等信息将数据包转发到下一个节点,而转发表格则记录了这个转发过程中涉及的相关信息。 转发表格通常包括:

  1. 目标地址:数据包要发送的目标地址。
  2. 下一跳地址:数据包下一步要发送到的地址,也就是下一个节点的地址。
  3. 接口:数据包从哪个接口发送出去,或者从哪个接口接收到。
  4. 优先级:不同的路由可能会有不同的优先级,该字段记录了路由的优先级,以便在决策转发路径时进行选择。

组成部分

计算机网络是由多个相互连接的计算机和网络设备组成的系统,其组成部分可以分为以下几个方面:

  1. 客户端:客户端是指在计算机网络中请求服务的软件或者硬件设备。它通常运行在用户终端设备上,如个人电脑、手机、平板电脑等。
  2. 协议:协议是计算机网络中的重要组成部分,它规定了计算机和网络设备之间通信的规则和格式,包括物理层、数据链路层、网络层、传输层、应用层等各个层次的协议。
  3. 数据:数据是计算机网络中最重要的组成部分,网络中的数据可以是文本、图像、音频、视频等各种形式,通过网络进行传输和交换。
  4. 人员和组织:计算机网络的设计、实施和维护需要人员和组织的参与,包括网络管理员、安全人员、用户等。

Http协议

HTTP(Hypertext Transfer Protocol)协议是一种应用层协议,它是用于在Web浏览器和Web服务器之间传递数据的协议。HTTP协议基于TCP/IP协议栈,使用可靠的连接来传输数据。HTTP协议是Web应用程序的基础,可以用于获取网页、图像、视频、音频等各种类型的资源。

基本特点如下:

  1. 简单快速:HTTP协议使用简单的请求-响应模型,客户端向服务器发送请求,服务器响应请求,这种模型使得HTTP协议非常简单和快速。
  2. 无连接:HTTP协议是一种无连接协议,也就是说,客户端和服务器在收到响应后会立即断开连接,这样可以节省服务器资源,但也意味着每个请求都需要重新建立连接。
  3. 无状态:HTTP协议是一种无状态协议,也就是说,服务器不会保留任何关于客户端的状态信息,每个请求都是独立的,这样可以简化服务器的设计。
  4. 支持缓存:HTTP协议支持缓存机制,客户端和服务器可以缓存请求和响应,以减少网络流量和提高性能。
  5. 支持代理:HTTP协议支持代理,客户端可以通过代理服务器来访问服务器资源,代理服务器可以缓存请求和响应,以提高性能和安全性。

HTTP协议的请求和响应消息都由三部分组成:起始行、头部信息和消息正文。起始行包含了请求或响应的方法、URL地址、协议版本等信息,头部信息包含了一些附加信息,如请求或响应的日期、服务器类型、内容类型等信息,消息正文则包含了请求数据或响应数据的实际内容。

QUIC(Quick UDP Internet Connections)

QUIC是由Google开发的一种基于UDP的传输协议,旨在提高网络传输的速度和安全性。与传统的TCP协议不同,QUIC协议将传输层和应用层协议合并为一体,可以在应用层直接处理数据。

主要特点如下:

  1. 快速连接:QUIC协议使用UDP协议,可以减少连接建立的时间,提高连接速度。
  2. 低延迟:QUIC协议使用数据包多路复用(Multiplexing)和快速恢复机制,可以减少网络延迟,提高用户体验。
  3. 安全性:QUIC协议使用加密来保护数据传输的安全性,可以防止数据被窃取或篡改。
  4. 可靠性:QUIC协议使用快速重传和快速恢复机制,可以在数据丢失时快速恢复数据传输,提高数据传输的可靠性。
  5. 跨网络:QUIC协议可以穿越各种类型的网络(如NAT、代理等),提高了网络传输的稳定性和可靠性。

QUIC协议已经被广泛应用于Google的服务中,如Chrome浏览器、Youtube视频等。由于QUIC协议具有快速连接、低延迟、安全性等特点,可以大大提高网络传输的效率和用户体验,因此在未来可能会成为互联网的主流传输协议之一。

Web Socket

WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议,可以实现实时通信和数据传输。下面是一个简单的WebSocket应用的示例:

  1. 服务端代码:
import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        print(f"Received message: {message}")
        response = f"Server received: {message}"
        await websocket.send(response)

async def main():
    async with websockets.serve(echo, "localhost", 8765):
        await asyncio.Future()  # keep the server running

if __name__ == "__main__":
    asyncio.run(main())

以上代码使用Python的asyncio和websockets库实现了一个简单的WebSocket服务器。该服务器会监听本地的8765端口,当有WebSocket连接时,会接收客户端发送的消息,并返回消息。具体来说,echo函数会在客户端发送消息时被调用,该函数会打印接收到的消息,并将消息原封不动地返回给客户端。

  1. 客户端代码:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Test</title>
    <script>
        var ws = new WebSocket("ws://localhost:8765/");
        ws.onmessage = function(event) {
            console.log("Received message: " + event.data);
        };
        function sendMessage() {
            var message = document.getElementById("message").value;
            ws.send(message);
            console.log("Sent message: " + message);
        }
    </script>
</head>
<body>
    <input type="text" id="message" placeholder="Enter message...">
    <button onclick="sendMessage()">Send</button>
</body>
</html>

以上代码是一个简单的HTML页面,其中包含了一个输入框和一个发送按钮。当用户输入消息并点击发送按钮时,JavaScript代码会将消息发送给WebSocket服务器,并在控制台打印发送的消息。同时,当服务器返回消息时,JavaScript代码会在控制台打印接收到的消息。

网络安全

网络安全是指保护计算机网络和网络上的数据免受未经授权的访问、攻击、破坏或泄露的一种保护措施。网络安全涉及到多个方面,包括以下几个方面:

  1. 认证和授权:认证是确认用户身份的过程,授权是为用户分配特定的权限,以限制用户访问和操作的范围。认证和授权是网络安全的基础,可以避免未经授权的访问和操作。
  2. 数据加密:数据加密是将数据转换为密文的过程,只有持有正确密钥的用户才能解密并读取数据。数据加密可以保护数据免受未经授权的访问和窃取。
  3. 防火墙:防火墙是一种网络安全设备,可以监视网络流量,并根据预定义的规则来允许或拒绝数据包的传输。防火墙可以保护网络免受网络攻击和恶意软件的侵害。
  4. 入侵检测:入侵检测是指监视网络活动,以检测并报告未经授权的访问、攻击或数据泄露。入侵检测可以及早发现网络安全问题,从而采取相应的措施进行防范。
  5. 安全漏洞扫描:安全漏洞扫描是一种自动化的工具,可以检测网络设备和应用程序中的安全漏洞,并提供修复建议。安全漏洞扫描可以帮助管理员及早发现和修复潜在的安全漏洞。
  6. 安全培训:安全培训是指为员工提供网络安全意识和技能的培训。安全培训可以提高员工对网络安全的认识和理解,从而减少人为因素对网络安全的威胁。

我对计网的看法

我认为计算机网络是人类社会中非常重要的基础设施之一,它已经成为了现代社会的基石之一。计算机网络的出现和发展,使得人类可以更加便捷地进行信息交流和数据传输,大大提高了人类社会的生产力和效率。

计算机网络的发展经历了多个阶段,从最初的ARPANET到现在的互联网,计算机网络已经成为了人类社会中不可或缺的一部分。随着物联网、云计算、大数据等新兴技术的发展,计算机网络的应用也越来越广泛,包括在线教育、远程医疗、智能交通、智能家居等各个领域。

但是,计算机网络也面临着多种安全威胁和风险,如黑客攻击、病毒感染、网络钓鱼等,这些威胁和风险需要得到有效的防范和控制。同时,计算机网络也面临着多种技术挑战,如网络性能、可扩展性、安全性等,这些挑战需要不断地研究和创新,以推动计算机网络的发展。

计算机网络是人类社会中非常重要的基础设施之一,它的发展已经改变了人类社会的面貌,并将继续推动着人类社会的进步和发展。同时,我们也需要认真面对和应对计算机网络所面临的各种挑战和威胁,以确保计算机网络可以持续健康地发展。