Http相关

2021-02-03 08:13

阅读:348

标签:http   不同的   smtp   SSL加密   tcp连接   主机   灵活   控制   证书   

一、http请求过程

技术图片

 

 

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

 

二、http请求特点

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。

 

三、http请求组成

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,

http请求由三部分组成,分别是:请求行、请求头、空格、请求体

HTTP响应也是由三个部分组成,分别是:状态行、响应头、空格、响应体

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234
 
get请求

技术图片

 

 post请求

技术图片

 

 

http请求报文-----------------------------------------------------------------------------------------------------------------

技术图片

 

 ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,

②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL,

③是协议名称及版本号。 

④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。 

⑤是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1&param2=value2”的方式传递请求参数。 

 

http响应报文-------------------------------------------------------------------------------------------------------------------------------------

技术图片

 

 ①报文协议及版本; 
②状态码及状态描述; 
③响应报文头,也是由多个属性组成; 
④响应报文体,即我们真正要的“干货”。 

 

 

四、http响应状态码

  • 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
  • 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
  • 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
  • 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
  • 5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等

请求错误(4开头)

服务器错误(5开头)

302:重定向

200:请求成功

400:bad request 语义有误,当前请求无法被服务器理解

403:forbidden拒绝

401:没有权限

404:路径错误,所请求的资源在服务器上没有

500:服务器处理了,没法给响应,最终处理不了(可能线程死锁)

502:网关超时

503:服务器处理超时

504:DNS解析超时

 

五、Get请求和Post请求(区别

 

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

 

但最常用的是GET和POST,称为GET请求和POST请求,如在浏览器中输入www.sina.com进入新浪网,将发出GET请求;提交邮箱注册信息,将发出POST请求等等,GET请求和POST请求比较如下:

 

1)、通常Get用来从服务器上获得数据,而Post用来向服务器提交递数据

 

2)、Get请求时,请求的数据是追加到URL后面,因此为显示在浏览器地址栏中,也称为显示提交;以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd& password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以 16进制表示的ASCII。

 

而Post请求时,请求的数据是放在HTTP请求体中,因此不会显示在浏览器地址栏中,也称为隐式提交;所以,在提交一些比较重要的数据时,强烈建议使用Post请求,如登录网银、提交注册信息等等

 

3)、Get传输的数据量小,这主要是因为受URL长度限制;1024字节,而Post可以传输大量的数据,理论上POST没有限制,所以在上传文件时只能使用Post,Post传输的数据大小限制在服务器中可以配置

 

4)、POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

 

 

 

 

六、http和https的区别

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。

技术图片

 

 

HTTP协议是一种使用明文数据传输的网络协议。HTTP协议的明文传输会让用户存在一个非常大的安全隐患。试想一下,假如你在一个HTTP协议的网站上面购物,你需要在页面上输入你的银行卡号和密码,然后你把数据提交到服务器实现购买。假如这个适合,你的传输数据被第三者给截获了,由于HTTP明文数据传输的原因,你的银行卡号和密码,将会被这个截获人所得到。

 

HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据进行传输之前,对数据进行加密,然后再发送到服务器。这样,就算数据被第三者所截获,但是由于数据是加密的,所以你的个人信息让然是安全的。这就是HTTP和HTTPS的最大区别。

 

当你使用Chrome浏览器访问一个HTTP网站的时候,你会发现浏览器会对该HTTP网站显示“不安全”的安全警告,提示用户当前所访问的网站可能会存在风险。

而假如你访问的是一个HTTPS网站时,情况却是完全不一样。你会发现浏览器的地址栏会变成绿色,企业名称会展示在地址栏中,地址栏上面还会出现一把“安全锁”的图标。这些都会给与用户很大的视觉上的安全体验。

 

http协议和https协议的区别:传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同

1)、传输信息安全性不同

1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。

2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

 

2)、连接方式不同

1、http协议:http的连接很简单,是无状态的。

2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

技术图片

 

3)、端口不同

1、http协议:使用的端口是80。

2、https协议:使用的端口是443.

 

七、tcp/ip协议

协议就是计算机之间通过网络实现通信时事先达成的一种“约定”;这种“约定”使计算机之间,只要遵循相同的协议就可以实现通信

协议可以分很多种,每一种协议都明确界定了它的行为规范:2台计算机之间必须能够支持相同的协议,并且遵循相同的协议进行处理,才能实现相互通信

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议

TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中

TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

网络接口层或数据链路层:接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

 

TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

ip层接收底层接口发来的数据包发送到tcp层或udp层,ip层也可以把从tcp或udp层接收的数据包传到底层接口。ip数据包包含发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

 

八、TCP 和UDP的区别

TCP/IP的运输层有两个不同的协议:

(1) 用户数据报协议 UDP              (User Datagram Protocol)

(2) 传输控制协议 TCP      (Transmission Control Protocol)

传输层控制着那些将要进入网络层的数据

 技术图片

 

 

 TCP和UDP的区别

• 面向连接的服务

– 先建立连接再传输数据,之后再断开连接

– 数据传输过程中,数据包不需要携带目的地址

– 保证数据传输的可靠性

• 无连接的服务

– 不需要事先建立连接,直接发送数据

– 每个报文都带有完整的目的地址

– 不保证报文传输的可靠性,可能会丢包

 

tcp是面向连接的,先建立连接再传输数据,之后再断开连接,udp是无连接的服务,不需要事先建立连接,直接发送数据

tcp会确认包的到达,顺序是好的,udp不确认包的到达,可能会出现丢包,顺序也可能会乱,

tcp稳定可靠、相对比较慢

udp不稳定,但是相对快,实时性高

Http相关

标签:http   不同的   smtp   SSL加密   tcp连接   主机   灵活   控制   证书   

原文地址:https://www.cnblogs.com/lxm666/p/13162131.html


评论


亲,登录后才可以留言!