先来回顾一下http协议的流程,http属于应用层的协议,tcp传输层,ip网络层,arp 、mtu链路层,ip封装tcp,https的图大致为下图所示:
IP层的16位总字节为65535,意思是一个ip的最大数据包的大小,mtu是限制了链路层的数据包的大小,所以ip层的每个数据包的大小限制在46-1500字节之内,超过1500就要对ip进行分片,通过16位标识能区分一个完整ip包的所有分包;
IP层的TTL8位,其最大值为2^8-1=255,这个是用来记录路由器的跳数,为了防止无限跳下去,设置了一个最大值,8位155,跳一个路由-1,当==0的时候丢弃数据包,不跳了;window与linux系统里面的TTL是不一样的,有的时候可以用ping查看TTL来确定操作系统类型,这里ping查看是指不通过路由器在局域网中进行的,因为经过一个路由器就要-1,因为IP报文中都带TTL参数,而ping是可以看到对方的TTL,这个TTL不是你的,是对方的IP里面参数,通信是指2个或者2个以上的对象;
IP首部长度,指的不是字节,指的是一个32位二进制,例如32位cpu寻址一样,首部最大长度为4,最大值为2^4-1=15,则有15个32位这样的位,则位的大小为15*32,因为8位为1个字节,所以最大字节为15*32/8=60,tcp最大值也是60;
MSS是tcp的数据大小,他是MTU-IP头-TCP头的值;TCP的状态码就是确定每次握手的规律的;
现在来看一下Https协议的时序图:
上面浏览器第一次访问HTTPs网站的时候,服务器返回一个CA证书给浏览器让他选择安装,并验证证书信用度;
上面整个过程用到了,CA认证证书(概要文件),http协议,对称算法,非对称算法,因为对称算法的效率比非对称的效率高,
所以3次握手之后就一致选择对称算法进行加密解密消息