这两种模型都是网络通信中重要的参考模型,他们的设计和功能有一些区别。
首先OSI,OSI七层模型,也被称为开放系统互联参考模型,是一种在国际标准化组织(ISO)中使用的网络互联模型。这个模型将网络通信的过程分为了七个独立但相互关联的层次,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中,应用层直接面向用户提供服务,例如文件传输、电子邮件、远程登录等。
相比之下,TCP/IP四层模型是一种更为实际的网络通信模型,通常被用于互联网协议族(IPv4)中。这个模型包括应用层、传输层、网络层和网络接口层。其中,应用层同样直接为用户提供服务,例如电子邮件传输、网络浏览等。
这两种模型的共同点在于他们都采用了层次结构的概念,能够提供面向连接和无连接两种通信服务机制。然而,他们也存在一些显著的区别。
1.两者的层次结构不同。OSI模型分为七层,而TCP/IP模型分为四层。这意味着OSI模型对网络通信过程的划分更为细致,但同时也增加了理解和实现的复杂性。TCP/IP模型的四层结构相对更为简洁,更容易理解和实现。
2.两者对可靠性的要求不同。OSI模型对可靠性的要求相对更高,它在设计时考虑了各种错误和异常情况,并通过冗余和恢复机制来确保数据的完整性和可靠性。而TCP/IP模型则更注重效率和速度,因此在一些场景下可能会牺牲一定的可靠性。
3.两者的应用范围也有所不同。OSI模型是一个理论模型,并没有成熟的产品与之对应。而TCP/IP模型则是互联网的实际标准,被广泛应用于各种网络设备和操作系统中。
总的来说,OSI七层模型和TCP/IP四层模型都是网络通信中的重要参考模型,它们的设计和功能各有特点。在实际应用中,我们可以根据实际需求来选择适合的模型。
三次握手过程描述:
1.第一次握手:客户端向服务器发送一个同步数据包(同步SYN=1,确认ACK=0,序号seq=x)
2.第二次握手:服务器同意,并回复客户端一个数据包(同步SYN=1,确认ACK=1,序号seq=y,确认号ack=x+1)
3.第三次握手:客户端收到服务器的确认之后,再给服务器发送一个数据包。数据包的TCP首部内容:同步SYN=0,确认ACK=1,序号seq=x+1,确认号ack=y+1
TCP协议选择三次握手而不是两次或四次,主要是出于对可靠性和效率的综合考虑。
首先来看为什么不能选择两次握手。TCP协议是全双工的,即发送和接收双方都需要进行数据的确认和交互。在两次握手的情况下,发送方发送请求后,接收方只能确认收到请求,但无法确认请求是否被接收方正确处理。这种情况下,如果请求在传输过程中丢失或损坏,接收方因为没有进行确认,就无法发现请求存在问题,这将导致连接不可靠。因此,两次握手无法满足TCP协议对可靠性的要求。
那为什么不能选择四次握手呢?三次握手已经能够保证数据的可靠传输,而四次握手虽然在某些情况下可能增加可靠性,但同时也增加了握手过程的复杂性和延迟。四次握手的多余步骤并没有带来明显的效益提升,反而可能因为复杂的处理过程而降低TCP协议的效率。因此,从效率和实用性的角度考虑,三次握手是最优选择。
综上所述,TCP协议选择三次握手而不是两次或四次,是为了在保证数据可靠传输的同时,尽可能提高传输效率。三次握手既可以确认发送方和接收方之间的连接建立,也可以确保数据在传输过程中的正确性,是一种高效且可靠的网络通信协议。
第一次挥手:首先客户端向服务器发送连接释放的请求报文(数据包),并停止发送数据。(终止FIN=1,确认ACK = 0)
第二次挥手:服务器收到连接释放的报文之后,给客户端发送确认报文。从客户端到服务器这个方向上的连接就释放了,TCP连接处于半关闭状态。(终止FIN=0,确认ACK=1,序号位seq=v,确认号ack=u+1)
第三次挥手:若服务器已经没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文。(确认ACK=1,终止FIN=1)
第四次挥手:客户端收到服务器的连接释放报文段后,向服务器发出确认报文。(确认ACK=1,终止FIN = 0)
简单来讲:流量控制是为了控制发送方发送速率,保证接收方来得及接收。
TCP
连接的每一方都有固定大小的缓冲空间,TCP
的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失,从而实现流量控制。
TCP
使用的流量控制是 利用滑动窗口实现。
滑动窗口是一种流量控制技术,它在计算机网络中用于控制数据包的发送和接收。
具体来说,滑动窗口协议在数据流的发送和接收过程中,通过动态地调整窗口大小来控制数据包的发送和接收速率。窗口大小即指在任意一段时间内可以发送或接收多少数据包。当窗口大小达到上限时,发送方或接收方必须停止发送或接收数据包,直到窗口大小再次调整。
滑动窗口协议有两种类型:固定窗口大小和动态窗口大小。在固定窗口大小协议中,窗口大小是固定的,而在动态窗口大小协议中,窗口大小可以动态调整。
滑动窗口协议的应用非常广泛,例如在网络传输、文件传输、数据库事务处理等领域都可以看到它的身影。它不仅可以防止网络拥塞,提高数据传输的效率和可靠性,还可以用来控制数据的流量,确保接收方能够来得及处理接收到的数据。
拥塞控制就是为了防止过多的数据注入到网络中,控制的目的就是避免「发送方」的数据填满整个网络,控制「发送方」的数据发送量。
TCP
主要通过四个算法来进行拥塞控制:慢启动、拥塞避免、拥塞发生、快速恢复
如下图:(阻塞发生时的超时重传)
如下图:(阻塞发生时的快速重传)
TCP(传输控制协议)和UDP(用户数据报协议)之间存在以下区别:
类型 |
特点 |
性能 |
应用场景 |
首部 |
||
是否面向连接 |
传输可靠性 |
传输效率 |
所需资源 |
|||
TCP |
面向连接 |
可靠 |
慢 |
多 |
要求通信数据可靠 (如文件传输、邮件传输) |
20个字节-60个字节 |
UDP |
无连接 |
不可靠 |
快 |
少 |
要求通信速度快 (如音频、视频) |
8个字节 |
总的来说,TCP和UDP都有各自的优点和使用场景。TCP的主要优点是其可靠性和顺序性,而UDP的主要优点则是其简单性和实时性。选择使用哪一种协议主要取决于应用程序的具体需求和网络环境。