一、TCP协议
TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP为了保证报文传输的可靠,给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发送一个确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失)将会被重传。
二、TCP协议特点
- 在数据正确性与合法性上,tcp用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和
- 在保证可靠性上,采用超时重传和捎带确认机制
- 在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传
三、TCP三次握手
- 第一次握手:客户端发送连接请求报文段,将SYN置为1,seq为x;然后客户端进入SYN-SEND状态,等待服务器的确认。
- 第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置ACK为x+1(seq+1);同时,自己还要发送SYN请求信息,将SYN置为1,seq为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN-RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK报文段,然后将ACK设置为y+1,向服务器发送ACK报文段。这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成tcp三次握手。
四、UDP协议
UDP是一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供简单的不可靠的信息传送服务。
五、UDP协议特点
udp报文没有可靠性保证、顺序保证和流量控制字段等,但udp协议的控制选项少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等