网络基础2——浅谈HTTP协议

我们都知道,在网络中为了便于操作和维护,我们将网络进行了分层。TCP/IP协议将网络分成了五层,自顶向下分别是应用层、传输层、网络层、数据链路层、物理层(通常是四层,物理层考虑较少)。在每一层中都有与之对应的网络协议,此篇介绍应用层最重要的一个协议HTTP协议……

先了解一下URL

URL,全称Uniform Resource Locator,统一资源定位符,就是我们平时俗称的“网址”,是互联网上标准资源的地址。
完整格式如下:
协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志
http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1
URL将在HTTP协议的请求行中用到。
回到正题!

HTTP协议是什么

HTTP协议是一个应用层的面向对象的超文本传输协议,是一个用于从www服务器传送超文本到本地浏览器的协议,所有的www文件必须遵守HTTP协议。
HTTP协议有以下几大特点:

  • 支持客户/服务端模式
  • 简单快速:客户向服务器请求服务时,只需发送请求方法和路径
  • HTTP请求允许传送任意类型的数据对象
  • 无连接:含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并受到客户应答后,即断开连接。采用这种方式可以节省传输时间
  • 无状态:HTTP协议是无状态协议,指服务器对于事务处理没有记忆功能。缺少状态意味着如果后序处理需要前面的信息,则必须重传,这样可能导致每次连接的传送数据量增大。

HTTP协议格式

一、HTTP请求
请求组成:

  • 请求行
    说明了请求类型、要访问的资源以及HTTP版本,出现在HTTP请求的首行
    在这里插入图片描述
    常用的请求方法如下:
    1.GET:获取资源(通过URL传参)
    2.POST:传输实体主体(大小没有限制)
    3.PUT:传输文件
    4.HEAD:获得报文首部
    5.DELETE:删除文件
    6.OPTIONS:询问支持的方法
    7.TRACK:追踪路径
    8.CONNECT:要求用隧道协议连接代理
    9.LINK:建立和资源之间的联系
    10.UNLINE:断开连接关系

  • 请求报头
    紧接着请求行,用来说明服务器要使用的附加信息。
    常见报头如下:
    1.Content-Type:数据类型
    2.Content-Length:Body的长度
    3.Host:客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
    4.User-Agent:声明用户的操作系统和浏览器版本信息
    5.referer:当前页面是从哪个页面跳转过来的
    6.location:重定向,搭配3xx使用,告诉客户接下来要去哪里访问,分为临时重定向和永久重定向
    7.Cookie:用于在客户端存储少量信息,通常用于会话功能(session)的实现;例如:我们登录一个网页,假如电脑死机或关机重启后再去访问,则不需要再次输入密码,这是因为我们的密码被保存在了cookie中,这样虽然很方便,但是存在极大的安全隐患。通常情况下cookie和session搭配使用,session保存在服务器中,而cookie在本地,服务器有很强的防攻击系统,所以通常把数据保存在session中,每个保存的数据都有一个唯一的session id,这个session id保存在cookie中。

  • 空行
    请求报头后的空行必须有,即使请求正文为空,也必须有空行;空行用来将报头和有效载荷分离

  • 请求正文(请求消息)
    二、HTTP响应
    响应组成:

  • 响应行
    在这里插入图片描述

状态码分为如下几类:

1.1xx(信息状态码):接受的请求正在处理
2.2xx(成功状态码):请求正常处理完毕
3.3xx(重定向状态码):需要进行附加操作完成请求
4.4xx(客户端错误状态码):服务器无法处理请求,请求有错误或请求无法实现
5.5xx(服务器错误状态码):服务器处理请求出错

常见的状态码如下:
1.200 OK:客户端请求成功
2.400 Bad Request:客户端请求有语法错误,不能被服务器理解
3.401 Unauthorized:请求未经授权
4.403 Forbidden:服务器收到请求,但拒绝提供服务
5.404 Not Found:请求资源不存在(输入了错误的URL)
6.500 Internal Server Error:服务器发生不可预估的错误
7.503 Server Unavailable:服务端当前不能处理客户的请求,一段时间后可能恢复正常

  • 响应报头
    说明客户端要使用的一些附加信息
  • 空行
  • 响应正文
    服务器返回给客户端的文本信息

HTTP工作原理

HTTP协议定义了Web客户端如何从Web服务器请求Web页面以及服务器如何把Web页面传送给客户端;HTTP协议采用的是请求/响应模型,客户端向服务器发送一个请求报文,服务器以一个状态行作为响应。
工作步骤:
1.客户端连接到Web服务器:一个HTTP客户端(通常是浏览器)与Web服务器的HTTP端口(端口号默认为80)建立一个TCP套接字连接
2.发送HTTP请求:通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求报头、空行、请求正文四部分组成
3.服务器接受请求并返回HTTP响应:Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应报文由响应行、响应报头、空行、响应正文四部分组成
4.释放连接(TCP连接):若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭,释放TCP连接;若connection模式为keep-alive,则该连接会保持一段时间,在此时间内还可以接续接受请求
5.客户端浏览器解析HTML内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码,然后解析每一个响应头,读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口显示
举个栗子
在浏览器地址栏键入URL,按下回车之后会经历以下流程
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
5、释放 TCP连接
6、浏览器将该 html 文本并显示内容

浅谈HTTPS协议

一、HTTPS协议是什么?
HTTPS协议是安全套接字层超文本传输协议,是以安全为目标的HTTP通道(HTTP的安全版),即HTTP下加入SSL层,SSL是HTTP的安全基础。
二、工作原理
1.客户使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接
2.Web服务器收到客户端请求后,会将网站的证书信息(包含公钥)传送一份给客户端
3.客户端的浏览器开始和Web服务器协商SSL的安全等级(信息加密等级)
4.客户端根据双方同意的安全等级建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站
5.Web服务器利用自己的私钥解密出会话密钥
6.Web服务器利用会话密钥加密与客户端之间的通信

HTTP和HTTPS的区别

  • HTTP是超文本传输协议,是明文传输;而HTTPS则是具有安全性的SSL加密传输协议
  • HTTP和HTTPS使用的是完全不同的传输方式,端口号也不一样,HTTP是80,HTTPS是443
  • HTTP连接简单,无状态;HTTPS是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,比HTTP安全
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值