继续记笔记。。。
传送门:java 8 中文版在线api学习手册:http://www.matools.com/api/java8
网络协议是在计算机网络中进行数据交换时所必须遵守的规则的集合。也就是说,网络协议包含了很多通信的规则。
首先,我们都知道很多设备/计算机相连组成的计算机网络,那么在这样一个大网络中,任意两台设备需要进行通信,是要遵循一定的规则才能进行信息交换,不然整个网络的信息交换就会出现很混乱并且不可靠。比如你要打电话给甲,但是在由手机构成的大网络里面,你可能连接不上甲,又或者甲拒绝与你通信你却不知道,又或者你们之间的聊天所有的人都可以听到,为了避免混乱,我们需要制定相应规则并遵守,才能维持良好的通信。
网络协议的制定就是为了能使网络上各种设备能够正确地相互交换信息。 它包含了很多类型,常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。
图来源:https://www.runoob.com/tcpip/tcpip-tutorial.html
我们都知道OSI的七层模型,而TCP/IP网络模型就将网络分成了五层,它与OSI模型有些类似,只是将表示层、会话层去掉,合并了数据链路层和物理层作为网络接口层。
图来源:https://www.cnblogs.com/qishui/p/5428938.html
对应TCP/IP网络模型的协议就是TCP/IP协议。它是互联网的基础协议,任何和互联网有关的操作都离不开TCP/IP协议。在TCP/IP协议网络体系中,有包含一系列处理数据通信的协议:
其中,TCP和UDP是传输层最重要的两个协议,它们为上层用户提供级别的通信可靠性。
TCP(Transfer Control Protocol)传输控制协议: 它定义了两台计算机之间进行可靠的通信连接协议。提供的是面向连接(连接导向)的,基于字节流的运输层(Transport Layer)的通信协议。它的特点:
TCP协议可靠,一对一,在传递数据之前需要三次握手来建立连接,而且在数据传递过程中,有确认、窗口、重传、拥塞控制机制,传完之后还需要四次挥手断开连接。
下面简单介绍一下著名的三次握手和四次挥手。
假设A与B要建立TCP连接,简单地过程是这样的:
第一次握手:A–发送请求–>B
第二次握手:A<–确认A的请求并发送请求–B
第三次握手:A–确认B的请求–>B
哈哈哈哈,图已经很形象了。如果还不能理解三次握手的话(认真学习的娃要看理论),那我们就从概念上理解,复杂地表述就是:在建立TCP连接之前,通信双方也就是A和B必须要先了解对方四个信息:
为什么要知道这四个信息呢?这跟传输时的TCP报文有关系。
TCP报文是TCP层传输的数据单元,也叫报文段。这里有几个重要的内容需要在传输时填写的。
用于建立连接过程
在连接请求中,SYN=1及ACK=0表示还没收到确认信息,SYN=1且ACK=1,表示确认连接。图来源:https://blog.csdn.net/paincupid/article/details/79726795
开始建立连接:
UDP(User Datagram Protocol)用户数据报协议: 这是一个简单的面向数据报的传输层协议,提供的是无连接、面向事务的简单却不可靠的信息传送服务。它的特点:
UDP是一种无需连接的协议,它与TCP协议一样可用于处理数据包,但是它相对不可靠,也就是报文发送出去之后,发送方是不知道报文有没有成功到达的。UDP支持一对一、多对一、多对多等方式,也就是单播,多播和广播。
UDP的适用场景是:用于实时应用,比如视频会议、直播等等。
TCP和UDP都是属于传输层的协议,而我们开发的网络应用程序是位于应用层的,那么在应用层,该如何使用传输层的服务?套接字就是解决这个问题的,有了它就能实现应用层和传输层分离。在java设计模式中,Socket就是接口。
应用层能通过Socket发送或者接收数据,并能对数据报文作读写、打开关闭等操作。同时Socket的存在,还允许应用程序直接将I/O插入到网络中,实现与网络中其他应用程序进行通信。
往后会结合Java类来介绍这些概念以及测试例子,这里就先不展开关于socket编程的东西了。
介绍了网络编程中很重要的一部分:传输。传输要遵守一定的规则,这些规则就是我们的传输协议了。其中最有名的就是TCP/IP协议,当中还介绍了TCP的三次握手及四次挥手,还有UDP协议以及套接字的概念。今天的笔记就到这里啦,后续再慢慢整理。。。
参考文章:
https://blog.csdn.net/paincupid/article/details/79726795
https://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html
https://zhuanlan.zhihu.com/p/42224106
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html