TCP/IP-浏览器请求过程-HTTPS

  • TCP/IP四层网络模型:数据链路层、网络层、传输层、应用层
    1、数据链路层:数据链路层把物理层的各个电脑连接起来了,传输最底层的0和1电路信号。
    2、网络层:是基于ip协议。一个子网内的机器之间通信,就是在数据包里写上对方的mac地址,然后交换机广播出去ok了;但是如果是跨子网的通信,就是写上对方的ip地址,然后先通过mac地址广播到路由器,让路由器再根据另外一个子网的ip地址转换为mac地址,通过另外一个子网的交换机广播过去
    3、传输层:主要为两台主机上的应用提供端到端的通信。TCP协议和UDP协议
    4、应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)文件传输协议(FTP)网络远程访问协议(Telnet)域名解析协议(DNS)等

  • 浏览器请求过程
    1、我们打开一个浏览器,请求www.baidu.com地址,这个时候找DNS服务器,DNS服务器解析域名之后,返回一个ip地址,比如172.194.26.108。
    2、接着会判断两个ip地址是不是一个子网的,用子网掩码255.255.255.0,对两个ip地址做与运算,拿到192.168.31.0和172.194.26.0。
    3、是同一个子网通过交换器传输。不是一个子网的,那就得发送一个数据包给网关,其实你就认为是我们的路由器吧,就是192.168.31.1,而且我们是可以拿到网关ip地址的mac地址的,现在我们从应用层出发,通过浏览器访问一个网站,是走应用层的http协议的。
    4、先按照应用层的http协议,封装一个应用层数据包,数据包里就放了http请求报文,这个时候会将这个http请求报文打包成一个数据包,仅仅只是数据包的数据部分,此时是数据包是没有头的。
    5、接着就是跑传输层来了,这个层是tcp协议,这个tcp协议会让你设置端口,会把应用层数据包给封装到tcp数据包中去,而且会加一个tcp头,这个tcp数据包是对应一个tcp头的,这个tcp头里就放了端口号信息
    6、接着跑到网络层来了,走ip协议,这个时候会把tcp头和tcp数据包,放到ip数据包里去,然后再搞一个ip头,ip头里本机和目标机器的ip地址。

  • tcp三次握手过程
    建立三次握手的时候,TCP报头用到了下面几个东西,ACK、SYN、FIN。

    第一次握手,客户端发送连接请求报文,此时SYN=1、ACK=0,这就是说这是个连接请求,seq = x,接着客户端处于SYN_SENT状态,等待服务器响应。

    第二次握手,服务端收到SYN=1的请求报文,需要返回一个确认报文,ack = x + 1,SYN=1,ACK = 1,seq = y,发送给客户端,自己处于SYN_RECV状态。

    第三次握手,客户端收到了报文,将ack = y + 1,ACK = 1,seq = x + 1

为啥不是2次或者4次握手呢?

1)假设两次握手就ok了,要是客户端第一次握手过去,结果卡在某个地方了,没到服务端;
完了客户端再次重试发送了第一次握手过去,服务端收到了,ok了,大家来回来去,三次握手建立了连接

2)结果,尴尬的是,后来那个卡在哪儿的老的第一次握手发到了服务器,服务器直接就返回一个第二次握手,
这个时候服务器开辟了资源准备客户端发送数据啥的,结果呢?客户端根本就不会理睬这个发回去的二次握手,
因为之前都通信过了。

3)但是如果是三次握手,那个二次握手发回去,客户端发现根本不对,就会发送个复位的报文过去,让服务器撤销开辟的资源,别等着了。

4)因为3次握手就够了,不需要4次或者5次浪费资源了。
  • https
    http协议都是明文的,是没有加密的,所以其实现在一般大部分应用都是用https协议的。之前是基于SSL协议对http进行加密,后来又升级到了TSL协议来加密,现在称之为SSL / TSL吧。
    1、浏览器把自己支持的加密规则发送给网站
    2、网站从这套加密规则里选出来一套加密算法和hash算法,然后把自己的身份信息用证书的方式发回给浏览器,证书里有网站地址、加密公钥、证书颁发机构
    3、浏览器验证证书的合法性,然后浏览器地址栏上会出现一把小锁;浏览器接着生成一串随机数密码,然后用证书里的公钥进行加密,这块走的非对称加密;用约定好的hash算法生成握手消息的hash值,然后用密码对消息进行加密,然后把所有东西都发给网站,这块走的是对称加密
    4、网站,从消息里面可以取出来公钥加密后的随机密码,用本地的私钥对消息解密取出来密码,然后用密码解密浏览器发来的握手消息,计算消息的hash值,并验证与浏览器发送过来的hash值是否一致,最后用密码加密一段握手消息,发给浏览器
    5、浏览器解密握手消息,然后计算消息的hash值,如果跟网站发来的hash一样,握手就结束,之后所有的数据都会由之前浏览器生成的随机密码,然后用对称加密来进行进行加密。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值