计算机网络体系结构 计算机网络的五种结构
网络协议
网络协议是计算机网络中用于数据通信的规则和标准。它定义了网络中不同设备之间的通信方式、数据的格式、传输过程中的控制策略等,以确保数据能够在网络中准确、高效地传输和处理。
OSI 协议模型
OSI(开放系统互联)协议模型是一个参考模型,用于说明应用程序如何在网络上进行通信。它由国际标准化组织(ISO)于1984年制定,旨在规范不同厂商设备之间的通信协议。OSI模型包括七层,每一层都有特定的功能,为两个端点之间的通信做出贡献:
1. 物理层:该层定义了网络的物理特性,例如传输数据的电缆、连接器和信号等。
2. 数据链路层:该层管理跨物理网络连接的数据流,执行错误检测和纠正等功能。
3. 网络层:该层提供逻辑寻址和路径选择,使不同网络之间的数据得以传输。
4. 传输层:该层确保数据在端点之间可靠地传递,处理诸如拥塞控制和消息分段等问题。
5. 会话层:该层建立、维护和结束应用程序之间的会话。
6. 表示层:该层处理数据格式和编码,确保一个应用程序发送的数据可以被另一个应用程序读取。
7. 应用层:该层代表实际使用网络进行通信的应用程序,例如电子邮件客户端、Web浏览器和文件传输程序。
TCP/IP
TCP/IP是一个网络通信协议集合,由两个主要协议组成:传输控制协议(Transmission Control Protocol,TCP)和Internet协议(Internet Protocol,IP)。这两个协议共同工作,以确保数据在不同计算机之间的传输。
TCP负责将数据分为多个数据包(segment),通过互联网将它们传输到目标计算机。TCP提供面向连接、可靠的数据传输服务,能够自行处理丢失或损坏的数据包。如果有任何丢失或损坏的数据包,TCP会请求发送端重新发送这些数据包。
IP负责寻址和路由数据包。每个数据包都带有源地址和目标地址,IP根据这些地址找到最佳路径将数据包从源计算机发送到目标计算机。IP还能够处理网络拥塞等问题,以确保数据能够在网络上高效地传输。
TCP/IP协议具有广泛的应用,被用于Internet上的通信以及许多其他类型的计算机网络中。它的优点包括:稳定性、通用性、可扩展性、开放性和兼容性。
TCP/IP 协议模型
TCP/IP协议模型是一个四层的网络通信协议模型,它由以下四个层次组成:
1. 网络接口层(Network Interface Layer):也称为数据链路层,负责将数据帧从一个节点传输到另一个节点,以及物理寻址和错误检测等任务。这一层通常与底层的硬件设备进行交互,如网卡。
2. 网际层(Internet Layer):也称为IP层,负责实现不同网络之间的通信,通过选择最佳路径将数据包从源主机送到目标主机。该层还处理数据片断重组、差错检验和拥塞控制等问题。
3. 传输层(Transport Layer):在TCP/IP协议中,实现传输层的主要协议是TCP和UDP。TCP(Transmission Control Protocol)提供可靠传输服务,保证数据传输的完整性和可靠性;而UDP(User Datagram Protocol)提供无连接的传输服务,适合于实时应用场景。
4. 应用层(Application Layer):位于协议堆栈的最高层,负责处理特定的应用程序协议,例如Web浏览器、电子邮件、文件传输等。
相比于OSI参考模型,TCP/IP协议模型少了会话层和表示层,这两层的功能通常由应用层来完成。
TCP/IP协议族
TCP/IP协议模型是一个四层的网络通信协议模型,它由以下四个层次组成:
1. 网络接口层(Network Interface Layer):也称为数据链路层,负责将数据帧从一个节点传输到另一个节点,以及物理寻址和错误检测等任务。这一层通常与底层的硬件设备进行交互,如网卡。
2. 网际层(Internet Layer):也称为IP层,负责实现不同网络之间的通信,通过选择最佳路径将数据包从源主机送到目标主机。该层还处理数据片断重组、差错检验和拥塞控制等问题。
3. 传输层(Transport Layer):在TCP/IP协议中,实现传输层的主要协议是TCP和UDP。TCP(Transmission Control Protocol)提供可靠传输服务,保证数据传输的完整性和可靠性;而UDP(User Datagram Protocol)提供无连接的传输服务,适合于实时应用场景。
4. 应用层(Application Layer):位于协议堆栈的最高层,负责处理特定的应用程序协议,例如Web浏览器、电子邮件、文件传输等。
相比于OSI参考模型,TCP/IP协议模型少了会话层和表示层,这两层的功能通常由应用层来完成。
TCP报文的头部结构
非常抱歉,可能是图片链接失效或被限制所致。以下是一个简单的TCP报文结构示意图:
0 7 15 23 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| | |
| Seq. | Acknowledgment|
| | |
+--------+--------+--------+--------+
| Data | |U|A|P|R|S|F| |
| Offset | Res. |R|C|S|S|Y|I| |
| | |G|K|H|T|N|N| |
| | | | |T| | | | |
+--------+--------+--------+--------+
| Window Size | Checksum |
+--------+--------+--------+--------+
| Urgent Pointer (optional) |
+--------+--------+--------+--------+
| Options (optional) |
+--------+--------+--------+--------+
其中,每个字段的含义如下:
- Source Port和Destination Port:源端口号和目标端口号,用于标识发送方和接收方的应用程序。
- Sequence Number和Acknowledgment Number:序号用于标识发送方发送的每一个字节,而确认号表示期望收到的下一个字节的序号。
- Data Offset、Reserved和Flags:Data Offset表示TCP头部的长度,以4字节为单位;Reserved字段保留未来使用;Flags包含URG、ACK、PSH、RST、SYN和FIN六个标志位,用于表示TCP状态或操作。
- Window Size:窗口大小表示接收方可以接受的数据量,用于流量控制。
- Checksum:校验和用于检查TCP报文是否在传输过程中出现错误。
- Urgent Pointer和Options:Urgent Pointer用于指示一些重要的数据,如异常信息、错误提示等;Options包含一些附加的信息,如时间戳、最大报文段长度等。
TCP状态
Flags是TCP协议头中的6个标志位,它们分别为URG、ACK、PSH、RST、SYN和FIN。它们的含义如下:
1. URG(URGent):表示紧急指针是否有效。如果该位被设置为1,就表明紧急指针有效,数据包中的数据应该被尽快处理。
2. ACK(ACKnowledgment):表示确认序号是否有效。如果该位被设置为1,就表明确认序号有效,即收到的数据包已经被正确接收。
3. PSH(PuSH):表示接收方应该立即将数据交给应用程序处理,而不是将其缓存起来。
4. RST(ReSeT):表示连接复位。当该位被设置时,会强制断开连接并重置连接状态。
5. SYN(SYNchronization):表示同步序号。在建立一个新的TCP连接时,客户端向服务器发送一个带有SYN标志的数据包,用于协商序号。
6. FIN(FINish):表示结束连接。当该位被设置时,表示发送方已经没有数据需要发送,并请求关闭连接。
TCP的三次握手四次挥手
TCP是一种面向连接的、可靠的传输层协议,它使用三次握手建立连接和四次挥手断开连接。下面是TCP的三次握手和四次挥手过程:
1. 三次握手(建立连接)
第一次握手:客户端向服务器发送SYN报文,其中SYN标志位设置为1,表示客户端请求建立连接,同时客户端随机选择一个序列号seq。
第二次握手:服务器收到SYN报文后,向客户端发送SYN+ACK报文,其中SYN和ACK标志位都设置为1,表示服务器已经收到客户端的请求,同时服务器也请求建立连接,并且服务器随机选择一个序列号seq,确认号ack设置为客户端的seq+1。
第三次握手:客户端收到服务器的SYN+ACK报文后,向服务器发送ACK报文,其中ACK标志位设置为1,确认号ack设置为服务器的seq+1,表示客户端已经收到服务器的响应,连接建立成功。
2. 四次挥手(断开连接)
第一次挥手:客户端向服务器发送FIN报文,其中FIN标志位设置为1,表示客户端请求关闭连接。
第二次挥手:服务器收到FIN报文后,向客户端发送ACK报文,其中ACK标志位设置为1,确认号ack设置为客户端的seq+1,表示服务器已经收到客户端的请求,但是服务器还没有准备好关闭连接。
第三次挥手:服务器准备好关闭连接后,向客户端发送FIN报文,其中FIN标志位设置为1,表示服务器请求关闭连接,并且服务器随机选择一个序列号seq。
第四次挥手:客户端收到服务器的FIN报文后,向服务器发送ACK报文,其中ACK标志位设置为1,确认号ack设置为服务器的seq+1,表示客户端已经收到服务器的请求,连接已经关闭。
序列号(seq)和确认号(ack)
TCP 的序列号(seq)和确认号(ack)是用来提供可靠传输的机制,主要作用和功能如下:
1. 数据排序:TCP 通过对每个数据包分配唯一的序列号(seq),保证数据按照正确的顺序接收。接收方会根据seq来对数据进行排序,确保后续的数据能够正确处理。
2. 可靠性:TCP 使用确认号(ack)机制来保证数据的可靠传输。当发送方把数据发送给接收方时,接收方会回复一个带有确认号的报文段,告诉发送方该数据已经被接收。如果发送方在一定时间内没有收到确认信息,就认为数据丢失了,并重新发送数据,直到接收方成功接收,从而实现了数据的可靠传输。
3. 流量控制:TCP 通过连接双方交换的窗口大小(Window Size)来控制数据的流量,以避免由于数据包过多导致网络拥塞的情况发生。发送方根据接收方的窗口大小确定自己可以发送的数据长度,从而避免发送过多的数据,导致网络拥塞和数据丢失。
4. 确认数据:TCP 的确认号也可以用于确认数据已经被接收并处理。当接收方收到数据时,会回复一个带有确认号的报文段,告诉发送方这些数据已经被正确处理。同时,发送方还能够根据确认号确定哪些数据已经成功接收,以便在必要的时候进行重传或超时处理。
5. 应对攻击:序列号(seq)和确认号(ack)是防御网络攻击的重要手段之一。通过合理地生成seq和ack,可以有效地避免网络攻击,比如SYN洪水攻击等。
综上所述,TCP 的序列号和确认号是实现可靠传输的关键要素,其主要功能包括了数据排序、提供可靠性、流量控制、确认数据以及应对攻击。
序列号和确认号 工作流程
TCP 的序列号和确认号机制在实际的工作中主要流程如下:
1. 建立连接:在 TCP 连接建立时,每个方向会分配一个初始序列号(Initial Sequence Number,ISN)。客户端和服务器之间分别交换 ISN,并将其用于后续的数据传输。此外,在连接建立完成后,双方也会互相确认对方收到 ISN。
2. 发送数据:当发送方想要发送数据时,它将数据分割成多个数据段。发送方为每个数据段分配一个序列号,这个序列号表示了该数据段第一个字节的编号。然后发送方将数据段和序列号封装成报文段并发送给接收方。
3. 接收数据:当接收方收到数据时,它会检查这些数据段的序列号,以便正确地重组数据。如果接收方收到的数据段包含所有的字节,则将发送一个带有确认号的报文段来告诉发送方数据已经成功接收。如果数据段不完整,则接收方只会发送确认消息,而不会重组数据。
4. 确认数据:当发送方收到接收方的确认消息时,它会更新它期望接收的下一个序列号。这个值等于原始序列号加上已经成功接收的数据量。如果发送方没有收到确认消息,则会重新发送数据,直到接收方成功接收。
5. 流量控制:在数据传输过程中,接收方会根据它的可用缓冲区大小和窗口大小来通知发送方可以发送多少数据。如果接收方的缓冲区已满,则它会通知发送方停止发送数据,直到有更多的空间。
6. 关闭连接:当一方要关闭连接时,它会向另一方发送一个带有 FIN 标志位的报文段,并等待对方确认。接收方收到 FIN 后会立即发送一个 ACK 确认消息,然后通知应用程序连接已经关闭。
综上所述,TCP 的序列号和确认号机制在实际工作中起着至关重要的作用,确保了数据传输的可靠性和正确性。这个机制不仅能够自动调节流量控制,还能够防止网络攻击及其他干扰因素对数据传输造成的影响。