CSDN 面试必考HTTP协议面试题

1.HTTP 简介:

  • HTTP 协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议;
  • HTTP 是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等);

2.HTTP工作原理:

  • HTTP协议工作于客户端-服务端架构上,浏览器作为HTTP客户端通过URL向HTTP服务端发送所有请求。
  • web服务器有:Apache 服务器、lls服务器等;
  • HTTP默认端口号为80,但是也可以改为8080或者其他端口;

3.HTTP的优点和缺点?

优点

  • 支持客户/服务器模式:
  • 应用广泛且跨平台:
  • 简单快速、灵活:
    缺点
  • 无连接:
  • 无状态:无状态可以减轻服务器负担,但进行关联操作时繁琐,Cookie正好可以解决这个问题
  • 明文传输:调试便利的同时带来了信息易被窃取
  • 不安全:(HTTPS通过引入SSL/TLS层,解决了这个隐患)

4.请求类型Get与Post之间的区别?

  • get重点在从服务器上获取资源,post重点在向服务器发送数据;
  • get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等; post较get安全性较高;
  • get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用”?”连接,多个请求数据间用”&”连接,

如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;

post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的

  • Get传输的数据量小,因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式;
  • get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。post支持标准字符集,可以正确传递中文字符。

5.HTTP与HTTPS的区别?

HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP
协议与各种应用层协议之间,为数据通讯提供安全支持。

区别

  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  • HTTP和HTTPS 使用完全不同的连接方式,所用的端口不同,前者是80 端口,后者是 443端口

6.常见HTTP的状态码有哪些?

  • 200 – 请求成功
  • 301 – 资源(网页等)被永久转移到其它URL
  • 404 – 请求的资源(网页等)不存在
  • 500 – 内部服务器错误

7.HTTP常见的字段有哪些?

URI&URL

  • URI:统一资源标识符,不仅可以标识http,ftp等其他的网络资源
  • URL:统一资源定位符

** 请求头 **:

  • GET :获取一个资源,同时参数直接跟在URL后面,url长度受限制2048字节
  • POST:不仅可以获取资源,还可以提交资源(譬如上传文件),参数放在请求体中,包大小4G
  • HEAD:只要响应头,没有响应体,通常用于测试URL是否存在
  • DELETE:删除一个资源
  • PUT:通常修改一个资源

响应头:

  • Content-Length:响应体的长度
  • Server:服务器的信息
  • Content-Type:内容的类型,text/html,xml等
  • Last-Modified :最有的修改日期,通常跟缓存相关 20151108
  • Location: 新的地址

响应码:

  • 200 OK 访问正常
  • 206 跟断点续传相关
  • 3XX 重定向:Location
  • 304 缓存有效
  • 307 临时重定向
  • 4XX 客户端问题
  • 401 代表没有权限访问
  • 404 代表访问的资源不存在
  • 5XX 通常服务器内部处理的问题

8.请谈谈你对“ 三次握手与四次挥手 ”的理解并说说作用?

  1. 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。
  2. 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。
  3. 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。

服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。

三次握手的作用:

  • 确认双方的接受能力、发送能力是否正常;
  • 指定自己的初始化序列号,为后面的可靠传送做准备;
  • 如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。
Description

四次挥手:
1.第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

2.第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

3.第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

4.第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
Description


  • 版权声明:本文为CSDN博主「学前端的阿鑫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接
文章链接:http://iwebg.cn/index.php/2023/07/20/csdn-%e9%9d%a2%e8%af%95%e5%bf%85%e8%80%83http%e5%8d%8f%e8%ae%ae%e9%9d%a2%e8%af%95%e9%a2%98/

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