TCP三次握手与四次挥手分别是建立连接和断开连接需要执行的过程。
TCP:传输控制协议
TCP是TCP/IP体系中较为复杂的协议,是传输层中最重要的协议
一、TCP主要特点
- TCP是面向连接的传输层协议
- TCP提供可靠的交付服务
- TCP提供全双工通信
- TCP是面向字节流
二、TCP为什么可靠
因为推出了窗口这个概念(UDP命令的)
窗口分为固定窗口和滑动窗口
固定窗口
窗口的容量为1,如果窗口过小,当传输比较大的数据时需要不停的进行确认,这个时候就会造成很大的延迟
滑动窗口
就是一种流量控制技术。 它本质上是描述接收方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。若发送方收到接收方为0的TCP数据报,那发送方将停止发送数据,等到接收方发送窗口大小不为0的数据报的到来。
拥塞处理和流量控制
三、TCP三次握手
TCP在数据传输时要先建立连接,建立连接时要先通过三次握手
- 客户端向服务器端建立连接先发送一次数据
- 服务器响应端数据第二次握手
- 客户端又会响应数据端服务进行第三次握手
形象来说:
1、A找B,握手,我要和你进行连接 2、B说:好,我准备好了,你来和我进行连接吧 3、A说:好,我现在就来跟你进行连接 完成之后就可以传输数据了
3.1 为什么TCP建立要进行三次握手,目的是什么?
为了保证客户端与服务器端双方的数据收发能力都没什么问题。
1、客户端发送数据,若服务器能收到,S端就保证客户端的发送能力没问题 2、第二次握手,服务器端响应给客户端一段数据,若客户端能够接到,意味着服务端的接受能力以及发送能力都没问题 3、为了确认客户端的接受能力有无问题,若第三次握手服务器端接收到那就说明客户端的接受能力没有问题。
3.2 三次握手分别会发送什么数据
可以利用抓包软件来看
1、C —> S:SYN包,同步的意思,会发送一个序列号 Seq=0
2、S —> C:SYN,ACK=1(将序列号Seq=0 加1给到ACK,ACK是确认字符),自己序列号Seq=0
3、C —> S:Seq=1(因为第一次已经用过0,所以加1),ACK=1(第二次)
四、TCP四次挥手
就是将第2次握手的阶段数据分成2次发送
1、客户端发送一个FIN,关闭客户到服务器的信息传送 2、服务器收到一个FIN,返回一个ACK(确认字符) 3、服务端关闭客户端的连接,发送一个FIN给客户端 4、客户端收到FIN,返回ACK
形象来说: 哪个先把数据传输完,哪个先断开连接。先传输完的总是A
1、A:我要和你断开连接 2、B:我把数据传输完了,我跟你断开连接 3、B:我把数据传输完了 4、A:好,那我们来断开连接吧
为什么挥手要经过四次
主要是为了让我们S端在C端主动断开之后,还是允许给C端发送一些数据的。
因为客户端在主动断开连接时,首先会一个finish包,代表C不会再给S发数据了;S收到后,马上告诉C端,我已经知道你想跟我断开连接了,但是S端可能还有数据给你发送,随后S发完数据后给C发一个finish包,表示我今后不会再给你发送消息了。
五、UDP—用户数据报协议
UDP—用户数据报协议
UDP是在IP数据报服务之上增加了一些功能,增加了复用和分用的功能以及差错检测的功能
UDP主要特点
- 无连接的
- 尽最大的努力交付
- UDP面向报文且没有拥塞控制
- UDP开销较小,传输效率较高
六、TCP和UDP的区别
1、连接方面区别
TCP面向连接(如打电话要先拨号建立连接) UDP是无连接的,即发送数据之前不需要建立连接
2、安全方面区别
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。 UDP尽最大努力交付,即不保证可靠交付
3、传输效率的区别
TCP传输效率相对较低 UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信
4、连接对象数量的区别
TCP连接只能是点到点、一对一 UDP支持一对一,一对多,,多对一和多对多的交互通信。
|