赞
踩
OSI(Open Systems Interconnection)是开放系统互连参考模型的缩写,它是一个定义得非常好的协议规范集,它为各种系统定义了一个层次结构和一套用于协调与控制各层活动的规则,模型有七层结构。OSI模型的七层结构及其简要描述:
层次 | 名称 | 简要描述 |
---|---|---|
1 | 物理层 (Physical Layer) | 定义了物理设备标准,如网络接口、传输介质等,负责传输原始比特流。 |
2 | 数据链路层 (Data Link Layer) | 在物理层提供的服务基础上,建立相邻节点之间的数据链路,进行差错控制和流量控制。 |
3 | 网络层 (Network Layer) | 负责为分组交换网上的不同主机提供通信服务,实现路由选择和分组转发。 |
4 | 传输层 (Transport Layer) | 提供端到端的通信服务,负责数据的分段、重组和差错控制,确保数据的可靠传输。 |
5 | 会话层 (Session Layer) | 负责建立、管理和终止会话过程,同步不同设备上的各种表示层实体。 |
6 | 表示层 (Presentation Layer) | 对应用层数据进行表示和转换,如数据压缩、加密和解密、数据格式转换等。 |
7 | 应用层 (Application Layer) | 为网络应用提供访问OSI环境的手段,定义应用进程间通信和交互的规则。 |
这个表格简洁地概述了OSI模型的每一层及其主要功能。需要注意的是,虽然OSI模型在理论上是一个完善的参考模型,但在实际应用中,TCP/IP协议族由于其简洁性和高效性而被广泛采用。
五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层。其中应用层对应 OSI 的上三层,下四层和 OSI 相同。五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构。TCP/IP五层协议栈:
名称 | 主要功能 | 主要协议/技术 |
---|---|---|
物理层 | 负责物理传输介质上比特流的传输 | 无(依赖于物理介质) |
数据链路层 | 负责将数据封装成帧,进行差错控制和流量控制 | 以太网、PPP |
网络层 | 负责数据包的路由和转发,实现不同网络之间的通信 | IP、ICMP、IGMP、ARP、RARP |
传输层 | 负责端到端的数据传输,提供可靠或不可靠的数据传输服务 | TCP、UDP |
应用层 | 提供网络应用服务,处理特定应用的数据格式 | HTTP、FTP、SMTP、DNS、SSH |
这个表格简要地概括了TCP/IP五层协议栈中每一层的主要功能以及该层使用的主要协议或技术。这些协议共同协作,确保数据能够正确、高效地从源地址传输到目标地址。
在TCP/IP五层协议栈中,数据并不是直接在各层之间传输的,而是经历了一个封装和解封装的过程。这个过程确保了数据从源地址到目标地址的可靠传输。以下是数据在各层之间传输的详细步骤:
层次 | 物理层 | 数据链路层 | 网络层 | 传输层 | 应用层 |
---|---|---|---|---|---|
数据类型 | 比特流 | 帧、数据帧 | 数据报、数据包 | 报文段、数据段 | 报文 |
添加部分 | 前导码 | MAC头部 | IP头部 | TCP头部 | 数据 |
万维网(简称WWW或Web)和域名系统(简称DNS)是互联网中两个重要的组成部分,它们各自在互联网的运作中扮演着关键角色。
P2P(Peer-to-Peer)与C/S(Client/Server)是计算机网络中两种常见的通信模式,P2P是一种去中心化的网络架构,适用于资源共享和实时通信;而C/S是一种中心化的架构,适用于需要集中管理和控制的应用场景。
定义:P2P是一种网络架构,其中每个设备(称为“对等点”或“节点”)都可以直接与其他设备通信,而不需要通过中央服务器。
特点:
应用场景:文件共享(如BitTorrent)、即时通讯(如Skype或某些在线游戏)。
定义:C/S架构中,有一个或多个服务器负责存储数据和处理请求,而客户端设备(如电脑、手机等)则发送请求给服务器并接收响应。
特点:
应用场景:Web应用(如网站)、数据库系统、电子邮件服务等。
web结构组件指的是构成Web系统的基础元素,这些组件共同协作,使得Web应用能够正常运行并提供服务,以下是一些Web结构组件:
组件名称 | 定义 | 作用 |
---|---|---|
代理(Proxy) | 中间服务器,用于转发客户端和服务器之间的请求和响应 | 提高性能、安全性或进行内容过滤 |
缓存(Cache) | 存储常用页面副本的地方,以减少网络带宽使用和加快页面加载速度 | 提高Web应用的响应速度 |
网关(Gateway) | 连接其他应用或服务的服务器,例如连接Web服务器到FTP服务器的中间件 | 协议转换和服务集成 |
Agent代理 | 发起HTTP请求的Web客户端,如浏览器、网络爬虫等 | 代表用户或系统发送HTTP请求 |
Web组件(Web Components) | 封装好的可复用的自定义元素,用于构建Web应用 | 提高Web开发的效率和可维护性 |
网络协议(Network Protocols) | 计算机之间通信的规则,如HTTP和HTTPS | 确保客户端和服务器之间能够正确通信 |
域名系统(DNS) | 将域名转换为IP地址的系统 | 使人们可以通过易记的域名来访问网站 |
域名服务器(Domain Name Server,简称DNS)是互联网中至关重要的基础设施之一,它负责将人类可读的域名(如example.com)映射到与之对应的IP地址(如192.0.2.1)。
假设一个客户端 A,想要查询 a.leetcode.cn 的 ip 地址,考虑缓存的情况。
http(超文本传输协议)是互联网上应用最为广泛的一种网络协议。HTTP 协议是用于从 Web 服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP 的工作原理是基于客户端-服务器架构。客户端(例如,Web 浏览器)向服务器(例如,Web 服务器)发送 HTTP 请求以获取资源(如 HTML 页面、图片、CSS 样式表、JavaScript 脚本等)。服务器响应这些请求,通过发送 HTTP 响应来提供所需的资源。
HTTPS(HTTP Secure)是在 HTTP 基础上加入了 SSL/TLS 加密技术,提供了安全的数据传输方式。
无连接:HTTP 协议是无连接的,即每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态:HTTP 协议是无状态的,协议对于事务处理没有记忆能力。服务器不知道客户端之前发送过什么请求,也不知道客户端下一次会发送什么请求。
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、POST、PUT、DELETE 等。每种方法规定了客户端与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
支持 B/S 模式:HTTP 支持客户端/服务器模式,客户端可以通过 HTTP 协议向服务器发送请求,服务器也可以通过 HTTP 协议将请求的内容返回给客户端。
网络编程中的 socket
是一种抽象层,它允许应用程序(通常称为“客户端”和“服务器”)通过计算机网络进行通信。socket
提供了一种跨平台、跨语言的网络编程接口,使得在不同的操作系统和编程语言中都可以使用类似的方式进行网络通信。
import socket # 创建一个 TCP socket 对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定到 IP 地址和端口号 server_address = ('localhost', 12345) server_socket.bind(server_address) # 开始监听连接请求 server_socket.listen(1) while True: # 接受连接请求并返回一个新的 socket 对象和客户端地址 client_socket, client_address = server_socket.accept() print(f"Accepted connection from {client_address}") # 接收并处理数据(这里只是简单地回显数据) data = client_socket.recv(1024) if data: print(f"Received: {data.decode()}") client_socket.sendall(data) # 回显数据给客户端 # 关闭连接 client_socket.close()
import socket # 创建一个 TCP socket 对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到服务器 server_address = ('localhost', 12345) client_socket.connect(server_address) try: # 发送数据 message = b'Hello, server!' client_socket.sendall(message) # 接收数据 data = client_socket.recv(1024) print(f"Received: {data.decode()}") finally: # 关闭连接 client_socket.close()
在这个示例中,服务器端创建一个 TCP socket 对象并绑定到本地地址和端口号上,然后开始监听连接请求。客户端也创建一个 TCP socket 对象并连接到服务器。一旦连接建立,客户端发送数据给服务器,服务器接收数据并回显给客户端。最后,双方关闭连接以释放资源。
传输层(Transport Layer)是计算机网络体系结构中的关键层次之一,主要负责两台计算机之间(或更准确地说,是两个主机中进程之间)的数据通信服务。
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的、面向数据报的传输层协议。它工作在OSI模型的传输层,为应用层提供了一种简单的、直接的数据传输服务。
TCP(Transmission Control Protocol,传输控制协议)是计算机网络中一种基于连接的、可靠的传输层协议。它提供了一系列机制来确保数据在端到端之间的可靠传输。
TCP(传输控制协议)通过一系列复杂的机制来确保数据的可靠传输。校验和、序列号和确认应答机制保证了数据的完整性和顺序性;超时重传机制避免了因网络原因导致的数据丢失;连接管理(三次握手与四次挥手)确保了连接的可靠建立和正确关闭;流量控制和拥塞控制机制则保证了网络的稳定性和高效性。以下是对这些机制的详细归纳:
滑动窗口机制:TCP利用滑动窗口机制实现流量控制,通过限制发送方窗口大小来防止发送速度过快导致接收方处理不及时而丢包。
窗口大小:TCP报头中有一个16位的窗口大小字段,表示接收端接收数据缓冲区的剩余大小。发送方根据接收方发送的窗口大小来调整自己的发送速度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。