网址协议你了解多少?

请添加图片描述

HTTP网址

http协议简介
超文本传输协议(HyperText Transfer Protocol, HTTP):
一种无状态的,以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动
简单来说就是客户端和服务端进行数据传输的一种规则

HTTP报文格式

HTTP协议的请求报文和响应报文的机构基本不同,由三大部分组成:

  • 起始行(start line):描述请求和响应的基本信息
  • 头部字段集合(header):使用key-value 形式更详细地说明报文
  • 消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据
    在这里插入图片描述
    请求行报文格式
    在这里插入图片描述
  • 请求方法:如GET/HEAD/PUT/POST,表示对资源的操作;
  • 请求目标:通常是一个URL,标记了请求方法要操作的资源;
  • 版本号:表示报文使用的HTTP协议版本。

响应行报文格式
在这里插入图片描述

  • 版本号:表示报文使用的HTTP协议版本;
  • 状态码:一个三位数,用代码的形式表示处理的结果,比如200是成功,500是服务器错误;
  • 原因:作为数字状态码补充,是更详情的解释文字,帮助人理解原因

HTTP头字段

头部字段是key-value的形式,key和value之间“:”分隔,最后用 CRLF 换行表示字段结束,比如前后分离时经常遇到的要与后端协商传输数据的类型“ Content-type:application/json ”,这里key就是“ Content-type ”,value就是“ application/json ”。HTTP头字段非常灵活,不仅可以使用标准里的Host、Connection等已有头,也可以任意添加自定义头,这就给HTTP协议带来了无限的扩展可能

头字段注意事项

  • 字段名不区分大小写,字段名里不允许出现空格,可以使用连字符“ - ”,但不能使用下划线“_”(有的服务器不会解析带“ _ ”的头字段)。字段名后面必须紧接着“:”,不能有空格,而“:”后的字段值前可以有多个空格;
  • 字段的顺序是没有意义的,可以任意排列不影响语义;
  • 字段原则上不能重复,除非这个字段本身语义允许,例如 Set-Cookie。

常用头字段
HTTP协议中有非常多的头字段,但基本上可以分为三大类:

  • 请求字段:请求头中的头字段;如Host,Referer。
  • 响应字段:响应头中的头字段;如Server,Date;
  • 通用字段:在请求头和响应头里都可以出现,如Content-type,Connection;

HTTP请求的完整过程
当用户在浏览器输入网址回车之后,网络协议都会做了哪些工作呢?

  1. 首先干活的是浏览器应用程序,他要解析出URL中的域名
  2. 根据域名获取对应的ip地址,首先从浏览器缓存中查看,如下可以查看浏览器中域名对应ip的解析:chrome://net-internals/#events
  3. 拿到IP地址后,浏览器就可以发起与服务器的三次握手
  4. 握手建立之后,就开始组装http请求报文,发送报文
  5. 服务器收到请求报文之后开始,请求报文解析,生成响应数据,发送响应数据
  6. 浏览器收到响应之后,开始渲染页面
    在这里插入图片描述

HTTPS网址

由于HTTP天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求/响应报文,数据不具有可信性。
因此就诞生了为安全而生的HTTPS协议。
使用HTTPS时,所有的HTTP请求和响应在发送到网络之前,都要进行加密。
在这里插入图片描述

SSL/TLS
SSL 即安全套接层(Secure Sockets Layer),由网景公司于1994年发明,IETF 在 1999 年把它改名为 TLS (传输层安全,Transport Layer Security),正式标准化,到今天TLS已经发展出了主流的三个版本,分别是2006年的1.1、2008年的1.2、2018年的1.3,每个新版本都紧跟密码学的发展和互联网的现状,持续强化安全和性能,已经成为了信息安全领域中的权威标准。

摘要算法
摘要算法能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。任意微小的数据差异,都可以生成完全不同的摘要。所以可以通过把明文信息的摘要和明文一起加密进行传输,数据传输到对方之后再进行解密,重新对数据进行摘要,在比对就能发现数据没有被篡改。这样就保证了数据的完整性。
在这里插入图片描述

加密算法
对称密钥加密算法:编、解码使用相同密钥的算法,如(AES,RC4;ChaCha20)。

