12.Java进程间的通信方式:
(1)管道:半双工(即数据只能在一个方向上流动),具有固定的读端和写端。
(2)消息队列:是系统或应用之间的一种通信方式,是保存消息的容器,保证信息可靠传递。
(3)信号量:一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。
(4)共享内存:两个或多个进程共享一个给定的存储区。
13.TCP与UDP的区别:
TCP:基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。面向字节流,提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,仅支持1对1。
TCP保证数据传输可靠性的方式:
1.校验和:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。
2.确认应答和序列号:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。
3.超时重传:发送方在发送完数据后等待一个时间,时间到达没有接收到ACK报文,那么对刚才发送的数据进行重新发送。如果是刚才第一个原因(前一次数据全体丢包,接收端未接收到),接收方收到二次重发的数据后,便进行ACK应答。如果是第二个原因,接收方发现接收的数据已存在(判断存在的根据就是序列号,所以上面说序列号还有去除重复数据的作用),那么直接丢弃,仍旧发送ACK应答。
4.拥塞控制与流量控制,
UDP:在正式通信前不必与对方先建立连接,不管对方状态就直接发送。面向数据报,尽最大努力交付,即不保证可靠交付,支持1对1,一对多,多对多。
14.TCP中的三次握手和四次挥手
三次握手:1.客户端将标志位SYN置为1,随机产生一个值seq=J,服务端通过第一次握手确认客户端发送能力正常,服务端接收能力正常。
2.服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,客户端确认客户端发送和接收能力正常,服务端接收与发送能力正常。
3.客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务端,服务端检查ack是否为K+1,ACK是否为1,服务端确认客户端接受能力正常,服务端发送能力正常。
四次挥手:1.客户端发送关闭连接请求,并关闭客户端向服务端发送数据的接口。
2.服务端接收请求返回确认信息,关闭服务端接收客户端数据的接口。
3.服务端发送关闭连接请求,关闭服务端向客户端发送数据的接口。
4.客户端确认请求返回信息,关闭客户端接收服务端数据的接口。
15.HTTP常见的状态码
1XX:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
2XX:代表请求已成功被服务器接收、理解、并接受。这系列中最常见的有200、201状态码。
200状态码:表示请求已成功,请求所希望的响应头或数据体将随此响应返回
201状态码:表示请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 ‘202 Accepted’
202状态码:服务器已接受请求,但尚未处理
3XX:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。这系列中最常见的有301、302状态码。
301状态码:被请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302状态码:请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求
304自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。
4XX:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。常见有:401、404状态码。
401状态码:请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403状态码:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。
5xx:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。常见有500、503状态码。
500状态码:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
503状态码:由于临时的服务器维护或者过载,服务器当前无法处理请求。通常,这个是暂时状态,一段时间会恢复
22.一个HTTP请求分为4各部分:
HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
(1).请求行:第一行,申明请求类型(GET/POST等),要访问的资源,HTTP协议版本
(2).请求头:主要说明请求目的地,一些请求中的数据格式。
(3).空白行:
(4).请求数据:
23.Https加密
对称加密和非对称加密结合方式
浏览器使用Https的URL访问服务器,建立SSL链接。
服务器收到SSL链接,发送非对称加密的公钥A返回给浏览器
浏览器生成随机数,作为对称加密的密钥B
浏览器使用公钥A,对自己生成的密钥B进行加密,得到密钥C
浏览器将密钥C,发送给服务器。
服务器用私钥D对接受的密钥C进行解密,得到对称加密钥B。
浏览器和服务器之间可以用密钥B作为对称加密密钥进行通信。
总结
这样浏览器和服务器就共享一个对称加密密钥B,重要的是不会被拦截到。只在传输密钥B的时候进行了一次非对称加密,之后就用对称加密进行传送数据。