HTTP协议是一个非常重要的应用层协议,在面试中有很多关于这方面的问题,这里做一个总结,大部分都在前面的文章中提到了,没提到的这里做一个介绍。

1、HTTP协议的基本原理、工作流程

  HTTP协议是超文本传输协议,是一个应用层协议,它规定了万维网上各种链接如何实现,特别是浏览器如何向万维网服务器请求万维网文档、服务器如何把文档传给浏览器。它以客户端-服务器的方式运行,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档,分别对应请求报文和响应报文。

  HTTP本身是无连接的,但是传输层使用的是TCP协议,需要首先建立连接,然后传输文档,最后关闭连接。

2、HTTP协议的特点

  参考:HTTP的特点,主要是:客户端-服务器模式,简单快速,灵活,无连接,无状态。

3、HTTP状态码

  参考:HTTP响应报文

4、HTTP请求方法,Get和Post的区别

  HTTP请求方法参考:HTTP请求报文

  【Get和Post的主要区别】

  (1)从含义上来看,get的重点是从服务器上获得资源,post的重点是向服务器发送数据。

  (2)get和post都可以用来传输数据给服务器,但是get是将数据信息以field(字段)= value的形式置于URL后,并用”?”连接,多个请求数据间用”&”连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,通过URL将数据携带到服务端的,而post是将字段和对应的值封装在了请求实体中发送给服务器的。

  (3)由于第二点的区别,带来了安全性的不同,get将数据直接拼接在URL的后面,对用户可见,可能会泄露私密信息,如密码等;而post数据封装在实体中,对用户不可见。

  (4)同样由于第二点的区别,带来了数据量的不同,get传输的数据量小,因为它受URL长度的限制,但是效率较高,而Post可以传输大量输出,因此上传文件等大数据时只能用post。

参考:

作者:有时需要偏执狂
原文:https://blog.csdn.net/u010710458/article/details/79636625
版权声明:本文为博主原创文章,转载请附上博文链接!

5、Cookie和Session的区别

  参考:HTTP状态保持机制

6、HTTP短连接和长连接

  实际上这里准确说法应该不是HTTP的连接,而是TCP的连接,在HTTP/1.0版本中,主要缺点是每个HTTP连接只能发送一个请求(短连接),一旦服务器响应数据发送完毕,连接就释放了,如果还有其他需要请求的信息,就需要再次建立TCP连接,而TCP连接需要三次握手,这需要时间开销,如果一个页面有多个需要请求的URL,就会有大量的短连接,会产生很多不必要的开销。

  在HTTP/1.1中较好的解决了这个问题,引入了持久连接,也就是长连接,让服务器在发送完响应之后仍然在一段时间内维护这条连接,如果后续还有其他的请求可以复用这条连接,当然,长连接并不是永久连接,经过一定时间没有请求之后长连接就会释放。

  现在我们使用的都是http/1.1,所以默认都是使用的长连接,设置Connection为keep-alive就是长连接。如果不愿意使用持久连接,也可以进行设置。

7、HTTP代理

  参考:HTTP代理

8、HTTP缓存

  http缓存指的是: 当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。

  常见的http缓存只能缓存get请求响应的资源,对于其他类型的响应则无能为力。

  缓存的好处是显而易见的:(1)减少了冗余的数据传输,节省了网费;(2)减少了服务器的负担, 大大提高了网站的性能;(3)加快了客户端加载网页的速度

  HTTP的缓存有两种:强制缓存和协商缓存。

(1)强制缓存

  强制缓存在缓存数据未失效的情况下(即Cache-Control的max-age没有过期或者Expires的缓存时间没有过期),那么就会直接使用浏览器的缓存数据,不会再向服务器发送任何请求。强制缓存生效时,http状态码为200。这种方式页面的加载速度是最快的,性能也是很好的,但是在这期间,如果服务器端的资源修改了,页面上是拿不到的,因为它不会再向服务器发请求了。

(2)协商缓存

  当浏览器第一次向服务器发送请求时,会在响应头中返回协商缓存的头属性:ETag和Last-Modified,其中ETag返回的是一个hash值,Last-Modified返回的是GMT格式的最后修改时间。然后浏览器在第二次发送请求的时候,会在请求头中带上与ETag对应的If-Not-Match,其值就是响应头中返回的ETag的值,Last-Modified对应的If-Modified-Since。服务器在接收到这两个参数后会做比较,如果返回的是304状态码,则说明请求的资源没有修改,浏览器可以直接在缓存中取数据,否则,服务器会直接返回数据。

参考:作者:kimshare

链接:https://www.jianshu.com/p/227cee9c8d15

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

