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

183 阅读13分钟

计算机网络

计算机网络基础

网络组成部分

  • 主机:客户端和服务端
  • 路由器
  • 网络协议

在计算机网络中,主机(Host)是指计算机网络中的终端设备,例如个人电脑、服务器等。路由器(Router)是指计算机网络中用于转发数据包的设备,主要负责在不同网络之间进行数据传输和路由选择等工作。网络协议则是指计算机网络中用于实现数据传输和通信的规则和标准。

主机和路由器之间的关系是相互依存的。主机通过网络协议实现数据的传输和通信,它们通过路由器进行数据的转发和路由选择,以实现数据在不同网络之间的传输。在实际应用中,主机和路由器之间的通信是基于不同层次的协议来实现的,例如网络层协议(例如IP协议)用于路由器之间的数据转发和路由选择,而传输层协议(例如TCP协议或UDP协议)则用于主机之间的数据传输和通信。

网络协议是主机和路由器之间实现数据传输和通信的基础,它们定义了数据包的格式、传输方式、路由选择等相关规则和标准。路由器通过使用不同的网络协议来实现数据的转发和路由选择,以确保数据能够正确传输到目标主机。主机通过使用网络协议来实现数据的传输和通信,以便能够和其他主机进行数据交换和通信。

综上所述,主机和路由器之间是相互依存的,它们通过网络协议实现数据传输和通信。主机和路由器之间的通信是基于不同层次的协议来实现的,它们都起着关键的作用,以确保计算机网络的正常运行。

网络结构

  • 区域网
  • 城域网
  • 广域网

区域网络(LAN,Local Area Network)和局域网是一个意思,通常被用作同义词。它是指在有限的物理范围内,例如建筑物、校园、公司等,连接多台计算机和设备的计算机网络。区域网络(局域网)通常使用高速的局域网技术(如以太网)来实现计算机之间的通信,并提供各种服务,例如文件共享、打印机共享、电子邮件等。因此,区域网络(局域网)可以被认为是一种基于局域网技术的计算机网络。

需要注意的是,虽然区域网络和局域网是同义词,但是在一些特定的场景下,可能会有所不同。例如,区域网络有时候可能会指更广泛的网络范围,包括一些由多个局域网和广域网(WAN)组成的较大规模的网络。在这种情况下,区域网络(LAN)可以被视为局域网的一部分,但不限于局域网的范围。因此,具体应用场景和定义背景需要具体分析。

电路交换与分组交换

电路交换和分组交换是两种常见的计算机网络传输方式。

电路交换是指在通信开始之前,建立一个完整的通信路径,该路径中的所有资源(例如带宽、传输速率等)都被保留并且只用于这个通信。一旦电路被建立,通信双方之间的数据就可以不加协议地直接传输,直到通信结束。在这个过程中,整个通信路径都被保留,即使在通信过程中数据并没有传输,也会占用带宽和其他资源。电路交换在传输大数据量、对时延要求高的实时通信以及需要保证通信质量(QoS)的场合比较常见,例如电话通信和视频会议等。

分组交换是指将数据分割成较小的数据包(分组)进行传输,每个数据包都包含目标地址、源地址和序号等信息。数据包通过网络进行传输时,可以通过多条路线进行传输,每个路线上的带宽都可以根据需要动态分配。因此,分组交换可以更加灵活地利用网络资源。在分组交换中,数据包可能会在传输过程中经过不同的路径、不同的节点和不同的时间,数据包的传输顺序和时延可能会有所不同。分组交换在传输数据量较大,对传输时延要求不是非常高,但需要更好的网络资源利用效率的场合比较常见,例如互联网和局域网等。

综上所述,电路交换和分组交换是两种不同的计算机网络传输方式,应用于不同的场景和需求中。

网络分层

网络分层(network layering)是一种设计计算机网络的方法,将网络协议按照不同的功能和作用划分为多个层次,每个层次都有不同的功能和责任,从物理层到应用层逐层构建出完整的网络架构。

网络分层的主要目的是简化网络设计和实现,以及提高网络的可靠性、可扩展性和可维护性。通过将不同的协议按照功能和作用划分到不同的层次中,可以实现网络协议的模块化设计和实现,以便于各个层次之间的协作和管理。此外,网络分层还可以提供一种标准化的网络架构,使得不同厂商开发的设备和软件可以互相兼容和交互。

常见的网络分层模型包括OSI模型和TCP/IP模型。OSI模型包含七个层次,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,每个层次都有不同的协议和功能。TCP/IP模型包含四个层次,分别是网络接口层、网络层、传输层和应用层。每个层次都有不同的协议和功能,例如TCP协议和UDP协议在传输层中使用,IP协议在网络层中使用,HTTP协议和FTP协议在应用层中使用等。

网络分层是计算机网络设计的基础,它使得网络协议的设计和实现变得更加简单、模块化和可维护。通过网络分层,可以更好地理解网络协议的工作原理和作用,也可以更加有效地解决网络问题和故障。

协议

网络协议是指计算机网络中用于实现数据传输和通信的规则和标准,它定义了数据传输的格式、传输方式、路由选择、错误检测和恢复等相关规则和标准。网络协议是计算机网络中的基础,它使得不同类型的设备和软件可以互相兼容和交互。

Q:为什么协议依赖于链接?

