什么是HTTP HTTP(超文本传输协议):一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型 解析url获取ip的过程叫DNS:获取web页面的过程就是典型的三次握手建立tcp的过程 DNS,tcp的过程
浏览器发起HTTP请求的典型场景中背后的细节: 服务器监听80等web端口,浏览器从URL中解析出域名。浏览器根据域名查询DNS从而获取到对于的IP地址。通过查询到的IP地址与服务器建立TCP链接(如果是https协议还需要万TLS/SSL握手)。构造HTTP请求,在这个过程中填充上下文至HTTP头部。浏览器发送HTTP请求,服务器收到HTTP请求后将HTML页面作为包体返回给浏览器。浏览器引擎解析响应,渲染包体至用户界面,并根据超链接构造其他的HTTP请求 详细流程:
HTTP协议解决的是人与机器之间高效的信息交互 HTTP是无状态的(这个无连接和无状态是统一说法,没啥好撕的)。通俗一点的理解就是:啥也不记。
优缺点都有:缺点是如果需要之前的数据必须重新传,比较麻烦。但是如果不需要数据则正好,应答较快。这里有一点要注意:HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。所以我们所谓的长连接只不过不用每次新建连接,但是每一次的请求还是独立的 TCP/IP协议 TCP/IP协议(传输控制协议/互联网协议)不是简单的一个协议,而是一组特别的协议,包括:TCP,IP,UDP,ARP等,这些被称为子协议。在这些协议中,最重要、最著名的就是TCP和IP。因此,大部分网络管理员称整个协议族为“TCP/IP”。
HTTP 和 HTTPS 有什么区别? HTTPS 它把 HTTP 下层的传输协议由 TCP/IP 换成了 SSL/TLS,由 「“HTTP over TCP/IP”」 变成了 「“HTTP over SSL/TLS”」,让 HTTP 运行在了安全的 SSL/TLS 协议上,收发报文不再使用 「Socket API」,而是调用专门的「安全接口」。“https”默认端口号 443 http 端口是80(记这个差不多了) 区别: 因为 HTTP 是明文传输,所以不安全,容易被黑客窃听或篡改;通信安全必须同时具备机密性、完整性、身份认证和不可否认这四个特性;HTTPS 的语法、语义仍然是 HTTP,但把下层的协议由 TCP/IP 换成了 SSL/TLS;SSL/TLS 是信息安全领域中的权威标准,采用多种先进的加密技术保证通信安全;OpenSSL 是著名的开源密码学工具包,是 SSL/TLS 加密算法的具体实现(NodeJs 实现 https 安全层面也是使用的 OpenSSL,实现 http 使用的 http-parser);
http请求 HTTP请求由状态行、请求头、请求正文三部分组成: 状态行:包括请求方式Method(一般有GET、POST、PUT、DELETE等)、资源路径URL、协议版本Version;请求头:包括一些访问的域名、用户代理、Cookie等信息;请求正文:就是HTTP请求的数据。 一般使用最多是是get和post请求 请求方式: get与post请求(通过form表单你们经常用到把) GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲) POST方法是把提交的数据放在HTTP包的请求体中.GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.GET与POST请求在服务端获取请求数据方式不同,就是我们自己在服务端取请求数据的时候的方式不同了,这句废话昂。