9、HTTP和HTTPS

  HTTPS是在http协议基础上增加了使用SSL加密传送信息的协议,http和https之间的区别就在于其传输的内容是否加密和是否是开发性的内容。HTTPS是安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。

  https协议需要到ca申请证书,一般免费证书很少,需要交费。

  http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

  Http端口是80,https的端口是443.

  HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

10、URI和URL

  URI是统一资源标识符(Uniform Resource Identifier),而URL是统一资源定位符(Uniform Resource Locator),URI是URL更高层次的抽象,是一种字符串文本标准,而URL是URI的一种,是它的子集。

  URI 表示请求服务器的路径,定义一个资源。而 URL 同时说明要如何访问这个资源(http://)。

  URI通常由三部分组成:①访问资源的命名机制;②存放资源的主机名;③资源自身的名称,由路径表示.

  URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。URL的格式由三部分组成: ①第一部分是协议(或称为服务方式)。②第二部分是存有该资源的主机IP地址(有时也包括端口号)。③第三部分是主机资源的具体地址,如目录和文件名等。

  总之,URL是一种具体的URI,可以用来标识一个资源,而且还指明了如何locate这个资源

11、网址中输入URL,一系列过程

  参考:https://blog.csdn.net/xidiancoder/article/details/71524673

12、HTTP2

  HTTP2协议:参考:HTTP的版本演变,主要是二进制协议、双向实时数据流通信、头信息压缩、服务器推送机制。

【HTTP】四、HTTP协议常见问题的更多相关文章

  1. RTSP、HTTP、HTTPS、SDP四种协议详解

    我们将主要讲解RTSP,HTTP,HTTPS, SDP四种协议.  一:RTSP协议简介 实时流协议RTSP是一个应用层协议,用于控制具有实时特性的数据(例如多媒体流)的传送. RTSP协议一般与RT ...

  2. java web学习总结(四) -------------------HTTP协议

    一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...

  3. javaweb学习总结(四)——Http协议

    一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...

  4. IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  5. (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  6. 网络层 IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  7. TCP/IP笔记(四)IP协议

    前言 IP相当于OSI参考模型的第3层--网络层:主要作用是"实现终端节点之间的通信"又称"点对点通信". IP作为整个TCP/IP中至关重要的协议,主要负责将 ...

  8. 大型网站的 HTTPS 实践(四)——协议层以外的实践

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt390 1 前言 网上介绍 https 的文章并不多,更鲜有分享在大型互联网站 ...

  9. javaweb学习总结(四)——Http协议(转)

    转载自 http://www.cnblogs.com/xdp-gacl/p/3751277.html 一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传 ...

随机推荐

  1. poj2166 Heapsort[构造递推]

    构造一个n个点的大根堆让全部弹出时交换位置次数最多. 真心佩服我自己智商,这种题都做不出来 交换是在每次弹出堆顶,然后把堆尾元素置于堆顶,然后向下调整时产生的.玩样例可以发现似乎数字1每次都出现在堆最 ...

  2. GitHub入门和项目托管

    (博主原创文章,转载请注明出处: http://www.cnblogs.com/xianlei/git) 前言: 本文目标: Git入门,能够在Github托管项目,能够进行实际项目开发 本文主要内容 ...

  3. EF Core命令

    新建 Add-Migration init Update-Database init 修改model后,执行迁移的命令 更新数据库 每次更新都要{update}修改 Add-Migration {up ...

  4. Idea 项目jdk环境配置

    1.先配置jdk环境变量

  5. poj 3579 Median 二分套二分 或 二分加尺取

    Median Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5118   Accepted: 1641 Descriptio ...

  6. 论文阅读:Fast, Scalable, and Programmable Packet Scheduler in Hardware

    摘要: 随着链接速度的提高和CPU扩展速度的放缓,软件中的数据包调度会导致较低的精度和较高的CPU利用率. 通过将数据包调度卸载到诸如NIC之类的硬件,可以潜在地克服这些缺点.然而为了保持软件分组调度 ...

  7. Java 工程师成神之路

    基础篇 → 什么是面向对象 面向对象.面向过程 是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象.类.继承.封装.多态等基本概念来进行程序设计.从现实世界 ...

  8. 添加一个静态JAVA库

    LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory L ...

  9. 选题 Scrum立会报告+燃尽图 04

    本次作业要求参见:edu.cnblogs.com/campus/nenu/2019fall/homework/9913 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名:胜利点 二.S ...

  10. redis扫描特定keys脚本,可避免阻塞,不影响线上业务

    #!/bin/sh ## 该脚本用来查询redis集群中,各个实例当中特定前缀的key,对应只需要修改redis的其中一个实例的 host和port## 脚本会自动识别出该集群的所有实例,并查出对应实 ...