网络协议总结

网络协议总结

HTTP协议

客户端与服务器端之间通过HTTP来完成具体的交互。
HTTP(超文本协议传输)是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

以下是 HTTP 请求/响应的步骤:

  • 客户端连接到Web服务器(客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。)
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,[http://www.baidu.cn]
  • 发送HTTP请求,通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
  • 服务器接受请求并返回HTTP响应 Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
  • 释放连接TCP连接若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
  • 客户端浏览器解析HTML内容
HTTP与HTTPs的区别
  • **HTTP:**超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。

  • Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  • 双方交换密钥的过程:

    • 网站服务器先基于“非对称加密算法”,随机生成一个“密钥对”(为叙述方便,称之为“k1 和 k2”)。因为是随机生成的,目前为止,只有网站服务器才知道 k1 和 k2。
    • 网站把 k1 保留在自己手中,把 k2 用【明文】的方式发送给访问者的浏览器。因为 k2 是明文发送的,自然有可能被偷窥。不过不要紧。即使偷窥者拿到 k2,也很难根据 k2 推算出 k1(这一点是由“非对称加密算法”从数学上保证的)。
    • 浏览器拿到 k2 之后,先随机生成第三个对称加密的密钥(简称 k)。然后用 k2 加密 k,得到 k’(k’ 是 k 的加密结果)浏览器把 k’ 发送给网站服务器。由于 k1 和 k2 是成对的,所以只有 k1 才能解密 k2 的加密结果。因此这个过程中,即使被第三方偷窥,第三方也无法从 k’ 解密得到 k。
    • 网站服务器拿到 k’ 之后,用 k1 进行解密,得到 k至此,浏览器和网站服务器就完成了密钥交换,双方都知道 k,而且貌似第三方无法拿到 k。然后,双方就可以用 k 来进行数据双向传输的加密。
  • Https设计目标:

    • 数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么。
    • 数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。
    • 身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。
HTTP报头
  • 请求报头由请求行、请求头、空格和请求数据构成

  • img

  • 请求头包含

    • Host
    • Connection:keep-alive表示连接保持长链接状态;
    • User-agent:指明了我们发送请求的客户端的信息,例如版本等信息。
    • Accept:列出了当前浏览器可以接受的数据类型
    • Referer:是浏览器告诉服务器它是从哪个资源来访问的这个界面的,也就是说这里边包含一个URL,用户就是从这个URL来访问当前界面的。
    • Accept-Encoding表明浏览器可以解码的数据编码方式,这里有个gzip有些网站就支持返回gzip编码的HTML页面这样的话可以减少很多的下载时间。
    • Accept-Language表明浏览器希望接受的语言类型
  • 响应报头则是服务器在响应浏览器的时候服务器给浏览器的一些信息,同样响应报头也是由响应行、响应头、响应体三部分来组成的

    img

  • 响应报文包括

    • 第一行:指明了协议的版本以及服务器返回的状态码还有状态代码的文字描述,状态码由三个数字组成并且第一个数字代表了响应的类别主要有五种类别,之后会对状态码进行详细的总结。这里200 ok代表请求成功了。
    • 第二行Server是服务器用来告诉客户端当前服务器上安装的HTTP服务器应用程序的信息包含了安装的软件名字和版本等等
    • 第三行Date代表当前的时间
    • 第四行Content-Type表明了服务器返回给浏览器的数据类型,这里是text/html以及编码的格式
    • 第六行Cache-Control: 缓存控制,默认值为private代表只能由私人客户端进行缓存代理服务器不可缓存
    • 第七行Expires:是来告诉客户端资源失效的时间,当浏览器看到带有这个头的时候它会将其进行保存,只要没有过期浏览器会使用缓存中存在的版本,而不会再去发送HTTP请求如果数值是-1或者0代表不缓存
    • Set-Cookie则是设置一个和页面有关联的cookie。
TCP/IP协议:三次握手,四次挥手
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值