TCP和UDP协议都是传输层协议,这两种协议都是来处理进程和进程的通信,例如我们在淘宝上买东西,我们只关心买家和卖家的情况,不关心其运输过程,这就是传输层协议所做的事情。
TCP协议的特点有:有连接,可靠传输,面向字节流,全双工。相较于UDP,TCP更加注重的可靠性。
有连接:
有无连接可以理解为打电话和发微信的区别,有连接就相当于打电话,我们需要等到对方接通的时候才可以说一下事情,而无连接相当于发微信,直接一顿发,也不管对方在线不在线,也不管发出去的消息会不会丢失。所以有连接是用来保证可靠传输的。
可靠传输:
什么是可靠传输,以上面讲到的场景为例,当我们打电话的时候,我们说了一些事情对方发出了回应,表示自己听到了,这就是可靠传输,对方接受了我的信息并进行了回复。不可靠传输是,我们不知道对方收没收到我们发出去的消息,我们对其无法进行确定,这就是不可靠传输。
面向字节流:
TCP的传输数据使用的是字节流进行传输,面向字节流也是为了保证其可靠性,下面讲到TCP的一些机制的事情会进行介绍。
TCP报文格式:
TCP的报文格式相比于UDP来说就复杂许多。
首先源端口和目的端口,就像淘宝买了个东西,源端口就是卖家地址,目的端口就是买家地址,从哪里到哪里。
序列号和确认序列号以及下面的大部分都是为了一些机制所设置的。
TCP的机制:
1.确认应答:
确认应答机制是为了保证可靠性所设计的,当我们发送一条数据给接收方,接收方如果收到了我们发送的数据,就需要进行应答。而我们的发送的数据可能有一种后发先至的情况,所以我们就引入了序列号,来帮我我们处理后发先至的情况,如果我们发送的序列号为1000,则应答的是1001,就代表1000我已经收到了,请发1001的数据。这样我们就对后发先至进行了处理,也完成了确认应答这样的机制。
2.超时重传:
超时重传也是为了保证可靠性而设计的,我们知道网