TCP握手协议
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(SynchronizeSequenceNumbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
B. 一文搞定 UDP 和 TCP 高频面试题!
在求职面试中,UDP和TCP是常被问到的计算机网络概念。无论春招秋招,面试官几乎都会涉及这些问题,尤其在作者参加的50场面试中,几乎每轮都有涉及。了解这些问题不仅能提升面试自信,还能给面试官留下深刻印象。本文将总结常见的面试问题,帮助你应对相关知识点。
- UDP和TCP特点:UDP是无连接、尽力而为、不保证顺序,支持多对多通信,而TCP是面向连接、可靠传输、有流量控制和拥塞控制,一对一通信。
- 首部格式:UDP只有8字节,包括源端口、目的端口等;TCP首部复杂,包含序号、确认号、窗口值等控制位,用于保证数据完整性和可靠性。
- 三次握手:TCP建立连接,防止连接请求失效,确认双方接收和发送能力正常。
- 四次挥手:关闭连接,确保数据传输完成,服务端等待所有数据发送完再发送FIN,客户端等待服务器确认关闭。
- 短连接与长连接:短连接是一次操作就断开,长连接可多次数据交换,管理复杂但可复用连接。
- 粘包和拆包:TCP基于字节流,可能导致数据包重组,需要通过应用层协议处理。
- 可靠传输与流量控制:TCP通过超时重传和滑动窗口机制确保数据完整,流量控制防止接收方过载。
掌握这些核心知识点,面试时就能从容应对,展现你的专业知识。最后,不要忘了实践和复习,让知识真正运用到实际中。
C. 什么是tcp以及tcp与udp的区别
UDP
UDP是面向无连接的通讯协议,UDP数据包含目的端口号和源端口号信息。主要优点速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送;缺点是传输数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,也不重复发送,不可靠。
TCP
是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次握手,主要优点是TCP在数据传输时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠;缺点是相对于UDP速度慢,要求系统资源较多。
TCP和UDP区别:
TCP是面向连接的协议,而UDP是无连接的协议,意味着当一个客户端和一个服务端通过TCP发送数据前,必须先建立连接,建立连接的过程被称为TCP三次握手;
TCP提供交付保证,意味着一个使用TCP协议发送的信息是保证交付给客户端的,如果消息在传输过程中丢失,将重发;UDP是不可靠的,不提供任何交付的保证,一个数据报包在运输过程中可能会丢失;
消息到达网络的另一端时可能是无序的,TCP协议将会为你排序,UDP不提供任何有序性的保证;
TCP速度比较慢,而UDP速度比较快,因为TCP必须建立连接,以保证消息的可靠交付和有序性,需要做比UDP多的事;
TCP是重量级的协议,UDP协议则是轻量级的协议。一个TCP数据报的报头大小最少是20个字节,UDP数据报的报头固定是8个字节。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。