计算机网络-应用层:自定制协议、知名协议HTTP&HTTPS

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 计算机网络-应用层:自定制协议、知名协议HTTP&HTTPS

· 自定制协议


应用层:负责应用程序之间的数据沟通。


自定制协议:程序员自己订立的协议,自己约定一个应用程序之间的数据格式。


1.序列化


       按照指定的数据格式,将多个数据对象组织成为可以持久化存储或数据传输的二进制数据串。


2.反序列化


       按指定格式将二进制数据串解析得到多个数据对象。


3.需要考量因素


       1)组织&解析效率;


       2)传输效率;


· HTTP协议


一、基本概念

HTTP协议:超文本传输协议。


       1)是一个应用层协议,在传输层使用的是TCP协议;


       2)是一个明文传输协议(以字符串形式组织指定格式数据传输);


       3)是一个简单的 请求-响应 协议;


默认端口:80


注:http服务器实际上就是一个tcp服务器,只不过上层的数据格式采用的是http的协议格式。


二、HTTP协议格式


1.请求格式

1.1首行(请求行)


       首行格式:请求方法 URL 协议版本\r\n


<1> 请求方法:直观表示请求类型


       GET:主要用于从服务器获取实体资源,没有正文;也可以用于提交数据,但是数据是放在URL中,有长度限制,也不安全。


       POST:主要用于向服务器提交数据,数据放在正文中。


       HEAD:与GET功能类似,但是响应中不要实体数据,只要头部。


       ……


<2> URL:统一资源定位符---我们通常称之为网址


URL: 定位网络中的某个主机上的某个资源,并且定义如何请求。


一个较为完整的URL所包含的要素:


       协议方案名称://用户名:密码@域名:端口/资源路径?查询字符串#标识符


       http://user:pass@ip:port/path?query_string#id


       http:协议方案名称;


       user:pass:用户名和密码;


       ip:域名最终需要转换为服务器IP地址;


       port:端口,HTTP协议默认使用80端口;


       /path:资源路径;


       query_string:查询字符串,由key=val&key=val形式键值对组成;是客户端提交给服务器的数据;


       id:片段标识符,是超文本数据中的一个标签id。


URL编码:


       query_string提交给服务器的数据中,如果有特殊字符,则会与http协议的间隔符产生歧义,因此查询字符串中不能有特殊字符。如果提交的数据中有特殊字符,就需要URL编码。


1)urlencode-编码:


       将一个特殊字符的每个字节,转换为两个16进制字符,比如‘+’ 转换为"%2B",并且前缀%修饰用于表示这是经过转码后的数据。


2)urldecode-解码:


       当在URL中遇到%字符,则认为紧随其后的两个字符是需要解码的。将第一个16进制字符转换为数字,乘以16,再加上第二个字符转换后的数据。例:%2B---> 2*16+11=43。


<3> 协议版本:0.9->1.0->1.1->2.0->……


       0.9版本:不是一个完善的版本;


       1.0版本:主要针对0.9版本完善了协议格式,订立了各种请求方法;默认使用短连接。


       1.1版本:主要针对1.0版本进行了一些性能优化


       2.0版本:使用二进制传输,有了更多的性能优化。


★1.1相较于1.0所做的比较典型的性能优化:


       1)缓存控制:资源在本地或者在代理服务器上的缓存管理,大大提高资源的重新获取效率。


       2)对长连接进行了优化,默认使用长连接;


短连接:通信中,一次请求-一次响应则通信结束,断开连接;


             建立连接-发送请求-接收响应-关闭连接-通信结束;


长连接:在一次连接中,可以连续进行多次请求-响应;但是必须要在上一次请求响应之后,才能进行新的请求。


1.1版本对长连接的优化:


管线化:不用等待上次请求收到响应后再去发送下一个请求,可以连续请求;但是需要按序响应;所以存在队头阻塞问题。


2.0版本的优化:


多路复用&主动推送:一次请求的响应中,可以推送多个资源;并且可以连续请求,响应中带有对应请求标识,不需要按序响应---解决了队头阻塞问题,以及避免了重复头部字段的传输。


1.2头部


由一个个key:val\r\n形式的键值对组成,描述正文或请求的详细信息。


       Referer:记录当前请求的来源链接;


       User-Agent:记录客户端的系统及浏览器版本;


       Connection:控制长短链接,close(短连接)、keep-alive(长连接);


       Content-Length:用于描述正文长度(解决粘包问题);


       Content-Type:+描述正文编码类型(解决了客户端或服务器如何处理正文问题);


       Cookie:实现cookie机制---维护http通信状态。


1.3空行


       \r\n,与最后一个头部字段结尾的\r\n组成连续的\r\n\r\n,构成头部结尾标志。


       http客户端or服务器在接收数据时,就是以此为标志,先取出完整的头部信息,然后解析头部,得到各个头部字段,再根据头部字段中的Content-Length确定正文长度,然后再取出指定长度的正文,最后本次请求or响应结束。


1.4正文


       提交给服务器的数据


2.响应格式


2.1首行(响应行)


首行格式:协议版本 响应状态码 状态码描述


<1>协议版本:0.9,1.0,1.1,2.0


<2>响应状态码:直观表示处理结果,分为5大类。


       1xx:一些协议切换协商的描述;101-协议切换;


       2xx:请求成功处理;200-成功;


       3xx:重定向--当一个资源的URL发生改变,使用重定向保持原链接依然可用;


               301-永久重定向:之后访问则直接访问重定向后的新地址;


               302-临时重定向:之后访问仍是访问原先的地址;


       4xx:表示客户端错误;


               400:客户端请求错误


               404:请求的资源不存在;


       5xx:表示服务端错误;


               500-服务器内部错误;


               502-网关或代理服务器,请求失败;


               504-网关或代理服务器,请求超时;


