HTTP协议基础理论

1、HTTP、HTTPS概念

HTTP即超文本传输协议(Hypertext Transfer Protocol ),是一种用于分布式、协作式和超媒体信息系统的应用层协议。是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。由万维网协会(World Wide Web ConsortiumW3C)和互联网工程任务组(Internet Engineering Task ForceIETF)进行协调制定,最终发布了一系列的RFC。HTTP是万维网的数据通信的基础。

HTTP协议定义了Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议是基于TCP/IP协议之上的应用层协议。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

在日常互联网浏览网页时,我们接触到的大多都是 HTTP 协议,这种协议是未加密,即明文的。这使得 HTTP 协议在传输隐私数据时非常不安全。因此,浏览器鼻祖 Netscape 公司设计了 SSL(Secure Sockets Layer) 协议,用于对 HTTP 协议传输进行数据加密,即 HTTPS 。HTTPS全称是Hypertext Transfer Protocol Secure,也称为HTTP over TLS, HTTP over SSL,其实就客户端与服务系之间的HTTP通信基于TLS或则SSL协议。对于HTTP协议和SSL/TLS协议本身没有任何特殊定制,因为SSL/STL本身对HTTP协议就是透明的,HTTP在SSL/TLS上运作也不需要任何特殊处理。

HTTPS 和HTTP 协议相比提供了:

  • 数据完整性:内容传输经过完整性校验
  • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
  • 身份认证:第三方无法伪造服务端(客户端)身份

在这里插入图片描述

一篇文章看明白 HTTP,HTTPS,SSL/TSL 之间的关系

2、HTTP发展历史

 3、HTTP通信流程

这里写图片描述 在这里插入图片描述

如上,使用Tomcat或Jetty等web容器作为一个HTTP服务器,主要承担了接受连接解析请求数据处理请求发送响应这几个步骤。这里请你注意,可能有成千上万的浏览器同时请求同一个HTTP服务器,因此Tomcat和Jetty为了提高服务的能力和并发度,往往会将自己要做的几个事情并行化,具体来说就是使用多线程的技术。在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等。

1). 客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,在浏览器地址栏键入URL按下回车之后,浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址,解析出IP地址后,根据该IP地址和默认端口 80,和服务器建立TCP连接。例如,http://www.luffycity.com

服务器是以ip的形式存在的。而域名需要解析到ip上,解析IP会有三个小的步骤:
1、从浏览器自身的缓存中解析此域名数据
2、从本地电脑的HOST文件中解析域名
3、通过DNS服务器解析域名

2). 发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器。

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。最常用的是get和post请求,以下是他们的部分区别:
1)GET请求在URL中传送的参数是有长度限制的,而POST么有。
2)对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
3)GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
4)GET参数通过URL传递,POST放在Request body中。

get请求消息:

post请求消息:

请求(request)参数

URL超文本传输协议(HTTP)的统一资源定位符,它将从因特网获取信息的五个基本元素包括在一个简单的地址中:

  • 传送协议。
  • 层级URL标记符号([//],固定不变)
  • 访问资源需要的凭证信息(可省略)
  • 服务器(通常为域名,有时为IP地址)
  • 端口号(以数字方式表示,若为HTTP的默认值“:80”可省略)
  • 路径(以“/”字符区别路径中的每一个目录名称)
  • 查询(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8URL编码,避开字符冲突的问题)
  • 片段(以“#”字符为起点)

http://www.luffycity.com:80/news/index.html?id=250&page=1 为例, 其中:http是协议;www.luffycity.com是服务器;80是服务器上的默认网络端口号(默认不显示);/news/index.html是路径(URI:直接定位到对应的资源);?id=250&page=1是查询。大多数网页浏览器不要求用户输入网页中“http://”的部分,因为绝大多数网页内容是超文本传输协议文件。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明。一般来说用户只要键入统一资源定位符的一部分(www.luffycity.com:80/news/index.html?id=250&page=1)就可以了。由于超文本传输协议允许服务器将浏览器重定向到另一个网页地址,因此许多服务器允许用户省略网页地址中的部分,比如 www。从技术上来说这样省略后的网页地址实际上是一个不同的网页地址,浏览器本身无法决定这个新地址是否通,服务器必须完成重定向的任务。

Accept告诉服务器,客户端能接收以下媒体类型text/html(网页),xml文件,xhtml文件,png图片。
Accept-Encoding告诉服务器,客户端支持编码格式有 gzip 和deflate,br。
Accept-Language告诉服务器,客户端支持语言,英文(美国) 英文 和中文(简体)。
User-Agent告诉服务器,客户端是通过什么来发送请求的,这里Mozilla这个是固定写法,可以看到windows NT 10,系统是win10, 用chrome浏览器发送的请求,后面那个safari不用管。

3). 服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

  

响应(response)参数

响应起始行:HTTP/1.1 200 OK, 协议、状态
响应头字段:时间日期格式:Date: Wed, 17 Jul 2019 05:47:22 GMT;Server:看出来服务端服务器是Apache,语言是PHP;其他的几个字段和请求参数是对应的,是通用的字段。
响应正文:这个地方响应正文是一个JSON对象,这种格式在接口测试中经常遇到。

4). 释放连接TCP连接
connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5). 客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

