面试题之网络(二)

4.TCP三次握手?

答:

第一次握手:客户端向服务器发送一个tcp报文,标记位为SYN,序号为Seq=x;客户端进入SYN-SENT阶段(请求连接阶段)。

第二次握手:服务端收到来自客户端的报文后结束LISTEN阶段,并返回一段tcp报文,标记位为SYN+ACK,表示客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据并同意建立新连接。

第三次握手:客户端收到来自服务端的确认消息后,明确了客户端与服务端的数据传输时正常的,结束了SYN-SENT阶段,并发送一段报文,随后进入成功连接阶段。

5. TCP四次挥手?

答:

第一步:客户端向被动关闭方服务器发送一个 FIN(Finish)报文段,用来关闭数据的发送。

第二步:服务器收到 FIN 报文后,发送一个 ACK(Acknowledgment)报文作为确认收到。

第三步:服务器发送一个 FIN 报文段给客户端,用来关闭数据的接收。

第四步:客户端收到 FIN 报文后,发送一个 ACK 报文作为确认,并进入 TIME_WAIT 状态。服务器收到 ACK 后,也进入 TIME_WAIT 状态。TIME_WAIT 状态是为了等待可能延迟的最后一个 ACK 报文。

注意:在四次挥手完成后,两个端点都进入了 TIME_WAIT 状态,等待一段时间后才会彻底关闭连接。这是为了确保在网络中所有数据都被完全传输完毕,防止在关闭连接之前有残余数据未被处理。

6. 304状态码的完整过程?

答:

304状态码是指 "未修改"(Not Modified),它是HTTP协议中的一个状态码,用于指示客户端发起的请求的资源在上一次请求之后没有发生变化。当服务器收到客户端发送的请求时,会检查请求中的If-Modified-Since或If-None-Match头字段来判断资源是否发生变化。

下面是304状态码的完整过程:

1. 客户端发送GET请求到服务器,并携带一个条件请求头字段,例如If-Modified-Since(指定上次请求的响应的修改时间)或If-None-Match(指定上次请求的响应的ETag标识符)。

2. 服务器接收到客户端的请求后,会检查请求头字段中的条件。

3. 如果服务器发现资源在上次请求之后没有发生变化,它会返回一个状态码为304的响应。

4. 客户端接收到状态码为304的响应后,它就可以使用自己拥有的缓存副本,而无需再次请求服务器以获得新的资源。

5. 如果服务器发现资源在上次请求之后发生了变化,它会返回一个状态码为200的响应,并将新的资源内容一并返回给客户端。

304状态码的使用可以减少对服务器的请求次数,从而提高网络性能和减轻服务器的负载。它适用于那些频繁访问但不经常更新的资源,例如图片、样式表、脚本等。

7.解决跨域的办法?

答:

1. CORS(Cross-Origin Resource Sharing):在服务端设置响应头中的Access-Control-Allow-Origin字段,允许指定的源(域名、协议、端口)访问资源。例如,设置Access-Control-Allow-Origin: *表示允许所有源访问资源。

2. JSONP(JSON with Padding):通过在页面中动态创建script标签来请求跨域的资源,服务器将该资源的返回结果包装在一个回调函数中返回。只支持GET请求,并且需要服务器端支持返回JSONP格式的数据。

3. 代理服务器:在同源策略的限制下,通过在服务器端设置代理,将跨域请求转发到同源的服务器上进行处理。客户端向代理服务器发送请求,代理服务器将请求转发到目标服务器并将响应返回给客户端。

4. WebSocket:使用WebSocket协议进行跨域通信,WebSocket协议不受同源策略限制。

5. iframe嵌套:通过在主页面中嵌入一个iframe页面,将需要跨域的内容加载在iframe中。通过window.postMessage方法来进行跨域通信。

6. 利用反向代理:通过服务器端配置反向代理,将跨域请求转发到目标服务器,并将响应返回给客户端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值