我们人与人之间的交流是通过说话,但是计算机并不懂我们人类的自然语言,计算机之间的传递只有二进制的信息,所以为了能够帮助我们进行信息的传递,就需要通过一定的协议规范,将二进制信息翻译成我们所可以看懂的字符文字。在网络上传输中,这种协议就叫做网络协议。
网络编程就是为了在一个节点,将我们需要发送的信息按照我们事先规定好的协议进行包装,包装好之后,通过网络将信息传送给另一个节点,当接收点接收到这个信息之后,通过一样的协议将信息进行解析,就变成了我们可以看懂的一些内容。
在互联网的发展历程中,有过好多种的协议类型,这些协议之间互不兼容,就比如我们一个中国人和一个外国人,各自说着各自国家的语言,这样双方谁也听不懂对方要表达的意思,为了能够让双方都明白所要表达的意思,就需要一种共同的语言来交流,在互联网中也是一样,现如今比较重要的网络通信协议是TCP/IP协议,这个在我们的生活中经常可以遇到。
在TCP/IP中包含TCP,UDP,IP,ICMP,DHCP等协议,不同的协议有着不同的使用场景。
在Java网络编程中,常用到的有TCP和UDP,这两个主要的区别在于一个是可靠传输,一个是不可靠传输,意思是在TCP的传输过程中,不允许数据的丢失,如果数据丢失,在数据的传输过程中,他会根据一些判断进行数据是否有丢失,如果数据有丢失,他会重新进行数据的传输,以保证传送的数据都是准确无误的。在我们通信过程中,如果不允许数据的丢失,就需要使用TCP的协议;UDP是不可靠的传输,在UDP通信过程中,如果有数据的丢失,UDP是不会重新发送的,比如我们经常玩游戏的时候,会出现丢帧的现象,这种就是UDP在传输的过程中,丢失了一部分数据。除了数据的准确性,TCP还保证数据传输的顺序性,也就是说无论怎么发送数据,TCP都不可能接收到错乱顺序的信息。