Skip to main content

计算机网络(开发向)

你好,这里是一份针对开发人员的计算机网络学习文档。

这里不敢奢求把所有关于计算机网络的知识都呈现给您,也无法把各个重要的知识点都逐个剖析。

这里希望能列举出一些常用的网络知识,并且通过简要的介绍和索引,帮助您迅速掌握开发时所需的计算机网络知识。

基础概念

计算机网络是一种连接多台计算机和设备的系统,使它们可以相互通信和共享信息。这些网络可以覆盖局域网(LAN)、广域网(WAN)和全球互联网等各种规模。

TCP/IP四层模型

TCP/IP四层模型是目前被广泛采用的一种网络分层模型,由以下4层组成:

  1. 应用层(Application Layer):这是网络通信的顶层,负责处理应用程序和用户之间的通信。
  2. 传输层(Transport Layer):传输层负责管理数据的传输,确保数据从源到目的地的可靠传输。
  3. 网络层(Network Layer):网络层处理数据包的路由和转发,确保数据包从一个网络节点到达另一个网络节点。
  4. 数据链路层(Link Layer):数据链路层负责将数据包分成帧,并在物理媒体上传输这些帧。它还负责错误检测和校正,以确保数据的完整性。

关于TCP/IP四层模型的更多细节,可以查看此文档:

看到这里,大家很自然地要问,为什么网络要分层?此处我引用Java Guide的文档

复杂的系统需要分层,因为每一层都需要专注于一类事情。网络分层的原因也是一样,每一层只专注于做一类事情。

更多细节请直接查看Java Guide的文档

IP地址、子网掩码和路由

  • IP地址是在网络中唯一标识设备的地址,分为IPv4和IPv6。
  • 子网掩码用于划分网络中的子网,它决定了哪些部分是网络地址,哪些部分是主机地址。
  • 路由是决定数据包如何在不同网络之间传输的过程,通常由路由器来完成。

DNS和域名解析

域名系统(DNS)的作用

域名系统(DNS)的作用是将人类可读的域名转换为IP地址,以便计算机能够定位特定的服务器。

域名解析的过程

  • 当您在浏览器中输入域名时,计算机会首先查找本地DNS缓存,如果找不到,则向DNS服务器发出请求。
  • DNS服务器将域名解析为相应的IP地址,并返回给计算机。

端口和协议

什么是端口?

你可以将端口看作是计算机上的门,每个门都通向不同的应用程序或服务。就像房子有前门、后门和窗户一样,计算机也有许多门(端口),每个门用于不同的目的。

比如,80号端口通常是Web服务器的门,它用于接收Web浏览器发送的请求。当你在浏览器中输入网址时,浏览器会使用80号端口与Web服务器建立连接,这样你就能够看到网页内容。

所以,端口就是一种标识不同应用程序或服务的方式,它们帮助数据在计算机之间流动,确保每个应用程序都能够准确地收到它需要的数据。

常见端口和它们的用途

  • 80端口:HTTP通信。
  • 443端口:HTTPS通信。
  • 25端口:SMTP邮件传输。
  • 22端口:SSH远程登录。
  • 21端口:FTP文件传输。

协议与端口的关系

协议规定了数据包的格式和通信方式,每个协议通常使用特定的端口进行通信,以确保数据包到达正确的应用程序。

HTTP/HTTPS协议

HTTP(Hypertext Transfer Protocol)是一种用于在Web上传输数据的协议。HTTP请求和响应是Web通信的基础。

HTTP请求和响应结构

你可以想象HTTP请求就像你在餐厅点菜一样。请求由以下几部分组成:

  • 请求方法(Method):你告诉服务员你要点什么。常见的方法有GET(获取数据)、POST(提交数据)、PUT(更新数据)等。
  • 请求URL(Uniform Resource Locator):你告诉服务员你要点哪道菜,指示了要访问的资源的位置。
  • 请求头(Headers):你告诉服务员你的餐点偏好,包括各种元数据,如浏览器类型、所需语言等。
  • 请求体(Body):你具体描述你要点的菜的细节,用于传输一些数据,通常在POST请求中使用。

