image-20230302093720428
Please do not throw sausage pizza away.

Networking 计算机网络

Computer networking refers to interconnected computing devices that can exchange data and share resources with each other. These networked devices use a system of rules, called communications protocols, to transmit information over physical or wireless technologies.

计算机网络是指可以相互连接并交换数据以及共享资源的计算设备。这些网络设备使用一套被称为通信协议的规则系统,在物理或无线技术上传输信息。

Begin by studying the OSI Model. This model will assist in constructing an understanding of the linked topics, and help you contextualize the items linked to the Networking, Security, and Protocols node. Higher level networking concepts may be implemented and named differently across cloud providers. Don’t let this confuse you - the basics of TCP/IP are useful and used in the same ways across all implementations.

首先要学习OSI模型。这个模型将帮助构建对相关主题的理解,并帮助您将与网络、安全和协议节点相关联的项目放入上下文中。在云服务提供商中,更高级别的网络概念可能会以不同的实现和名称出现。不要让这让您感到困惑,TCP/IP 的基础知识在所有实现中都是有用的并且以相同的方式使用。

计算机网络7层协议是指OSI(开放系统互联)参考模型中的七层网络协议。这个模型将计算机网络分为七层,每一层都有自己特定的功能和协议。

这七层分别是:

  1. 物理层(Physical Layer):负责数据在物理媒介上的传输,例如电缆、光纤和无线信号等。
  2. 数据链路层(Data Link Layer):负责将物理层传输的比特流组装成数据帧,并进行差错检测和纠正。
  3. 网络层(Network Layer):负责在不同网络之间进行路由选择和数据包转发,以便实现跨越多个网络的数据传输。
  4. 传输层(Transport Layer):提供端到端的数据传输服务,包括数据分段、流量控制和错误恢复等。
  5. 会话层(Session Layer):负责在不同计算机之间建立、管理和终止会话连接。
  6. 表示层(Presentation Layer):负责数据格式的转换和加密,以便确保不同计算机之间的数据交换能够正确无误地进行。
  7. 应用层(Application Layer):提供各种网络应用程序的服务,如电子邮件、Web浏览器、文件传输和视频会议等。

这七层网络协议模型为不同层次之间的协议定义提供了一个统一的框架,使得不同厂商可以开发出符合标准的网络设备和协议,实现网络互通和互操作


Application Layer 应用层

计算机网络的应用层是网络协议栈的最高层,为用户提供了网络服务和应用程序的接口。应用层协议定义了在不同计算机之间进行通信时所使用的语法、语义和同步规则。它提供各种网络应用程序的服务,如电子邮件、Web浏览器、文件传输和视频会议等。

常见的应用层协议有:

  1. HTTP(超文本传输协议):用于在Web浏览器和Web服务器之间传输超文本数据。它是现代Web应用的基础协议之一,支持许多不同类型的数据和多种HTTP方法。
  2. FTP(文件传输协议):用于在计算机之间传输文件。FTP允许用户上传和下载文件,并允许用户执行文件和目录操作。
  3. SMTP(简单邮件传输协议):用于电子邮件的发送和接收。SMTP通常用于发送邮件,而POP3和IMAP用于接收邮件。
  4. DNS(域名系统):用于将域名转换为IP地址。DNS允许用户使用易于记忆的域名来访问互联网上的网站,而无需记住它们的IP地址。
  5. Telnet:用于远程登录到计算机。它允许用户从一个计算机上连接到另一个计算机上,并在另一个计算机上运行命令。
  6. SSH(安全外壳协议):用于通过互联网安全地远程登录到计算机。SSH提供了加密和身份验证功能,以确保安全性。
  7. DNSSEC(DNS安全扩展):提供一种机制,用于保护DNS查询免受欺骗攻击。
  8. SNMP(简单网络管理协议):用于管理网络设备,如路由器、交换机和服务器。
  9. NTP(网络时间协议):用于同步计算机的时间。它允许计算机通过互联网获取精确的时间,以确保计算机和网络设备具有一致的时间。
  10. RTP(实时传输协议):用于实时多媒体数据传输,如音频和视频。它允许实时传输,同时提供一定的容错机制,以确保数据的完整性和可靠性。

浏览器是一个应用,不是应用层。但在浏览器中,请求的Header、Cookies是存在于应用层当中的。