4、HTTP协议的三个特征

1http无状态的

HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别的协议对于发送过的请求或响应都不做持久化处理。

使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。可是,随着Web的不断发展,因无状态而导致业务处理变得棘手的情况增多了。比如,用户登录到一家购物网站,即使他跳转到该站的其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能够掌握是谁送出的请求,需要保存用户的状态。HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能, 于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状态了。

2http无连接的

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间,并且可以提高并发性能,不能和每个用户建立长久的连接,请求一次响应一次,服务端和客户端就中断了。但是无连接有两种方式,早期的http协议是一个请求一个响应之后,直接就断开了,但是现在的http协议1.1版本不是直接就断开了,而是等几秒钟,这几秒钟是等什么呢,等着用户有后续的操作,如果用户在这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,那么就会断开连接,这样可以提高效率,减少短时间内建立连接的次数,因为建立连接也是耗时的,默认的好像是3秒钟现在,但是这个时间是可以通过咱们后端的代码来调整的,自己网站根据自己网站用户的行为来分析统计出一个最优的等待时间。

3HTTP与媒体无关

这意味着,只要客户端和服务器都知道如何处理数据内容,就可以通过HTTP发送任何类型的数据。 客户端和服务器都需要使用适当的MIME类型指定内容类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,需要明确的是,我方提供答案可能存在不完全的情况,因为我无法直接获取北邮MOOC通信网理论基础课后答案。但是,我可以向您提供学习该课的一些基本知识和概念,以帮助您更好地理解课程内容。 北邮MOOC通信网理论基础课程主要涉及通信网络的基本原理、技术和应用。在这门课上,您将学习到以下内容: 1. 通信网络的概念和分类:课程将介绍通信网络的基本概念和分类,包括有线和无线通信网络、广域网(WAN)和局域网(LAN),以及互联网的基本原理和结构。 2. 数据传输与交换技术:课程将介绍数据传输与交换技术的基本原理和方法,包括数据传输的数字化和编码技术,以及常见的数据交换技术,如电路交换和分组交换。 3. 网络协议与安全:课程将介绍网络通信的协议和安全性,包括应用层协议(如HTTP、FTP等)、传输层协议(如TCP、UDP等)、网络层协议(如IP、ICMP、ARP等)以及网络安全的基本概念和方法。 4. 网络管理与性能优化:课程将介绍网络管理和性能优化的基本概念和方法,包括网络管理的组织结构、监控和故障处理,以及性能优化的原则和技术。 虽然无法提供具体的题目答案,但通过学习以上内容,您可以更好地理解通信网络的原理和技术,并为解决相关问题提供基础。同时,建议您积极参与课程学习和讨论,与其他同学一起学习、思考和解决问题,以更好地掌握通信网理论基础课程的知识点。 ### 回答2: 北邮MOOC通信网理论基础课后答案是根据北邮MOOC通信网理论基础课程的内容和习题,对课后题目进行分析、解答和总结得出的。课后答案的编写需要充分理解和掌握课程的知识点和理论基础,并能够灵活应用这些知识点进行问题解决。 在编写答案时,首先要理解题目的要求和背景,然后根据所学的理论知识进行思考和分析,找出问题的解决思路和方法。接着,运用所学的知识和所给的信息进行具体计算、推导或解释,得出问题的答案和解释。最后,需要对答案进行检查和总结,确保答案准确、清晰、易懂,能够满足题目的要求。 北邮MOOC通信网理论基础课后答案的目的是帮助学生巩固和扩展所学的知识,提高问题解决和思考的能力。通过对课后答案的学习和分析,学生可以更好地理解课程内容,加深对理论基础的理解和应用,提高在实际问题中的应用能力。同时,课后答案也可以作为学生自学和复习的参考资料,帮助学生更好地进行知识巩固和迁移。 总之,北邮MOOC通信网理论基础课后答案是根据课程内容和习题编写的,旨在帮助学生加深对知识点和理论基础的理解和应用,提高问题解决和思考能力,同时也是学生自学和复习的参考资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值