非对称密钥加密算法:它有两个密钥,一个叫“公钥”,一个叫“私钥”,两个密钥是不同的,公钥可以公开给任何人使用,而密钥必须严格保密。非对称加密可以解决“密钥交换”的问题,网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为密钥私钥,所以就无法破解密文。非对称密钥加密系统通常需要大量的教学运算,比较慢。如(DH、DSA、REA、ECC)

在这里插入图片描述
TLS 里使用的混合加密方式,即把对称加密和非对称加密结合起来呢,两者互相取长补短,即能高效地加密解密,又能安全地密钥交换。大致流程如下:

  • 通信开始的时候使用非对称算法如RSA,ECDHE先解决密钥交换的问题
    在这里插入图片描述

  • 用随机数产生对称算法使用的“会话密钥”,再用公钥加密。会话密钥很短,所以即便使用非对称加密算法也可以很快完成加解密。
    在这里插入图片描述

  • 对方拿到密文后用私钥解密,取出会话密钥。完成对称密钥的安全交换,后续就是使用对称算法发完成数据交换
    在这里插入图片描述
    身份验证
    数字证书组成:
    CA信息,公钥用户信息,公钥,权威机构的签名,有效期
    数字证书作用:

  • 通过数字证书向浏览器证明身份

  • 数字证书里面包含了公钥

数字证书的申请和验证:
如何申请:

  • 生成自己的公钥和密钥、服务器自己保留私钥
  • 向CA机构提供公钥,公司,域名信息等待认证
  • CA机构通过线上,线下多种途径验证你提交信息的真实性,合法性
  • 信息审核通过,CA机构则会向你签发认证的数字证书,包含了公钥,组织信息,CA信息,有效时间,证书序列号,同时生成一个签名;签名步骤:hash(你用于申请证书所提交的明文信息)=信息摘要;CA再使用私钥对信息摘要进行加密,密文就是证书的数字签名

浏览器如何验证呢?
有了CA签名过的数字证书,当浏览器访问服务器,服务器会返回数字证书给浏览器。浏览器收到证书后对数字证书进行验证。
首先浏览器读取证书中相关的明文信息,采用CA签名时相同的hash函数计算得到信息摘要A,利用对应的CA公钥解密数字签名数据得到信息摘要B,如果
摘要A和摘要B一致,则可以确认证书时合法的

TPC网址

简介
TCP(Transmission Control Protocol):
面向连接的,可靠的,基于字节流的传输层通信协议

特点:

  • 基于连接的:数据传输之前需要建立连接
  • 全双工的:双向传输
  • 字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃
  • 流量缓冲:解决双方处理能力的不匹配
  • 可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性
  • 拥塞控制:防止网络出现恶性拥塞

在这里插入图片描述
TCP三次握手

  1. TCP连接:四元组 [ 源地址,源端口,目的地址,目的端口 ]
  2. 确认连接:TCP三次握手
    a.同步通信双方初始序列号(ISN,initial sequence number)
    b.协商TCP通信参数(MSS,窗口信息,指定校验和算法)

如何进行握手?
在这里插入图片描述
在这里插入图片描述

状态连接查看:

netstat -ntp -c 1

TCP四次握手
在这里插入图片描述
A:发送FIN数据包,代表A不在发送数据
B:收到请求,开始应答,避免了A重新发送FIN重试(应答机制)
B:处理完数据之后关闭,关闭连接,及发送FIN请求
A:收到请求之后发送ACK应答,B服务可以释放连接

等待2MSL后释放连接

  1. 防止报文丢失,导致B重新发送FIN
  2. 防止滞留在网络中的报文,对新建立的连接造成数据扰乱
    字节流的协议
    TCP把应用交付的数据仅仅看成时一连串的无结构的字节流,TCP并不知道字节流的含义,TCP并不关心应用程序一次将多大的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥堵的程序来决定一个报文段应该包含多少个字节在这里插入图片描述

数据可靠性传输

在这里插入图片描述
重传机制

  1. akc报文丢失
    在这里插入图片描述
  2. 请求报文丢失
    在这里插入图片描述
    滑动窗口协议与累计确认(延时ack)
    滑动窗口大小同通过tcp三次握手和对端协商,且收网络状况影响
    在这里插入图片描述

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终将站在顶峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值