网络通信都是基于IP协议来实现的,下面看看IP、UDP、TCP协议区别:
一、IP协议
假如有主机A和主机B两台主机,为了把一条数据发送给B,在茫茫网络中如何准确的找到主机B呢?我们知道每台主机都有唯一的外网IP,所以可以能IP来找到我们发送数据的目的地-->主机B。
在发送的过程,主机A会在网络层中把主机B的IP(目标IP)和主机A的IP(源IP)和其它一些信息组成一个IP头,并附加到数据包中,再通过网络的底层找到主机B,并在主机B的网络层解析IP头,然后把数据发送给主机B。
IP协议是个很底层的协议,只负责发送数据,至于到没到,或者到了之后交给主机B的哪个程序(如:QQ、微信、浏览器......)处理都没有说明。
传输过程:主机A-->网络层(附加IP信息)-->底层网络-->网络层(解析IP信息)-->主机B
二、UDP协议
因为IP协议只负责发送数据,为了能让主机B正确处理发送的数据,出现UDP协议。
UDP协议最重要的信息就是多了一个“端口”,因为第一个应用程序都有一个相应的端口,所以通过端口可以找到对应的处理程序。UDP的传输过程也比IP传输过程多了一个传输层
传输过程:主机A-->传输层(附加源端口和目标端口等信息)-->网络层(附加IP信息)-->底层网络-->网络层(解析IP信息)-->传输层(解析端口信息)-->主机B
UDP缺点:
1.没有重发机制,错误的数据包会直接丢掉;
2.只管发送,不知道目标主机能否收到信息;
3.大文件会被拆成小的数据块传输,但收到的时候会是无序的数据库,无法重新组成整个文件。
UDP优点:传输快,所以会应用在一些关注速度、但不那么严格要求数据完整性的领域,如在线视频、互动游戏等。
三、TCP协议
TCP可以看成是UDP的升级版。TCP协议是在传输层中添加一个TCP头(除了包括端口外,还包含了排列顺序的序号)。
TCP传输数据可分为三大步:
1.通过三次握手建立连接(在数据通信开始之前先做好两端之间的准备工作)
2.传输数据
3.通过四次挥手断开连接
三次握手:
1.客户端给服务端发送一个带有SYN标志的数据包(主机A-----(客户端的SYN数据包)------->主机B)。
2.服务端给客户端发送带有SYN和ACK标志得数据包(主机B-----(服务端的SYN、ACK数据包)------->主机A)。其中ACK为客户端的SYN+1
3.客户端给服务端发送带有ACK标志的数据包(主机A-----(ACK数据包)------->主机B)。其中ACK为服务端的SYN+1
传输过程:主机A-->传输层(附加源端口和目标端口、数据包的序号等信息)-->网络层(附加IP信息)-->底层网络-->网络层(解析IP信息)-->传输层(解析端口、序号信息)-->主机B
优点:
1.重发机制,对于数据包丢失的情况,TCP 提供重传机制(即服务器接收到数据后,会向客户端发送一条确认信息,如果客户端一段时间内没有收到确认信息,就会重新发一份);
2.数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件;
缺点:相比于UDP会慢很多(建立连接和断开连接有“三次握手”和“四次挥手”);