计算机网络,TCP,HTTP/HTTPS


在这里插入图片描述

模型

  • OSI 七层网络模型分为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
  • TCP/IP 四层网络模型:应用层,传输层,网际层,网络接口层。
    在这里插入图片描述
    应用层:网络与用户之间的接口,报文
    表示层:数据的加密,压缩,格式转换
    会话层:管理主机间的回话进程
    传输层:实现端到端的可靠传输,段
    网络层:实现不同网络间的路由选择,数据包
    链路层:实现物理设备的寻址,帧
    物理层:提供一个传输数据的物理媒体,比特流

过程:应用层将数据报文发送给传输层,传输层添加上TCP头部信息,再将数据段发送给网络层,网络层加上IP头部信息,再将数据包发送给链路层,链路层加上Mac信息及校验码,再将帧发送到物理层,物理层以比特流的方式在网络中传输。

协议

  1. 应用层

基于TCP

  • HTTP超文本传输协议:是一个简单的请求-响应协议,现在主要的场景是 web服务,就是网页的传输,默认使用tcp的80端口
  • HTTPs:是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,默认使用tcp的443端口
  • FTP:文本传输协议,21端口

基于UDP

  • DNS:域名系统,将域名映射为ip地址,53端口
  • DHCP:动态主机配置协议,指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码,默认使用UDP的67和68端口
  1. 传输层
  • TCP:传输控制协议。提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。全双工信道。可靠、有序、无丢失、不重复
  • UDP:用户数据报协议。发送数据前无需建立连接,不使用拥塞控制,不保证可靠交付,最大努力交付
  1. IP层
  • IP协议:网络中互联的协议
  • ARP:地址解析协议,将IP地址映射为MAC地址
  1. 链路层
  • ppp:点对点协议

TCP协议

三次握手

客户端首先向服务端发送连接请求,服务端收到请求后回复ack,客户端收到ack后回复ack,此时客户端到服务端的连接建立。双方开始通信,每次收到data后都会给对方发送ack确认。
在这里插入图片描述
为什么要三次握手?

  • 如果只有两次握手:
    1.A给B发出请求连接信号
    2.B接收到并发出请求连接
    如果这时B发出的信号丢失,那么将会握手失败,所以A需要回复确认信息给B;
  • 如果有四次握手:
    1.A给B发送请求连接信号
    2.B收到回复确认信号
    3.B发送请求连接信号
    4.A发送确认信号
    显然2,3两步可以合并;

四次挥手

客户端向服务端发起结束通信的请求,服务端收到请求后回复ack确认收到。当服务端发送完所有数据后请求断开连接,客户端收到请求后回复ack确认收到,服务器和客户端的通信断开。
在这里插入图片描述
为什么要等待2MSL后再断开?

  • 若是客户端确认断开连接的ack丢失了,则服务器会重传FIN;无论是收到还是丢失,客户端都需要等待,如果丢失了ack,服务器会在2MSL的时间段内重传,如果2MSL时间段内没有收到信息,就可以确定断开连接了。

2MSL( Maximum Segment Life) = 去向ACK消息最大存活时间(MSL) + 来向FIN消息的最大存活时间(MSL)。

为何一定要等2MSL?

  • 如果不等,释放的端口可能会重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新TCP连接报文冲突,造成数据冲突,为避免此种情况,需要耐心等待网络老的TCP连接的活跃报文全部死亡,2MSL时间可以满足这个需求。

HTTP/HTTPS

http:超文本传输协议
在这里插入图片描述

http 1.0

上图一,使用短连接,即每次请求都会经历三次握手和四次挥手。

不足:

  1. 连接无法复用:即短连接。
  2. head of line blocking:队头阻塞,上图三。若之前的请求遇到了阻塞,则后面的请求即使处理完毕了也要等待阻塞的请求处理完毕。

http 1.1

上图二,支持长连接和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在http 1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

不足:head of line blocking(上图三)

http 1.*存在的问题

  1. 明文传输;
  2. 队头阻塞;
  3. header内容太长;
  4. server不能主动push;

http 2.0

http 2.0使用多路复用技术(Multiplexing),允许同时通过单一的连接发起多重的请求-响应消息。(上图四)

改进:
①二进制传输(进行了压缩)
②多路复用,单连接 + 帧
③header头部压缩
④server可以主动push

HTTPS

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,用SSL(Secure Sockets Layer)协议对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词。

对称加密 / 非对称加密

  • 对称加密:加密秘钥和解密秘钥相同
    f(k,data) = value
    f(k,value) = data
  • 非对称加密:加密秘钥和解密秘钥不同
    f(pk,data) = value
    f(sk,value) = data

握手过程

在这里插入图片描述

  1. 浏览器将自己支持的加密算法,SSL版本发送给服务端。
  2. 服务端从中选择出一组加密算法,SSL版本,hash算法,并将自己的身份信息以证书的形式发给客户端。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
  3. 浏览器收到证书后:
    ①验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
    ②如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
    ③使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给服务器。
  4. 服务器收到数据后:
    ①使用私钥将信息解密取出密码,使用密码解密浏览器的发来的握手消息,并验证hash值是否与浏览器发来的一致。
    ②使用密码加密握手消息,发送给浏览器
    5.浏览器解密并计算握手消息的hash,如果与服务器发来的hash一致,此时握手过程结束。

其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而hash算法用于验证数据的完整性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值