什么是协议
从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:
第一次,传输文件名,接收方接收到文件名,应答OK给传输方;
第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;
第三次,传输文件内容。同样,接收方接收数据完成后应答oK表示文件内容接收成功。
由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的规则即为协议。
这种仅在A、B之间被遵守的协议称之为原始协议。当此协议被更多的人采用,不断的增加、改进、维护、完善。最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议就成为一个标准协议。最早的ftp协议就是由此衔生而来。
Tcp协议注重数据的传输Http协议着重于数据的解释。
物理层和数据链路层:
网络层:
传输层:
应用层:
OSI模型(Open Systems Interconnection model)是一种用于描述计算机网络体系结构的概念框架。它将计算机网络通信的不同方面划分为七个不同的层级,每个层级都负责特定的功能。以下是OSI模型的七个层级:
物理层(Physical Layer):负责传输比特流,描述物理媒介的传输电气和物理特性。
数据链路层(Data Link Layer):处理帧(Frame)的传输和错误检测,确保可靠的点到点传输。
网络层(Network Layer):处理网络中的数据包路由选择、转发和控制。
传输层(Transport Layer):提供端到端的可靠传输服务,并处理数据包的分段和重组。
会话层(Session Layer):负责建立、管理和终止应用程序会话。
表示层(Presentation Layer):处理数据的格式和编码,实现在不同系统中的数据格式之间的转换。
应用层(Application Layer):为用户提供网络应用服务,例如电子邮件、文件传输和远程登录等。
OSI模型提供了一种通用的参考框架,帮助人们理解和描述计算机网络中不同层级的功能。它启发了许多标准和协议的设计,比如TCP/IP协议就是根据OSI模型进行设计的。
需要注意的是,实际上,并不是所有的网络都严格遵循OSI模型的七层结构,而是更常用的TCP/IP模型,将其中的物理层和数据链路层合并为一个层级。但OSI模型仍然是计算机网络中的一个重要概念。
TCP/IP模型是一种计算机网络体系结构,也是现代互联网所基于的核心协议体系。相比于OSI模型,TCP/IP模型将网络通信划分为四个层级,具体如下:
网络接口层(Network Interface Layer):
网络层(Internet Layer):
传输层(Transport Layer):
应用层(Application Layer):
TCP/IP模型是当前互联网中使用最广泛的网络体系结构,它提供了一种灵活而可扩展的方式来实现网络通信。虽然TCP/IP模型与OSI模型的层级划分不完全相同,但它们共同为网络通信提供了重要的基础。
TCP/IP通信是基于TCP和IP协议的网络通信过程,以下是TCP/IP通信的简要描述:
建立连接:
数据传输:
数据的可靠传输和流量控制:
连接终止:
在TCP/IP通信过程中,IP协议负责对数据进行分组和路由传输,将数据从源主机发送到目标主机。而TCP协议负责提供可靠的、面向连接的服务,保证数据的顺序、完整性和可靠性。
需要注意的是,每个通信步骤都可能面临网络延迟、数据丢失或其他错误,因此TCP/IP通信具有一定的容错性和自适应能力,以保证数据的可靠传输。
在TCP/IP网络中,数据的封装是指将要传输的数据逐层封装成不同的协议数据单元(Protocol Data Units,PDU),以便在网络中进行传输。每一层协议都会在数据上添加自己的头部信息,形成一个封装的数据包,然后通过下一层传递。
以下是TCP/IP网络中数据的封装过程:
应用层封装:
传输层封装:
网际层封装:
网络接口层封装:
封装的过程是由发送端进行的,每一层协议都会在数据上添加相应的头部信息,形成一个完整的封装数据包。在传输过程中,这些封装的数据包会逐层解析,每个协议层都会处理相应的头部信息,然后将数据传递给高层协议,最终到达目标主机。
以太网帧协议:根据mac地址,完成数据包传输
ARP协议:根据ip地址获得mac地址
ARP表(Address Resolution Protocol Table),也称为ARP缓存或ARP映射表,是在操作系统或网络设备中存储IP地址与MAC地址之间映射关系的表格。
ARP表用于在发送数据时,根据目标IP地址获取对应的MAC地址,从而实现在链路层上的直接通信。当设备收到一个数据包时,它首先检查目标IP地址是否存在于自己的ARP表中,如果存在就直接使用相应的MAC地址,如果不存在则使用ARP请求来获取目标设备的MAC地址,并将其添加到ARP表中,以便后续通信使用。
ARP表中的每一项通常包含以下信息:
ARP表是动态生成和维护的,它会随着网络中设备的通信不断更新。通常,ARP表中的条目会有一个存活时间(TTL)限制,超过一定时间没有使用就会被删除或更新。
可以使用命令行工具(如Windows的arp -a
命令或Linux的arp -n
命令)来查看设备上的当前ARP表内容。
总的来说,ARP表是用于存储IP与MAC地址之间映射关系的表格,它在实现网络通信时起着重要作用。
下面是IPv4数据报的格式,整理成表格形式:
字段 | 长度(位) | 描述 |
---|---|---|
版本 | 4 | IP协议的版本号(通常为4,表示IPv4) |
首部长度 | 4 | IP头部的长度(单位为4字节,最小值为5,表示20字节的IP头部) |
区分服务 | 8 | 数据报的服务质量要求,如优先级、延迟、带宽等 |
总长度 | 16 | 整个IP数据报的长度(包括IP头部和数据部分的字节数) |
标识 | 16 | 用于唯一标识一个IP数据报的片段 |
标志 | 3 | 指示IP数据报的分片状态 |
片偏移 | 13 | 分片数据的相对于原始数据的偏移量(以8字节为单位) |
生存时间 | 8 | 数据报在网络中的最大生存时间(跳数) |
协议 | 8 | 标识上层协议(如TCP、UDP)或其他协议的类型 |
头部校验和 | 16 | 校验IP头部的完整性 |
源IP地址 | 32 | 源主机的IP地址 |
目标IP地址 | 32 | 目标主机的IP地址 |
选项 | 可变 | 用于扩展IP头部的功能 |
数据部分 | 可变 | 承载上层协议的数据 |
IP地址:可以在网络环境中,唯一标识一台主机。
端口号:可以网络的一台主机上,唯一标识一个进程。
IP地址+端口号:可以在网络环境中,唯一标识一个进程。
TCP(Transmission Control Protocol)数据报是TCP协议在网络通信中传输数据的基本单位。TCP数据报由TCP头部和数据部分组成。
下面是TCP数据报的基本格式:
字段 | 长度(字节) | 描述 |
---|---|---|
源端口号 | 2 | 发送端口号 |
目标端口号 | 2 | 接收端口号 |
序列号 | 4 | 用于对TCP数据包进行排序和重组。表示从发送端发出的第一个数据字节的序号。 |
确认号 | 4 | 表示期望收到的下一个数据字节的序号,用于确认已收到的数据。 |
数据偏移 | 4 | 表示TCP头部的长度,以32位字中的偏移量数表示。最小值为5,表示20字节的TCP头部。 |
保留 | 3 | 保留字段,保留将来使用 |
控制标志 | 9 | 用于控制TCP连接的状态和操作,包括ACK、SYN、FIN等标志。 |
窗口大小 | 2 | 表示接收方缓冲区的大小,用于流量控制和拥塞控制。 |
校验和 | 2 | 用于校验TCP头部和数据部分的完整性。 |
紧急指针 | 2 | 表示紧急数据的位置。紧急数据是指优先于正常数据进行传输和处理的数据。 |
选项和填充 | 可变 | 可选字段,用于某些特殊功能和额外的控制选项。 |
数据部分 | 可变 | 承载应用层数据。 |
TCP数据报是TCP协议进行可靠数据传输的基本单位。TCP通过序列号、确认号、校验和等机制来保证数据的可靠性和正确性。同时,TCP还支持流量控制、拥塞控制、连接管理等功能。
C/S模型的优点:
C/S模型的缺点:
B/S模型的优点:
B/S模型的缺点:
综合来看,C/S模型适合需要复杂交互和处理能力的应用,而B/S模型适合需要跨平台、易于维护和大规模部署的应用。选择哪种模型取决于具体的应用需求和性能要求。