网络

2021/7/11 23:36:01

本文主要是介绍网络,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.http响应吗301和302代表什么?有什么区别?

  301:永久重定向。

  302:暂时重定向。

  区别:301对搜索引擎优化更有利,302有被提示为网络拦截非风险。

2.forwoard和redirect的区别?

地址栏Url显示:forward url不会改变,redirect url会发生改变。

数据共享:forward可以共享request里的数据,redirect不能共享。

效率:forward比redirect效率高。

3.TCP和UDP的区别?

  tcp和udp是OSI模型中的运输层中的协议,tcp提供可靠的通讯传输,而udp则常被用于让广播和细节控制交给应用的通讯传输。

tcp和udp的区别

  • tcp面向连接,udp面向非连接即发送数据前不需要建立连接。
  • tcp提供可靠的服务(数据传输),udp无法保证。
  • tcp面向字节流,udp面向报文。
  • tcp数据传输慢,udp数据传输快。

4.什么TCP三次握手?

  TCP三次握手的目的:确认服务器、客户端发送和接收都没有问题。

  建立TCP连接时,需要服务器和客户端共发三个包(也就是三次握手)

  • 第一次握手:客户端发送SYN(请求建立连接标志)包到服务端,并进入SYN_SENT(请求发送)状态,等待服务端确认。
  • 第二次握手:服务端收到客户端发送的SYN包后发送一个ACK(确认)+SYN包给客户端,然后服务端进入SYN_RECV(接收)状态。
  • 第三次握手:客户端收到服务端的SYN+ACK包后,进入ESTABLISHED(建立连接状态),并发送服务器SYN包的确认包ACK(也就是再响应),服务器接收到客户端的ACK包后进入ESTABLISHED状态,至此TCP三次握手完成。

  三次握手过程分析

  • 第一次握手:客户端发送请求到服务端,服务端知道客户端发送,自己接收正常。
  • 第二次握手:服务端发送给客户端,客户端知道自己发送、接收正常,服务端发送、接收正常。
  • 第三次握手:客户端发送给服务器,服务端知道客户端发送、接收正常,自己也发送、接收正常。

  可以通俗的理解TCP三次握手:

  • 第一次握手:客户端请求连接服务端。
  • 第二次握手:服务端收到请求后给予客户端应答。
  • 第三次握手:客户端收到服务器应答后,作出回复。

5.什么是TCP四次挥手?

TCP四次挥手

  • 第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态。
  • 第二次挥手:服务端收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
  • 第三次挥手:客户端收到服务端确认结果后,进入FIN-WAIT-2状态。此时服务端发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务端进入LAST-ACK(最后确认态)。
  • 第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务端收到确认后,立刻进入CLOSE状态。

  TCP四次挥手过程

  • 第一次挥手:客户端请求断开FIN。
  • 第二次挥手:服务端确认客户端的断开请求ACK。
  • 第三次挥手:服务器请求断开FIN。
  • 第四次挥手:客户端确认服务器的断开ACK。

6.TCP为什么要三次握手,两次不行吗?

  如果采用二次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器没有收到来自客户端的再次确认,则就会知道客户端并没有要求建立连接请求,这样就不会浪费服务器资源了。

7.如果已经建立了连接,但是客户端发生故障怎么办?

  客户端如果出现故障,服务器不能白白等待下去,否则就是浪费资源。服务器每收到一次客户端请求后都会重新复位这个计时器,时间通常为2小时,若2小时还没收到的客户端的任何数据,服务器就会发送一个探测报文,每隔75秒发送一次,若连续发送10个探测报文仍然没有反应,服务器就任务客户端故障,任何服务器就会关闭连接。

8.TCP粘包是怎么产生的?

  TCP粘包可能发生在发送端或接收端,产生粘包的原因:

  • 发送端粘包:发送端需要等缓冲区满才发送出去,造成粘包。
  • 接收端粘包:接收方不及时接收缓冲区的包,造成多个包接收。

9.OSI的七层模型都有哪些?

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

数据链路层:负责建立和管理节点间的链路。

网络层:通过路由选择算法,为报文或分组通过通信子网选择最合适的路径。

传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。

会话层:向两个实体的表示层提供建立和使用连接的方法。

表示层:处理用户信息的表示问题,如编码、数据格式转换和加解密等。

应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。

10.get和post请求有哪些区别?

get请求会被浏览器主动缓存,post不会。

get请求参数有大小限制,post没有。

post参数传输更安全,get参数会明文显示在url上,post则不会。

11.如何实现跨域?

实现跨域有以下几种方案

  • 服务器端运行跨域设置CORS等于*。
  • 在单个接口使用注解@CrossOrigin运行跨域。
  • 使用jsonp跨域。

12.说一下JSONP实现原理?

  JSONP:JSON with Padding,它是利用标签的src连接可以访问不同源的特性,加载远程返回的JS函数来执行的。



这篇关于网络的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程