目录
1.简单介绍一下TCP/IP协议
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
2.TCP/IP协议的组成
TCP/IP协议参考了OSI模型(Open System Interconnect),OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层,而在TCP/IP协议中七层模型被简化成了四层模型,从下到上分别是链路层,网络层,传输层,应用层。下图为OSI模型与TCP/IP协议的图解:
从上图可以看出TCP/IP协议可以说是简化版的OSI模型。在TCP/IP协议中的每层都各自不同的协议,它们都在各自的层域发挥这不同的作用,接下来我们来说一下传输层中的两个特别重要大的协议——TCP与UDP,以及它们的区别。
3.TCP/IP协议中tcp/udp的区别
1.TCP协议(Transport Control Protocol)全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。比如,当你传输文件时,你要求文件传输过程中保证文件完整的进行传输就需要用到TCP协议。TCP之所以有这样的作用是因为它的特殊传输机制:TCP协议在传输和建立的过程中采用了“三次握手”与“四次挥手”的机制。
-
三次握手
1)建立连接时,客户端向服务端发送一个标志为SYN=1和一个序列号seq=j,客户端进入SYN_SENT状态,等待服务端的确认。
2)服务端收到来自客户端的SYN=1和seq=j,知道了想与自己产生连接,之后把SYN与ACK都置为1,让ack=j+1并产生一个随机的seq=k,将这些数据再次发给客户端以确认连接的请求,之后服务端进入SYN_RCVD状态。
3)客户端接收到来自服务端的数据并检查ACK是否为1和ack是否为j+1,如果正确将ACK设为1,seq=k+1,并将这些数据再次发给服务端,如果服务端接收到ACK=1,ack=k+1则正确,客户端与服务端都进入ESTABLISHED状态及建立连接成功。
1)客户端向服务端发送一个FIN=M来关闭客户端到服务端的数据传输,客户端进入FIN_WAIT1状态。
2)服务端接收到来自客户端的FIN数据,并发送一个ACK给客户端及ack=M+1,之后服务端进入CLOSE_WAIT状态。
3)服务端发送一个FIN=N用来关闭服务端到客户端的数据传输,服务端进入LAST_ACK状态。
4)客户端接收到服务端的数据FIN=N并进入TIME_WAIT状态,并发送一个ACK给客户端及ackN+1,服务端进入CLOSE状态。
上面就是“三次握手”,“四次挥手”的TCP机制,确保了在使用TCP协议的时候保证数据的完整性与连续性。下面是上述机制提出的问题:
1.为什么是三次握手,四次挥手?少一次不行吗?
通俗点来讲就是双方必须都要知道对面已经收到自己的信息,假设A向B发送了一段信息然后B接收到了信息并向A回了一段确认信息,到了这里只进行了两次握手但这时A并没有向B回了一段确认信息,这样就导致B不知道A是否能够进行数据的传输,就导致不能够形成稳定的连接。“四次挥手同理”如果只进行三次挥手就导致B没有收到来自A的确认信息,就不能够有效的关闭它们之间的连接。
2.UDP协议(User Datagram Protocol)全称是用户数据报协议是一个简单的面向无连接的,不可靠的数据报的传输层协议。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
TCP协议与UDP协议对比的图解
总的来说,TCP就像电话通信一样可以有稳定连续的数据传输,但它是专一的。而UDP更像是书信传递信息,它发过去之后并不知道接下来是否能够和对方建立有效的连接,但它可以像不同的对象发送信息。
标签:协议,udp,ACK,IP,TCP,服务端,客户端 From: https://blog.csdn.net/2201_75685905/article/details/140417784