关于HTTP的笔记

网上看了一篇关于HTTP的博客,觉得还不错,这里就记下来了。

参考:https://www.cnblogs.com/guguli/p/4758937.html

一、主要特点 1.支持客户/服务器模式 2.简单快速:客户向服务器请求服务时,只需请求方法和路径。(常用请求方法有GET HEAD POST) 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-type加以标记 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户机的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样有可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就很快 HTTP协议对于用户来讲其实是透明的,HTTP的报文并非是直接交互给用户去看的。最常见的场合是HTTP协议将超文本交付给浏览器或其他超文本解析的软件来进行处理。 超文本可以使用任意标签语言。如html xsl xml xhtml 1)静态超文本 客户端直接通过URL请求道服务器相对应的资源。服务端直接将部署在数据库或者文件系统中的标签语言文件发送回客户端。 2)动态超文本 需要通过软件技术来实现创建和处理动态文本。如CGI JavaServlet等技术,将URL中的’?’ 之后的动态部分做解析并生成动态文档。 并且可以嵌入脚本语言交付给浏览器中的解析引擎来提高动态文档效率,使文档中不必要的重复的部分独立解析完成,甚至可以实现活动文档,直接在文档上运行字节码形成的Java程序或JavaScript脚本 二、HTTP运行事务 报文分组 如下图是通用的HTTP请求和响应报文模型

1.请求报文 如下图:

1)请求行的主要内容: 请求行主要的方法: GET:请求服务器的文档 HEAD:请求关于文档的信息,但不是这个文档本身 POST:从客户机向服务器发送一些信息 PUT:从服务器向客户发送文档 TRACE:把到达的请求回送 CONNECT:保留 DELETE:删除web网页 OPTIONS:询问关于可用的选项 URL:统一资源定位符,是在因特网上知名任何类的信息的标准。URL定义的是四样东西: 协议://主机:端口号/路径

接下来是版本:目前HTTP的最新版本是1.1,就版本还有1.0 2)接下来的请求头,也叫首部头 是客户向服务器发送信息时的附加信息,数量为0到多个。 格式,每个首部行有一个首部名,一个冒号,一个空格,和一个首部值。 有很多首部,这里不做具体介绍。 2.响应报文 格式如下

1)状态行的介绍 版本同上: 状态码:1-199(指定客户端相应的某些动作)、200-299(请求成功)、300-399(已经移动的文件并且包含在定位头中指定的新的地址信息)、400-499(指出客户端的错误)、500-599(用于支持服务器错误) 短语:和状态码相对应的,如常见的404对应not found。403对应Forbidden 2)首部行:同之前 3.两个实例 利用抓包工具抓了两包数据来看看。

GET请求

这里是回应

三、连接模型 如图

服务端使用了80端口作为TCP连接的接收端,http本身是个无状态的协议,服务端不会保留客户端的信息。 每次HTTP永远都是客户端发起请求,然后服务端回复响应 关于长连接和短连接: 长连接:HTTP1.1之后默认使用了长连接,长连接使数据传输完成之后保持TCP不断开,等待在同域名下继续使用这个通道传输数据。 短连接:对于每个请求/.响应都要建立一次TCP连接 HTTP1.0中使用的是HTTP首部Connection:keep=alive来进行长连接的实验性拓展。 长连接模式下,当客户端向服务器发送请求之后,客户端如何判断服务器的数据已经完成? 1)通过服务器关闭连接来被动的关闭HTTP的TCP连接 2)通过消息首部字段content-legnth来判断数据传输是否完毕 3)还可以用消息首部字段Transfer-Encoding来协助判断 四、关于HTTP中的Cookie Cookie的实质就是一个键值对。 当client向server发送请求时,浏览器先查找cookie目录中是否有那个服务器发送的cookie,如果有的话就把相应的cookie包含在请求头之中。 当这个cookie包含在请求之中的时候服务器就知道这个客户是个老客户了,cookie的使用者和消费者都是服务器。 在HTTP报文分组中,与其功能相关的首部是cookie首部和set-cookie首部。 五、关于HTTP的安全 HTTP本身并不提供安全,然而通过在传输层和应用层中使用安全套接层(SSL)可以使HTTP运行在安全的环境下,即HTTPS。 HTTPS可以提供保密性,客户和服务器鉴别以及数据的完整性。 SSL的设计时是为了给应用层生成的数据提供安全以及压缩服务,一版来说SSL能接收来自任何应用层协议的数据,但最多情况下这个应用层的协议就是HTTP。 SSL对应用层传来的数据提供多种服务: 1)分片:SSL把数据划分成长度小于或等于2的14次方字节的数据分片 2)压缩:数据分片通过使用一种由客户端和服务器协商好的无损压缩方式进行压缩,这个服务是可选的。 3)报文完整性:为了保护数据的完整性,SSL使用密钥散列函数来创建MAC 4)保密:为了提供保密性,原始的数据和MAC一起用对称密钥加密技术来加密。 5)组帧:先在被加密的有效荷载上添加一个首部,然后再把这个有效载荷传递给可靠的运输层协议。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏子勰随笔

关于终端设备的设备唯一性的那些事之MAC地址

3473
来自专栏编程坑太多

『中级篇』docker学习必会网络基础(24)

请求源主机或者其它路由器将此 IP 数据包发送给 NAT, 然后由 NAT 将向外发送的数据包的地址解析如下:      

832
来自专栏青玉伏案

TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的。接下来的几篇博客都是关...

2846
来自专栏即时通讯技术

网络编程懒人入门(六):深入浅出,全面理解HTTP协议

HTTP(全称超文本传输协议,英文全称HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这...

2074
来自专栏xcywt

<HTTP协议详解>由浅入深看HTTP

1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务...

1214
来自专栏Java进阶架构师

一篇文章带你详解 HTTP 协议(上)

利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从链路层往上走。如下:

1234
来自专栏我和PYTHON有个约会

30.3. 企业级开发进阶2.3:UDP编程

回顾TCP协议:一个非常重要的数据传输协议,很多网络协议都是以TCP协议为基础的;TCP协议要求服务器和客户端通过三次握手交互的方式建立可靠的连接,然后再进行数...

1233
来自专栏Java Web

Java 面试知识点解析(五)——网络协议篇

在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Jav...

4119
来自专栏北京马哥教育

带你认识http协议简介

http:Hyper Text Transfer Protocol,超文本传输协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设...

2979
来自专栏信安之路

nmap使用指南(终极版)

2.指定范围 192.168.1.1-255 192.168.1-255.1(任意位置) 3.IPv6地址只能用规范的IPv6地址或主机名指定。 CIDR 和...

6270

扫码关注云+社区

领取腾讯云代金券