Leopold:那 WebRTC 用到了上面的哪种协议呢?

ChatGPT:WebRTC使用了多种应用层协议,其中包括

STUN(会话穿透实用程序):用于解决NAT(网络地址转换)阻挡的问题,以便两个设备可以直接通信。

TURN(中继用户数据协议):用于在无法进行直接通信的情况下中继数据,以便两个设备之间进行通信。

ICE(交互式连接建立):它是一个框架,用于选择和管理STUN和TURN服务器,以确保WebRTC通信可以在不同网络环境下实现。

SCTP(流控制传输协议):用于传输多个流,并提供流级别的控制和错误处理。

除此之外,WebRTC还使用了一些其他协议,如DTLS(数据报传输层安全协议)用于安全数据传输,SRTP(安全实时传输协议)用于保护音视频数据的隐私和安全。

Leopold:那 FRP 属于应用层协议吗?

ChatGPT:FRP(Fast Reverse Proxy)是一种用于在内网中将本地服务器暴露到公网中的工具,它不是一种正式的网络协议,而是一种实现内网穿透的应用程序。因此,FRP本身并不属于应用层协议,而是一个应用程序。

FRP使用TCP协议或UDP协议作为其底层传输协议,通常使用HTTP协议作为其应用层协议,因此它需要应用层协议来处理连接和数据传输。但是,它本身不是一种正式的应用层协议,而是一种特定应用场景下的工具。


Presentation Layer 表示层

在计算机网络中,表示层是OSI参考模型中的第6层,它主要负责数据的表示、编码和解码,以便确保不同计算机之间的数据交换能够正确无误地进行。表示层的主要功能包括以下几个方面:

  1. 数据格式化:表示层负责将应用层的数据转换为网络能够识别和传输的格式。例如,将文本数据转换为二进制格式或将图片数据转换为JPEG或PNG格式等。
  2. 数据加密和解密:表示层可以使用各种加密算法来确保数据的安全传输。例如,SSL和TLS协议使用公钥加密技术来确保Web浏览器与Web服务器之间的数据传输安全。
  3. 数据压缩和解压缩:表示层可以对数据进行压缩,以减少数据传输所需的带宽和传输时间。例如,使用ZIP或RAR格式对文件进行压缩。
  4. 数据转换和编码:表示层可以将不同字符集之间的数据进行转换和编码,以便确保数据的正确传输和显示。例如,将Unicode编码的数据转换为ASCII编码的数据。
  5. 数据解析和校验:表示层可以对数据进行解析和校验,以确保数据的正确性和完整性。例如,在图像传输过程中,使用CRC校验来检测和修复数据传输过程中的错误。

在计算机网络中,表示层与应用层、会话层和传输层之间紧密相连,它们共同构成了网络协议栈中的上层协议。

Leopold:那浏览器 gzip 压缩的过程是在表示层进行的吗?

ChatGPT:是的,浏览器对HTTP请求进行Gzip压缩的过程通常发生在表示层。在HTTP协议中,使用Content-Encoding头来指示数据是否经过压缩,gzip是其中一种常用的压缩算法。

具体来说,当浏览器发送HTTP请求时,它可以设置Accept-Encoding头,告知服务器它支持哪些压缩算法。如果服务器发现浏览器支持Gzip压缩,它可以将响应数据压缩后发送,并设置Content-Encoding头告知浏览器响应数据已经压缩。浏览器在接收到响应数据时,会检查Content-Encoding头,如果发现数据已经压缩,它会使用Gzip算法解压缩响应数据,然后再进行后续的处理。

因此,浏览器对HTTP请求进行Gzip压缩的过程通常是在表示层进行的。

Leopold:那视频网站中,对于视频的解码也是在表示层进行的吗?

ChatGPT:在计算机网络中,表示层主要负责数据的表示、编码和解码,以便确保不同计算机之间的数据交换能够正确无误地进行。在视频网站中,对于视频的解码是在应用层和表示层之间的一个过程,它通常涉及到应用层的多媒体播放器和表示层的数据解码器。

具体来说,当用户在视频网站上观看视频时,视频数据通常是通过HTTP协议传输到用户的计算机上的。当用户的浏览器接收到视频数据后,它会将视频数据传递给应用层的多媒体播放器进行处理。多媒体播放器会将视频数据解析为音频和视频流,并将它们传递给表示层的数据解码器进行解码。表示层的数据解码器可以使用各种解码算法,如H.264、AVC、VP9等,将音频和视频数据解码为可播放的格式,并传递给操作系统的显示设备进行显示。