A:协议依赖于链接的原因是因为协议需要适应不同的网络链接来进行数据的传输。网络连接包括物理连接和逻辑连接。

物理连接是指计算机网络中传输数据的物理媒介,例如光纤、同轴电缆、无线电波等等。协议需要考虑不同的物理连接类型和不同的物理层协议来适应不同的传输媒介,例如在有线网络中使用以太网协议,在无线网络中使用Wi-Fi协议等等。

逻辑连接是指网络中的传输路径和节点之间的关系。协议需要考虑不同的网络层协议和路由协议来适应不同的传输路径和网络拓扑结构,例如在互联网中使用IP协议和TCP协议,使用路由协议来实现数据的传输和路由选择。

因此,协议需要适应不同的网络链接来实现数据的传输,以满足不同的网络需求和应用场景。

标头与载荷

在计算机网络中,数据包通常由两部分组成:表头(header)和载荷(payload)。

表头是指数据包中用来描述和控制传输的部分,通常包含源地址、目的地址、数据类型、校验和等信息。表头的作用是在数据包传输过程中,对数据包进行控制、转发、路由选择和检错等操作。不同协议的表头内容和格式可能有所不同,但是大多数协议都会包含源地址、目的地址和数据类型等基本信息。

载荷是指数据包中需要传输的实际数据部分,例如文本、图像、音频或视频等。载荷是数据包中最重要的部分,它决定了数据包的大小和传输内容。在发送数据包时,载荷会被拆分成一个或多个数据包进行传输,每个数据包都会包含一个表头和一个载荷。

表头和载荷的比例取决于数据包的大小和传输内容。在小型数据包中,表头可能会占据很大的比例,而载荷相对较小;在大型数据包中,表头和载荷的比例可能会更加平衡。在一些应用中,为了提高数据传输的效率,数据包的表头和载荷可能会进行压缩和优化,以便减少传输时间和网络流量。

HTML 协议示例

以下是一个HTTP协议的示例:

GET /example HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: en-US,en;q=0.9
Connection: keep-alive

该HTTP协议示例由以下几个部分组成:

请求行(Request Line):该行描述客户端想要进行什么操作以及操作的目标。示例中的请求行为 GET /example HTTP/1.1,其中 GET 表示客户端请求获取指定资源,/example 是请求的资源路径,HTTP/1.1 表示使用的HTTP协议版本。

请求头(Request Header):该部分提供了客户端关于请求的其他信息,例如所使用的浏览器、接受的文档类型等等。示例中的请求头包括 Host、User-Agent、Accept、Accept-Language、Connection 等字段,它们分别表示请求的主机地址、客户端浏览器的信息、接受的文档类型、首选语言和连接方式。

空行(Blank Line):请求头和请求体之间必须有一个空行。

请求体(Request Body):对于 GET 请求,请求体通常为空,因为 GET 请求不需要发送数据。

该HTTP协议示例表示客户端向服务器发起一个 GET 请求,请求获取 www.example.com 网站上的 /example 资源。客户端的请求头提供了浏览器和接受文档类型等相关信息,以便服务器返回正确的响应。

TCP 协议

以下是一个TCP协议的示例:

0000   12 34 56 78 9a bc de f0 00 11 22 33 44 55 66 77
0010   88 01 22 33 44 55 66 77 01 02 03 04 05 06 07 08
0020   09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18
0030   19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28
0040   29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38
0050   39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48
0060   49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58
0070   59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68
0080   69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78
0090   79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88
00a0   89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98
00b0   99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8
00c0   a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8
00d0   b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8
00e0   c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8
00f0   d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8

该TCP协议示例由以下几个部分组成:

源地址和目的地址:前20个字节表示源地址和目的地址,分别为 12 34 56 78 9a bc de f0 和 00 11 22 33 44 55 66 77。

端口号:源端口号为 88 01,目的端口号为 22 33。

序号和确认号:前16个字节表示序号和确认号,分别为 88 01 22 33 44 55 66 77 和 01 02 03 04 05 06 07 08。序号是发送方将要发送的下一个字节的编号,确认号是接收方期望接收的下一个字节的编号。

TCP头部长度:4位二进制数,表示TCP头部长度占总数据包长度的比例,本示例中为 5。

控制标志:6个标志位,包括URG、ACK、PSH、RST、SYN和FIN。本示例中ACK标志位被置为1,表示确认号是有效的。

窗口大小:前16个字节表示窗口大小,本示例中为 05 06。

校验和:前16个字节表示校验和,用于检测TCP报文在传输过程中是否被修改或损坏。

紧急指针:前16个字节表示紧急指针,用于指示接收方在收到紧急数据时,应该如何处理。

以上内容共计20个字节,是TCP协议头部的基本组成部分。在TCP头部之后是载荷(Payload),也就是真正要传输的数据。在该示例中,TCP协议头部共占用了20个字节,而载荷部分是剩余的数据部分,长度可能不定,取决于实际传输的数据。

TCP协议是一种可靠的传输协议,其头部的各个字段提供了必要的信息,以保证数据的可靠传输,例如序号、确认号、窗口大小等等。控制标志位则提供了TCP协议的基本控制功能,例如建立连接、关闭连接、确认数据等。校验和则用于检测数据的完整性,确保数据在传输过程中没有被篡改或丢失。