HTTP响应则是服务员把菜端到你面前的过程,包括以下部分:

  • 状态码(Status Code):你点菜后服务员告诉菜是否能上桌,常见的状态码有200(成功)、404(未找到)、500(服务器错误)等。
  • 响应头(Headers):服务员给你的菜配上餐巾纸和餐具,包含了与响应相关的信息。
  • 响应体(Body):服务员给你的菜,包含实际的数据,如网页内容或API返回的数据。

HTTPS的加密机制

HTTPS(Hypertext Transfer Protocol Secure)是HTTP的加密版本,用于安全传输数据。它通过以下方式保护数据:

  1. 加密数据传输: HTTPS使用加密算法,将从客户端到服务器的数据加密。这意味着,即使有人截获了数据包,他们也无法轻易解密其中的内容。
  2. 身份验证: HTTPS还通过数字证书来验证服务器的身份。这确保了你连接的是正确的服务器,而不是恶意的伪装者。
  3. 数据完整性: HTTPS还使用消息摘要算法来确保数据在传输过程中没有被篡改。如果数据在传输过程中被修改,接收方将会意识到,并且可以拒绝处理损坏的数据。

常见HTTP状态码

HTTP状态码是服务器在处理请求时返回的三位数字代码,用于指示请求的处理结果。以下是一些常见的HTTP状态码以及它们的含义:

  1. 200 OK: 这表示服务器成功处理了请求,并返回了请求的内容。这是最常见的状态码,表示一切正常。
  2. 404 Not Found: 这表示服务器无法找到请求的资源。通常是因为URL错误或资源被删除了。
  3. 500 Internal Server Error: 这表示服务器在处理请求时发生了内部错误。这可能是服务器配置问题或应用程序错误。
  4. 302 Found (重定向): 这表示请求已被临时重定向到其他位置。浏览器会自动跟随重定向。
  5. 401 Unauthorized: 这表示请求需要身份验证,但未提供有效的身份验证信息。

更多内容

HTTP 常见问题

HTTP vs HTTPS(应用层)

HTTP 常见状态码总结(应用层)

TCP和UDP协议

TCP和UDP是两种不同的传输层协议,适用于不同的应用场景。

TCP和UDP的特点比较

  • TCP是面向连接的,可靠性高,适用于需要可靠数据传输的应用。
  • UDP是面向无连接的,传输速度快,适用于实时性要求较高的应用。

TCP 与 UDP 的区别(重要)

TCP的可靠性和流量控制

TCP通过确认和重传机制确保数据的可靠传输,同时使用滑动窗口来进行流量控制,以避免网络拥塞。

TCP 传输可靠性保障(传输层)

UDP的轻量性和用途

UDP不具备TCP的可靠性,但适用于音视频流媒体、在线游戏等对实时性要求较高的应用。

RESTful API

RESTful API是一种用于构建网络应用程序的架构风格。它基于HTTP协议,并遵循一些约定和规则,以便于不同系统之间的通信和数据交换。这种风格强调了以下几个关键点:

  1. 资源(Resources):在RESTful API中,数据和功能被视为资源,每个资源都有一个唯一的标识符(通常是URL)。例如,一篇博客文章、一张图片或一个用户都可以是资源。
  2. HTTP方法:RESTful API使用HTTP方法来执行操作。常用的HTTP方法包括GET(获取资源)、POST(创建新资源)、PUT(更新现有资源)、DELETE(删除资源)等。
  3. 状态无关性(Statelessness):每个请求都应该包含足够的信息,以便服务器能够理解请求,而不需要依赖之前的请求。这使得API更容易扩展和维护。
  4. 自描述性(Self-descriptive):RESTful API的响应应该包含足够的信息,以便客户端能够理解如何处理响应数据。通常,响应会包括HTTP状态码、响应头和响应体。
  5. 统一接口(Uniform Interface):RESTful API应该具有统一的接口,这意味着无论使用什么编程语言或框架,都能够遵循相同的规则来访问API。

通过使用RESTful API,开发人员可以轻松地构建和扩展网络应用程序,因为它提供了一种清晰的方式来处理数据和功能。无论是在移动应用程序、Web应用程序还是其他类型的应用中,RESTful API都是一种流行的选择,因为它们简单易懂,可用性较高,适用于各种不同的应用场景。

更多资料:

REST - MDN Web 文档术语表:Web 相关术语的定义 | MDN

RestFul API 简明教程