<3>状态码描述:对于状态码的一个简单文字描述。


2.2头部


头部字段:key:val\r\n形式的键值对,对于响应以及正文的一些描述;


       Set-Cookie:实现cookie机制---维护http通信状态;


       Location:保存新连接,搭配3xx实现重定向;


2.3空行


空行:\r\n间隔头部与正文


2.4正文


正文:响应给客户端的数据


三、HTTP的cookie机制&session会话管理


1.cookie机制


cookie:是服务器通过Set-Cookie字段返回的希望客户端保存的一些数据,在客户端下次请求服务的时候发送给服务器,通常用于HTTP的状态维护。


响应头部:Set-Cookie  请求头部:Cookie  合起来实现了HTTP的cookie机制:


       1.当发起一个用户登录请求,服务器进行登录验证,登录成功后,将用户名以及状态信息等数据作为Set-Cookie字段的值,发送给客户端。


       2.客户端浏览器就会把Set-Cookie中的数据保存到cookie文件中。


       3.在客户端下次请求指定服务器的时候,从cookie文件中读取出cookie内容,然后通过Cookie字段发送给服务器。


cookie机制:维护http协议通信状态的一种机制


       客户端将服务器返回的一些cookie信息保存起来,在下次请求服务器的时候发送给服务器,以此方式维护客户端的通信状态。


注:cookie存在安全隐患,因为它导致不断的将客户端的敏感隐私信息进行传输。解决方法:session会话管理。


2.session会话管理


       1.客户端登陆成功后,服务器会为每个客户端创建一个会话,其中包含了客户端的各项信息,然后将会话session信息保存在服务器的数据库中,将会话ID作为cookie内容发送给客户端。


       2.客户端在下次请求服务器的时候就会把会话ID发送给服务器,服务器通过会话ID查找会话信息,进而获取到客户端的各个状态信息。


3.cookie与session的区别


cookie:


       是将信息保存在客户端本地,每次请求的时候将信息发送给服务器,存在安全隐患。


session:


       是将客户端状态信息保存在服务器,通信的时候以session_id作为cookie进行传递,安全性相对更高。


四、HTTPS协议


1.概述


HTTPS协议:对HTTP协议进行ssl加密后的协议。


默认端口:443


2.HTTPS协议的加密流程


加密包含两个方面:身份验证,加密传输


加密:使用ssl加密。


2.1身份验证


CA验证:使用第三方权威机构进行身份验证


       1)通信双方中,需要被验证身份的一方或两方,先到权威机构颁发一个CA证书;


       2)连接建立之后,双方或需要被验证身份的一方,将自己的CA证书发送给对端;


       3)对端对证书进行解析,先判断证书颁发机构是否是自己信任的权威机构,然后到权威机构进行对方的身份认证。


2.2加密传输


加密传输:让外界无法直接获取到通信内容


1)对称加密


       加密和解密使用相同的密钥,加解密效率高。


缺点:但是密钥的协商过程容易被监听劫持。


2)非对称加密


       加密与解码使用的密钥不同,分为公钥加密和私钥解密;


       公钥:是通信前交给对方的密钥,对方使用公钥进行数据加密;


       私钥:自己收到公钥加密的数据后,使用私钥进行解密(公钥无法解密);


优点:安全度更高


缺点:加解密效率低


3)混合加密

       ①连接建立后,先使用非对称加密,将自己的公钥发送给对方;


       ②双方使用对方的公钥,对“对称密钥”协商过程进行加密;


       ③对称密钥协商完毕后,往后通信使用对称加密。


2.3 ssl加密流程


若服务器需要被验证身份:


       1)服务器先自己生成一对密钥(公钥和私钥),带着公钥到权威机构颁发CA证书;


       CA证书:权威机构信息、当前机构信息、公钥信息……


       2)连接建立成功后,服务器将自己的CA证书发送给客户端;


       3)客户端对证书进行解析,判断是否是自己的信任机构;


       4)如果是,则去对应的权威机构进行身份验证;


       5)客户端带着证书中的公钥,将 一个随机数+自己支持的对称算法列表 发送给服务器;


       6)服务器收到之后,使用私钥进行解密,给客户端也回复 一个随机数+自己支持的对称算法列表;


       7)双方使用两个随机数以及双方支持的算法列表,计算得到一个对称密钥;


相关文章
|
2天前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验
47 28
|
3天前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
62 18
|
18天前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
225 7
|
19天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
21天前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
21天前
|
存储 监控 网络协议
一次读懂网络分层:应用层到物理层全解析
网络模型分为五层结构,从应用层到物理层逐层解析。应用层提供HTTP、SMTP、DNS等常见协议;传输层通过TCP和UDP确保数据可靠或高效传输;网络层利用IP和路由器实现跨网数据包路由;数据链路层通过MAC地址管理局域网设备;物理层负责比特流的物理传输。各层协同工作,使网络通信得以实现。
|
21天前
|
安全 算法 网络安全
HTTP和HTTPS的区别
本文介绍HTTP与HTTPS的区别、HTTPS链接建立过程及常见加密算法。HTTP为明文传输,易被窃听;HTTPS通过SSL/TLS协议加密,确保数据安全。HTTPS使用端口443,提供认证机制。文中还详细讲解了对称加密(如AES、DES)和非对称加密(如RSA、ECC)算法的特点及应用场景。
|
21天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
84 1
|
28天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
64 17
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章