因此,对于视频的解码过程通常不是在表示层进行的,而是涉及到应用层和表示层之间的一个过程。

Leopold:那视频被切片的过程和表示层有关系吗?

ChatGPT:视频切片是视频网站中常用的一种技术,它将一个完整的视频文件分成多个小的视频片段,以便更快地加载和播放视频。视频切片是在应用层进行的,与表示层没有直接关系。

具体来说,在视频切片的过程中,应用层的服务器将原始视频文件分割成多个小的视频片段,并为每个视频片段生成一个唯一的URL地址。当用户请求观看视频时,浏览器会通过HTTP协议请求视频片段的URL地址,服务器会返回对应的视频片段。浏览器可以根据返回的视频片段数据,通过应用层的多媒体播放器进行播放。

在视频切片的过程中,虽然表示层没有直接参与,但是一些视频编码算法,如H.264、AVC、VP9等,可能涉及到表示层的数据编码和解码过程,以确保视频数据在传输和解码过程中能够被正确处理。因此,尽管视频切片的过程与表示层没有直接关系,但表示层仍然可以对视频数据的编码和解码过程产生影响。

Leopold:视频的画质和表示层有关系吗?

ChatGPT:视频的画质是由多种因素影响的,其中包括视频分辨率、帧率、编码方式、码率等等。在这些因素中,表示层的编码方式会对视频的画质产生影响。

表示层是计算机网络协议栈中的一个层次,主要负责数据的表示、编码和解码,以便不同计算机之间的数据交换能够正确无误地进行。在视频网站中,视频数据通常会使用一种编码算法进行压缩,以减小视频数据的传输带宽和存储空间。这些编码算法可以在表示层进行,例如H.264、AVC、VP9等。

不同的编码算法可以对视频数据进行不同程度的压缩和优化,从而影响视频的画质和文件大小。一般来说,使用高效的编码算法可以获得更小的文件大小和更高的画质。但是,高效的编码算法需要更多的计算资源和更长的编码时间,因此在实际应用中需要权衡文件大小、画质和编码时间等因素。

因此,视频的画质与表示层的编码方式有关系,不同的编码算法可以对视频的画质产生影响,而优秀的编码算法可以通过有效的压缩和优化来提高视频的画质和播放效果。


Session Layer 会话层

会话层是计算机网络协议栈中的一个层次,它位于表示层和传输层之间,主要负责建立、管理和终止会话。会话层提供了一种机制,使得在网络中的应用程序能够建立连接并交换数据,以实现应用程序之间的通信和交互。

会话层的主要功能包括:

  1. 建立、管理和终止会话:会话层允许应用程序建立连接并在连接上交换数据。它提供了一种机制,使得应用程序能够控制会话的创建、维护和终止。
  2. 会话同步:会话层允许应用程序在会话期间进行同步操作,以确保数据的一致性和完整性。
  3. 会话管理:会话层提供了一些机制,使得应用程序能够管理会话的属性和状态,以确保会话的正确运行。
  4. 安全性管理:会话层提供了一些机制,使得应用程序能够实现安全性管理,例如加密和身份验证等。

在实际应用中,会话层的功能通常会与其他层次的协议和机制相结合,以提供完整的网络服务和功能。例如,在互联网中,会话层的功能通常会与传输层的TCP协议相结合,以提供可靠的数据传输和连接管理等功能。

Leopold:SSL的建立和会话层有关系吗

ChatGPT:SSL(Secure Sockets Layer)是一种安全套接字层协议,它是在传输层协议(如TCP)之上建立的一种协议,用于在网络上进行安全通信。SSL协议的主要作用是提供数据的保密性和完整性,并对通信双方进行身份验证,以确保通信的安全性。

