计算机网络

forward 和 redirect 的区别?

forward 是转发 和 redirect 是重定向:
地址栏 url 显示:foward url 不会发⽣改变,redirect url 会发⽣改变;
数据共享:forward 可以共享 request ⾥的数据,redirect 不能共享;
效率:forward ⽐ redirect 效率⾼。

OSI 的七层模型都有哪些?

物理层:利⽤传输介质为数据链路层提供物理连接,实现⽐特流的透明传输。
数据链路层:负责建⽴和管理节点间的链路。
⽹络层:通过路由选择算法,为报⽂或分组通过通信⼦⽹选择最适当的路径。
传输层:向⽤户提供可靠的端到端的差错和流量控制,保证报⽂的正确传输。
会话层:向两个实体的表示层提供建⽴和使⽤连接的⽅法。
表示层:处理⽤户信息的表示问题,如编码、数据格式转换和加密解密等。
应⽤层:直接向⽤户提供服务,完成⽤户希望在⽹络上完成的各种⼯作。

简述 tcp 和 udp的区别?

tcp 和 udp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输,⽽ udp 则常被⽤于让⼴播和细节控制交给应⽤的通信传输。两者的区别⼤致如下:tcp ⾯向连接,udp ⾯向⾮连接即发送数据前不需要建⽴链接;tcp 提供可靠的服务(数据传输),udp ⽆法保证;tcp ⾯向字节流,udp ⾯向报⽂;tcp 数据传输慢,udp 数据传输快;# get 和 post 请求有哪些区别?
get 请求会被浏览器主动缓存,⽽ post 不会。
get 传递参数有⼤⼩限制,⽽ post 没有。
post 参数传输更安全,get 的参数会明⽂限制在 url 上,post 不会。

如何实现跨域?

实现跨域有以下⼏种⽅案:
服务器端运⾏跨域 设置 CORS 等于 *;
在单个接⼝使⽤注解 @CrossOrigin 运⾏跨域;
使⽤ jsonp 跨域;

说⼀下 JSONP 实现原理?

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

浏览器输入地址后做了什么?在这里插入图片描述

TCP三次握手

tcp 为什么要三次握手,两次不⾏吗?为什么?

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

说⼀下 tcp 粘包是怎么产⽣的?

tcp 粘包可能发⽣在发送端或者接收端,分别来看两端各种产⽣粘包的原因:
发送端粘包:发送端需要等缓冲区满才发送出去,造成粘包;
接收⽅粘包:接收⽅不及时接收缓冲区的包,造成多个包接收。

TCP四次挥手

在这里插入图片描述

为什么要进入时间等待状态?

若客户端发送确认释放包后直接关闭,而服务端因为某种原因没有收到客户端的确认释放包,就会一直发送确认请求,而客户端永远不会再响应该请求。

TCP 滑动窗口

TCP 流量控制,主要使用滑动窗口协议,滑动窗口是接受数据端使用的窗口大小,用来告诉发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的。如果TCP发送方收到接收方的零窗口通知后,会启动持续计时器。计时器超时后向接收方发送零窗口探测报文,如果响应仍为0,就重新计时,不为0就打破死锁。

TCP拥塞控制

发送方会维护一个拥塞窗口大小的状态变量,大小取决于网络的拥塞程度。发送方的发送窗口大小是取接收方接收窗口和拥塞窗口中较小的一个

拥塞控制有四种算法:

慢开始:从小到大主键发送窗口,每收到一个确认报文窗口大小指数增长

拥塞避免:当窗口大小到达一定阈值时,转为拥塞避免,每收到一个确认报文窗口大小+1。若此时网络超时,就把阈值调小一半,重新慢开始

快重传:要求接收方收到请求后要立即回复

快恢复:发送方连续收到多个确认时,就把拥塞避免阈值减小,然后直接开始拥塞避免

TCP超时重传

发送方在发送按数据后一定时间内没有收到接收方响应报文,就会重新发送刚刚的报文,接收到收到报文后会对该报文的序列号进行检验,已存在就抛弃
10.TCP可靠传输的实现

TCP是靠滑动窗口协议和连续ARQ协议配合流量控制和拥塞控制来保证的可靠传输。

ARQ是停止等待协议和自动重传请求,它规定TCP要为每一次传输的包编号,每发送一个包,要等待对方确认后才能发送下一个分组,若一段时间对方没有确认,就重新发送刚刚的报文。接收方会对数据包排序,把有序数据传给应用层,返回缺失的第一个ACK确认序列号给发送方,接收到收到报文后会对该报文的序列号进行检验,重复就丢弃。

TCP报头有哪些信息

在这里插入图片描述

12.状态码

1xx:请求正在处理

2xx:请求成功处理

3xx:请求重定向 301:永久重定向 302:临时重定向 304:使用本地缓存

4xx:客户端错误 400:请求格式错误 403:没有访问权限 415:请求体过大

5xx:服务端错误

http与https

1.HTTP和HTTPS的区别

http是无状态的超文本传输协议,连接简单,信息是明文传输,端口为80。

https协议是由http+ssl协议构建的可进行加密传输、身份认证的具有安全性网络协议,端口是443。

2.SSL协议是什么?

SSL(安全套检查协议)位于传输层和应用层之间,为应用层提供安全性,分为高低两层协议。

高层协议有

SSL握手协议:SSL协议核心,用于在数据传输开始前通信双方进行身份认证、协商加密算法、交换密钥等
SSL密码修改协议:通知双方使用刚刚协商的加密规范和密钥进行加密,每隔一段时间就会修改加密规范
SSL告警协议:如果在通信过程中某一方发生异常,异常级别为1SSL会发出警告,异常几倍为2SSL会终止连接

低层协议有

SSL记录协议,为上层协议提供保密性和完整性服务

3.SSL握手协议握手流程

1.tcp三次握手后,客户端向服务端发送client hello,client hello包括客户端所支持的加密套件、SSL版本和第一随机数

2.服务端向客户端响应server hello,响应报文中会告诉客户端服务端选择的加密套件、SSL版本,和第二随机数。

3.服务端向客户端响应一个x.509证书来表明自己的身份

4.服务端向客户端响应server key exchange,发送自己公钥,此时服务端也可以要求客户端向自己发送证书

5.服务端向客户端发送server hello down,表示响应完毕,此时所有消息还未进行加密

6.客户端向服务端发送client key exchange,生成预主密钥,客户端用服务端公钥对预主密钥进行加密后发送给服务端

7.客户端和服务端协商完毕,分别使用第一随机数、第二随机数、预主密钥计算出会话密钥,SSL的握手已经成功,可以开始利用会话密钥进行对称加密传输

4.HTTPS是如何保证安全的?

我们都知道https=http+ssl,看完SSL握手协议握手流程后,我们就知道了,ssl协议的握手流程就是https保证数据安全的原理

5.http 响应码 301 和 302 代表的是什么?有什么区别?

301:永久重定向。
302:暂时重定向。
它们的区别是,301 对搜索引擎优化(SEO)更加有利;302 有被提示为⽹络拦截的⻛险.

socket通信流程

(1)服务端创建socket并调用bind()方法绑定ip和端口号

(2)服务端调用listen()方法建立监听,此时服务的scoket还没有打开

(3)客户端创建socket并调用connect()方法像服务端请求连接

(4)服务端socket监听到客户端请求后,被动打开,调用accept()方法接收客户端连接请求,当accept()方法接收到客户端connect()方法返回的响应成功的信息后,连接成功

(5)客户端向socket写入请求信息,服务端读取信息

(6)客户端调用close()结束链接,服务端监听到释放连接请求后,也结束链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值