TCP socket:
TCP服务,两个进程之间的通信需要建立连接,并且进程通信会持续一段时间,通信关系稳定。可以用一个整数表示两个应用实体之间的通信关系,这样穿过应用层和传输层之间的信息量就会少很多。
TCP socket是4元组,分别是源IP,源端口,目标IP,目标端口
因此当我们需要接受或者发送消息时,只需要传递需要发送的信息和socket就可以了。因为通信是持续并且稳定的,在通信时完全可以通过socket代替ip和端口,就不用那么麻烦,传那么多数据。
UDP socket:
UDP socket是2元组,分别是源IP,源端口
因为UDP服务,两个进程之间的通信无需建立连接,每个报文都是独立传输的,而且每个报文可能给的都不是同一个进程。
如果UDP socket也像TCP socket一样是4元组,那完全就是浪费精力,每个消息都要在层间接口中查个表,看看有没有,而且传的消息太多,又都是不同进程的,表中记录了好多条,那查起来多麻烦,何必搞得这么累呢。
所以UDP socket是2元组,只用socket代替源ip和源端口最合适,但是我们知道,发送报文肯定需要目标ip和目标端口的,那我们就传呗,所以对于UDP来说,应用层和网络层传输是由3部分组成的,socket(其实是为了提高点效率,用socket代替源ip和端口),目标ip和端口,报文