尽管SSL协议的实现是在传输层协议之上,但是SSL协议的建立涉及到会话层协议。SSL协议使用的是一种称为SSL握手协议的会话层协议,用于在客户端和服务器之间建立安全连接,并交换加密密钥和其他安全参数。具体来说,SSL握手协议包括以下步骤:

  1. 客户端向服务器发送握手请求,请求建立安全连接。
  2. 服务器回复握手响应,确认建立安全连接,并向客户端发送数字证书以进行身份验证。
  3. 客户端对数字证书进行验证,以确保服务器的身份。
  4. 客户端生成一个随机数,并使用服务器的公钥加密该随机数,并发送给服务器。
  5. 服务器使用自己的私钥解密客户端发送的随机数,并生成另一个随机数,并使用两个随机数共同生成会话密钥。
  6. 服务器向客户端发送加密的消息,使用会话密钥加密,并要求客户端也使用该密钥加密后续的通信。
  7. 客户端回复加密消息,使用会话密钥加密。

通过这些步骤,SSL握手协议能够建立安全连接,并实现数据的保密性和完整性。因此,虽然SSL协议的实现是在传输层协议之上,但是SSL协议的建立涉及到会话层协议。

Leopold:WebSocket在会话层都干了什么

ChatGPT:WebSocket是一种基于TCP协议的双向通信协议,可以在客户端和服务器之间建立长连接,实现实时通信。在会话层,WebSocket主要完成以下工作:

  1. 建立连接:客户端向服务器发送WebSocket握手请求,服务器返回握手响应。握手过程中包含了协议版本、握手协议、握手密钥等信息,用于确认连接的合法性。
  2. 维持连接:在建立连接之后,客户端和服务器之间可以持续通信,直到一方关闭连接。为了保持连接的有效性,WebSocket协议使用心跳机制,定期发送ping消息以检测连接状态。
  3. 数据传输:在连接建立之后,客户端和服务器可以通过WebSocket进行双向通信。客户端和服务器可以发送和接收文本或二进制数据,实现实时通信和数据交换。

Leopold:那WebSocket用到了哪些协议,属于7层协议的哪个?

ChatGPT:WebSocket 协议是一种独立的协议,它是基于 HTTP 协议的,但是它并没有绑定在 HTTP 协议上,可以使用独立的 TCP 连接。从协议栈的角度来说,WebSocket协议属于应用层协议。虽然它的握手阶段使用了 HTTP 协议,但是它不属于 HTTP 协议的一部分。在 WebSocket 协议建立连接之后,数据传输过程中不再使用 HTTP 协议,而是使用 WebSocket 协议的数据帧格式进行数据传输。


Transport Layer 传输层

计算机网络的传输层是位于网络层和应用层之间的一个重要的协议层。传输层主要负责为不同的应用程序提供可靠的数据传输服务,它定义了数据传输的协议、端口号、流量控制、错误恢复等方面的规则和机制。

常见的传输层协议有两种:TCP(传输控制协议)和UDP(用户数据报协议)。它们之间的主要区别在于:

  • TCP是面向连接的协议,UDP是无连接的协议。TCP在传输数据前需要建立连接,而UDP则直接将数据发送出去,不需要建立连接。
  • TCP提供可靠的数据传输服务,可以确保数据包的可达性、完整性和顺序性。UDP则不保证数据传输的可靠性,数据包可能会丢失或者乱序。
  • TCP对网络带宽的使用更为谨慎,采用拥塞控制机制来避免网络拥塞。UDP则没有拥塞控制机制,可能会对网络带宽造成过度的占用。

在应用层需要使用传输层服务时,需要指定端口号。端口号是一个16位的整数,用来标识不同的应用程序。常见的应用程序使用的端口号已经被规定,如HTTP使用的端口号为80,FTP使用的端口号为21等。

Leopold:请列出传输层所有的协议

ChatGPT:传输层的主要协议包括:

  1. 传输控制协议(Transmission Control Protocol,TCP):TCP是一种面向连接的、可靠的传输协议,它提供了流控制、拥塞控制、错误恢复等功能,用于确保数据的可靠传输。
  2. 用户数据报协议(User Datagram Protocol,UDP):UDP是一种无连接的、不可靠的传输协议,它提供了数据包的发送和接收功能,但不保证数据包的可靠性和顺序性。
  3. 实时传输协议(Real-time Transport Protocol,RTP):RTP是一种面向数据流的协议,主要用于音视频传输,它提供了时间戳、序列号、负载类型等功能,同时提供控制信息,如反馈信息和流媒体同步信息等。
  4. 实时传输控制协议(Real-time Transport Control Protocol,RTCP):RTCP是RTP的控制协议,用于监控网络状况、控制码率等,以保证音视频传输的稳定性和流畅度。
  5. 数据报协议(Datagram Congestion Control Protocol,DCCP):DCCP是一种面向连接的、可靠的传输协议,它提供了拥塞控制和流控制等功能,主要用于流媒体、语音、游戏等实时应用。
  6. 资源预留协议(Resource Reservation Protocol,RSVP)

