TCP/UDP的相关知识
- 传输层的作用
定义:包括TCP/UDP两种协议。TCP/IP通信过程中,需要指定应用程序,传输层必须指出这个具体的程序,为实现这一功能,使用端口号的识别码。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
1.1 通信处理
1.2 两种传输协议
TCP
TCP:提供可靠性传输,实行"顺序控制"或者“重发控制”机制。此外还具有“流控制”,“拥塞控制”提高网络利用率等众多功能。
UDP:面向不可靠性的数据报协议。UDP可以确保发送消息的大小,却不能保证消息一定会到达。此外,应用有时会根据自己的需要进行重发处理。
- 端口号
定义:用于识别同一台计算机中进行通信的不同应用程序。程序地址
数据链路和IP地址-》分别指MAC地址和IP地址。
MAC地址:用来识别同一链路中不同的计算机;IP地址识别TCP/IP网络中互连的主机和路由器。
2.1 根据端口号识别应用
2.2 通过IP地址,端口号,协议号进行通信识别
仅凭目标端口识别某一个通信是远远不够的。
如果目标端口号完全相同,此时可借助源端口号进行区分。
如果目标端口号和源端口号完全相同,此时根据源IP进行区分。
如果上述情况都相等,可根据协议号进行区分。
所以:UDP/TCP通信中通常采用5个信息来识别一个通信。分别是 源IP地址,目标IP地址,协议号,源端口号,目标端口号。
2.3 端口号的确定
确定端口号的方式:
(1)标准既定端口号
静态方法:每个应用程序都有其指定的端口号。但并不是可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。
(2)时序分配法
第二种方法称为时序分配的方法。服务器端有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。
客户端不必自己设置端口号,全权交给操作系统进行分配。
2.4 端口号协议
端口号由其使用的传输层协议决定。因此,不同的传输层协议可以使用相同的端口号。
-
udp
UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。它将应用程序发来的数据在收到那一刻立即按照原样发送到网络上的一种机制。
-
tcp
TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
4.1 TCP的特点及其目的
TCP通过校验和,序列号,确认应答,重发控制,连接管理以及窗口控制等机制实现可靠性的传输。
4.2 通过序列号与确认应答提高可靠性
当发送端的数据到达接受主机时,接收端主机会返回一个以及收到消息的通知,这个消息叫做确认应答。
TCP通过可靠的确认应答(ACK)实现可靠的数据传输。
如果接收端返回的确认应答丢失,而数据发送成功,这种情况也会导致发送端因没用收到确认应答而认为数据没有达到目的地,从而重新发送。
**序列号:**按顺序给发送数据的每一个字节都标上号码的编号。
接收端查询接收数据TCP首部中的序列号和数据长度,将自己下一步应该接收的序号作为确认应答返回,这样就可以实现可靠传输。
4.3 重发超时
重发超时:在重发数据之前,等待确认应答到来的那个特定的时间间隔。
如果超过这个间隔没有收到确认应答,发送端将进行数据重发。
重发的具体时间间隔怎么确定?
4.4 TCP以段为单位发送数据
发送数据包的单位:最大消息长度(MSS)。
TCP发送过程中,以MSS为单位将数据进行分割发送,进行重发时也是以MSS。
建立连接的SYN包相互通知对方网络接口MSS值,在两者之间选一个较小的作为MSS的值,发送数据。
4.5 利用窗口控制提高速度
利用窗口后,使得发送端不必每发一个段就进行一次确认应答的处理,窗口是比段更大的单位进行确认应答,发送端主机在发送了一个段以后不必要一直等待确认应答,而是继续发送。
窗口的大小是指无需等待确认而可以继续发送数据的最大值。
4.6 窗口控制与重发机制
窗口在一定程度上较大时,即使有少部分的确认应答丢失也不会进行数据重发,可以通过下一个确认应答进行确认。
接收端在没有收到自己所期望序号的数据时,会对之前收到的数据进行确认应答。发送端则一旦收到某个确认应答后,又连续3次收到同样的确认应答,则认为数据段已经丢失,需要重新发送。这种机制比超时机制可以提供更为快速的重发服务。
4.7 流控制
TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量-------------------流控制。
4.8 拥塞控制
处理拥塞机制的过程:记住
4.9 提高网络利用率的规范
- Nagle算法
延迟确认应答:
接收数据的主机每次立刻回复应答,可能会返回一个较小的窗口(因为刚接收完数据,缓冲区已满),当接收端收到这个小窗口的通知后,就会以它为上限发送数据,从而降低了网络的利用率。引入延迟机制,在收到数据后并不立即返回确认应答,而是延迟一段时间返回应答。
捎带应答:
根据应用层协议,发送出去的消息到达对端,对端进行处理以后返回一个回执。在此类通信中,TCP的确认应答和回执数据可通过一个包发送。------捎带应答,通过这机制,可以减少收发的数据量。
- 其他传输层协议
(1) UDP-Lite
(2) STCP
(3) DCCP
- UDP首部格式
- TCP首部格式
校验和与UDP相似,但是TCP的校验和无法关闭。