网络
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函数来执行的。
这篇关于网络的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16ShardingSphere 如何完美驾驭分布式事务与 XA 协议?
- 2024-11-16ShardingSphere如何轻松驾驭Seata柔性分布式事务?
- 2024-11-16Maven资料入门指南
- 2024-11-16Maven资料入门教程
- 2024-11-16MyBatis Plus资料:新手入门教程与实践指南
- 2024-11-16MyBatis-Plus资料入门教程:快速上手指南
- 2024-11-16Mybatis资料入门教程:新手必看指南
- 2024-11-16MyBatis资料详解:新手入门与初级实战指南
- 2024-11-16MyBatisPlus资料:初学者入门指南与实用教程
- 2024-11-16MybatisPlus资料详解:初学者入门指南