Network Layer 网络层

计算机网络层是OSI(开放系统互联)参考模型中的第三层,也称为网络层。它的主要功能是通过选择合适的路由路径将数据包从源主机发送到目标主机。网络层的作用是将传输层的数据分段并添加一些额外的信息,以便在网络中进行路由和传输。具体来说,网络层的功能包括:

  1. IP地址分配:网络层为设备分配唯一的IP地址,以便在网络中唯一地标识它们。
  2. 路由选择:网络层通过使用路由算法来选择最佳的路径,以便将数据包从源主机发送到目标主机。
  3. 数据分段和重新组装:网络层将传输层的数据分成更小的数据包(称为数据报),并在每个数据包中添加一些额外的信息(如源IP地址,目标IP地址和序列号),以便在网络中传输。
  4. 差错检测和纠正:网络层使用一些差错检测和纠正机制,以确保数据在传输过程中不会被损坏或丢失。
  5. 流量控制:网络层使用流量控制机制来控制网络中的数据流量,以避免网络拥塞和数据包丢失。

总之,网络层是计算机网络中非常重要的一层,它确保了数据的可靠传输和路由选择。


计算机网络数据链路层是OSI(开放系统互联)参考模型中的第二层,它位于物理层之上,负责将网络层的数据报转换为物理层的比特流。数据链路层的主要任务是将数据分帧并在物理层上进行传输。

数据链路层的主要功能包括:

  1. 帧封装:将网络层传输的数据报分成一个个数据帧,每个数据帧包含了一个帧头和帧尾,并添加了错误检测和纠正的措施。
  2. 访问控制:数据链路层控制不同设备在同一物理链路上的访问,以避免发生冲突。常见的访问控制技术包括CSMA/CD(载波侦听多路访问/冲突检测)和令牌环网。
  3. 差错检测和纠正:数据链路层通过添加差错检测和纠正的机制来保证数据在传输过程中不会被损坏或丢失。常见的机制包括循环冗余校验(CRC)和海明码。
  4. 流量控制:数据链路层通过流量控制来控制数据的传输速率,避免发生拥塞。
  5. 数据帧同步:数据链路层通过添加同步字段来保证帧与帧之间的同步性,以确保数据的正确接收。

数据链路层在计算机网络中扮演着非常重要的角色,它为物理层提供了可靠的数据传输服务,并为网络层提供了数据帧的传输和接收服务。数据链路层的性能直接影响整个计算机网络的性能和稳定性。


Physical Layer 物理层

计算机网络物理层是OSI(开放系统互联)参考模型中的第一层,它位于网络层之下,是计算机网络中最底层的层次。物理层的主要任务是将数字数据转换为模拟信号,以便在物理介质上传输,同时也负责将模拟信号转换为数字数据,以便交给上层的数据链路层。

物理层的主要功能包括:

  1. 传输媒介的特性:物理层负责研究和描述计算机网络传输介质的特性,如传输速率、传输距离、信道带宽等。
  2. 数字信号的编码和解码:物理层负责将数字数据转换为模拟信号,并将模拟信号转换为数字数据,以便上层的数据链路层进行数据传输。
  3. 传输介质的访问:物理层负责控制多个设备对同一传输介质的访问,以避免发生冲突。常见的传输介质访问控制技术包括CSMA/CD(载波侦听多路访问/冲突检测)和令牌环网。
  4. 传输介质的接口标准:物理层负责制定传输介质的接口标准,以确保不同设备之间可以互相通信。
  5. 差错检测和纠正:物理层通过添加差错检测和纠正的机制来保证数据在传输过程中不会被损坏或丢失。常见的机制包括奇偶校验和CRC(循环冗余校验)。

总之,物理层是计算机网络中最底层的层次,它负责将数字数据转换为模拟信号,并在物理介质上传输,同时也负责将模拟信号转换为数字数据,以便交给上层的数据链路层。物理层的性能直接影响整个计算机网络的性能和稳定性。