计算机网络笔记、面试八股(二)—— HTTP协议

2. HTTP协议

2.1 HTTP协议简介

HTTP协议,全称超文本传输协议(Hypertext Transfer Protocol),是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

  • 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
  • HTTP协议有多个版本,目前广泛使用的是HTTP/1.1版本。
  • HTTP协议是一个无状态协议(stateless)
    • 无状态的理解:服务器不维护任何有关客户端过去所发请求的消息。
    • 有状态协议会更加复杂,因为需要维护状态(即历史信息),而如果客户端或服务器失效,产生的状态会不一致,解决这种不一致的代价更高。
  • HTML是一门语言,全称是超文本标记语言,超文本的意思就是不只是文本,还可以包含图片、链接、音乐甚至程序等非文字元素。
  • 网络协议:是计算机之间为了实现网络通信而达成的一种“约定”或者“规则”,这样不同厂商的生产设备以及不同操作系统组成的计算机之间,都可以实现通信。

2.2 HTTP协议的优点

  • HTTP协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
  • 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。
    • 请求方法常用的有GET、POST、HEAD
  • 灵活:HTTP允许传输任意类型的数据对象,传输的类型由Content-Type加以标记。
  • 无连接:限制每次连接都只处理一个请求。当服务器处理完请求,并收到客户端的应答之后,就会断开连接(短连接)。
    • 但是这种无连接却不利于客户端和服务器保持会话连接。为了弥补这种不足,产生了两项记录HTTP状态的技术:Cookie和Session。
  • 无状态:指协议对于事务处理没有记忆。若后续处理需要前面的信息,则必须重传。

2.3 HTTP协议的缺点

  • 请求信息明文传输,容易被窃听截取。
  • 数据的完整性未校验,容易被篡改
    • 所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。换句话说,没有任何办法确认,发出的请求/响应和接收到的请求/响应是前后相同的。
  • 没有验证对方身份,存在冒充危险
    • HTTP协议中的请求和响应不会对通信方进行确认。任何人都可以伪造虚假服务器欺骗用户,实现“钓鱼欺诈”,用户无法察觉。

2.4 HTTP协议属于哪一层

HTTP属于应用层协议,以TCP协议(传输层)作为底层协议(用于识别该连接请求,解封包,一层一层的剥开),默认端口是80(注意是服务器的端口)。

2.5 HTTP通信过程

HTTP通信是指HTTP客户端(即浏览器)通过URL向HTTP服务端(即WEB服务器)发送请求。

  • 服务器在80端口等待客户端请求
  • 浏览器输入URL,经过DNS域名解析为服务器IP
  • 浏览器发送TCP请求,通过三次握手建立和服务器的连接(创建套接字Socket)
    • 浏览器是以随机端口发送的请求,而服务器是以80端口接收的请求
  • 浏览器发送HTTP请求,服务器返回HTTP响应,即交换HTTP消息
  • 客户端将相应得到的HTML代码和资源渲染到前端给用户
  • 关闭TCP连接

2.6 常见请求方法

  • GET:请求指定的页面信息,并返回实体主体。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
    • 数据被包含在请求体中
    • POST请求可能会导致新的资源建立或已有资源的修改
  • HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容
  • DELETE:请求服务器删除指定的页面

2.7 GET和POST的区别

  • 结构:都包含请求头和请求行,POST多了一个请求正文body。

  • 用途:GET多用来查询,请求参数放在URL中,不会对服务器上的内容产生作用。POST多用来提交,如把账号密码放在body中。

  • 安全性:GET是直接添加在到URL后面的,直接就可以在URL中看到内容,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值