1.TCP,UDP的区别?
tcp是基于连接的,点对点的,可靠的流式套接字。适用于传输文件等对准确性要求高,对实时性要求不高的传输。
udp是无连接的,端对端的,不可靠的报式套接字。适用于传输音视频等对实时性要求比较高的传输。
2.TCP,UDP每个字母分别代表什么?
传输控制协议(TCP,Transmission Control Protocol)
用户数据报协议(UDP,User Datagram Protocol)
3.tcp为什么是可靠连接?
校验和:端对端的校验和,目的是检测数据在传输过程中的变化,由发送端计算,接收端验证。如果接收端检测到有差错,tcp段会被丢弃,重新发送。
确认应答:ACK确认号和seq序列号,一应一答,保证数据包有序到达,避免了网络拥塞导致的丢包问题。
超时重传:发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送。
连接管理:三次握手和四次挥手。
流量控制(滑动窗口控制):利用滑动窗口实现流量控制,流量控制是为了控制发送方的发送速率,保证接收方来的及时接收。
最大消息长度:在建立TCP连接的时候,双方约定一个最大的长度(MSS)作为发送的单位,重传的时候也是以这个单位来进行重传。
拥塞控制:常见方法包括慢开始、拥塞避免、快重传和快恢复。最终目的是在保证网络利用率的同时,避免网络出现拥塞现象,确保数据能够稳定、高效的传输。
4.tcp的三次握手?
- 第一次握手:客户端向服务端发送请求,SYN置1,序号为seq=x
- 第二次握手:服务端收到客户端发送的数据包,向客户端发送一个应答,标志位ACK置1,确认号ack=x+1,序号seq=y
- 第三次握手:客户端收到服务端的应答后,向服务端发送最后的应答,标志位ACK置1,确认号ack=y+1
5.tcp的四次挥手?
- 第一次挥手:客户端向服务端发送请求断开的数据包,FIN标志位置1,序号seq=m
- 第二次挥手:服务端收到客户端请求的数据包后,会向client端发送应答,标志位ACK置1,确认号ack=m+1
- 第三次挥手:当服务端数据交换完成,也不需要通讯,向客户端发送断开数据包,FIN标志位置1,序号seq=n
- 第四次挥手:客户端向服务端发送应答,ACK置1,确认号ack=n+1
6.为什么连接的时候是三次握手,关闭的时候却是四次挥手?
TCP是可靠的通讯协议,是全双工通信。TCP三次握手的关键在于,序列号seq的交换确认,因为对于客户端和服务端来说,双方序列号的确认是可靠传输的关键。1、2步握手只能确定发送方收、发正常,并不能确定接收方也是收、发正常,增加了第3次握手,才能保证接收方也是收、发都正常。服务端收到客户端发来的关闭请求并不是立刻就关闭,还需要处理数据。