文章目录
- 一、TCP协议概述
- 二、TCP三次握手和四次挥手
- 三、UDP协议概述
- 四、TCP和UDP对比及应用场景
一、TCP协议概述
TCP (Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由ETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP) 是同一层内另一个重要的传输协议。
TCP报文结构
①源端口:标识发送方的应用进程。
②目的端口:标识接收方的应用进程。
③序号:保证数据传输的有序性。
④确认号:对收到的数据进行确认。
⑤Flag字段(8位):ACK-确认号标志,置1表示确认号有效,表示收到对端的特定数据;RST-复位标志,置1表示拒绝错误和非法的数据包,复位错误的连接;SYN-同步序号标志,置1表示同步序号,用来建立连接;FIN-结束标志,置1表示连接将被断开,用于拆除连接。
⑥Option字段(可选项):MSS最大报文段长度,通过置位,协商能承载的TCP数据的大小。
TCP序列号及确认号:
TCP端口号:
源端口随机分配,目标端口使用知名端口(Well-known port) ;
应用客户端使用的源端口号一般为系统中未使用的且大于1023;
目的端口号为服务端开启的服务所侦听的端口,如HTTP缺省使用80。
TCP端口号、序列号及确认号:
二、TCP三次握手和四次挥手
传输机制-TCP三次握手:
传输机制-TCP四次挥手:
面向字节流:
流量控制-滑动窗口机制:窗口大小决定了在收到确认前可以发送的字节数。
可靠传输-停止等待协议:
拥塞控制:
RST标志位:用于复位因某种原因导致的错误连接,也用来拒绝非法数据和请求。如果接收到RST位,通常发生了某些错误。其可能被接收方或者中间设备置为。
RST置为的原因:①服务器端口没有打开。②服务器响应太慢,用户终止连接。③网络攻击等。
三、UDP协议概述
UDP是User Datagram Protocol的简称,中文 名是用户数据报协议,是OSI (Open System Interconnection,开放式系统互联)参考 模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
UDP报文结构:
UDP协议特点:
①UDP是无连接的,在传输数据之前,不需要进行复杂的三次握手来建立连接。
②在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。
③传输结束后,也不用再用四次握手握手来结束连接。
四、TCP和UDP对比及应用场景
TCP适用场景:
①当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。
②TCP一般用于文件传输(FTP HTTP对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP对数据准确性要求高,非紧急应用), 远程登录(TELNET SSH对数据准确性有一定要求,有连接的概念)等。
UDP适用场景:
①在高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中 的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。
②在轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3个IP数据包,然后数据传输,1个IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5个IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP,SNMP,DNS,DHCP等。
③在对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具 体需要通过应用层协议提供可靠性,不用像TCP那么严格。)