ServerHelloDone
随后服务端回复"hello done"告知打招呼完毕。
打完招呼完毕后,客户端对证书进行核实。然后根据密码套件也生成椭圆曲线的公钥,用"Client Key Exchange"消息发给服务器:
Client Key Exchange
此时客户端和服务端都有了密钥交换的两个参数(Client Params、ServerParams),然后通过ECDHE算法算出了一个新的值,叫“Pre-Master”。有了主密钥和会话密钥,客户端发送“Change Cipher Spec”和“Finished”消息,最后将所有消息加上摘要发送给服务器验证。
服务器同样发送“Change Cipher Spec”和“Finished”消息,握手结束,开始进行HTTP请求与响应。
7、初探域名我们知道域名的出现让我们更容易记忆,按照"."分割,越靠近右边级别越高。域名本质是一个名字空间系统,采用多级域名的方式区分不同的国家,公司等,作为一种身份的标识。根域名服务器(Root DNS Server):管理顶级域名服务器,返回“com”“net”“cn”等顶级域名服务器的 IP 地址;顶级域名服务器(Top-level DNS Server):管理各自域名下的权威域名服务器,比如:
com 顶级域名服务器可以返回 apple.com 域名服务器的 IP 地址;权威域名服务器(Authoritative DNS Server):管理自己域名下主机的 IP 地址,比如apple.com 权威域名服务器可以返回 www.apple.com 的 IP 地址**。
HTTP特点小结
写到这里,说它简单是假的,简单的东西通常更具有扩展的可能性。根据需求的变更,越来越复杂。1:灵活且易扩展,他的头部字段很多都是可定制且可扩展2:应用广泛。各个领域都有涉及。"跨平台,跨语言"3:无状态。没有记忆功能,少功能即少占用资源。另外无状态更容易搭建集群,通过负载均衡将请求转发到任意一台服务器。缺点是无法支持需要连续步骤的"事务"操作。我们知道TCP协议有11种状态,不同状态代表通信过程中不同的含义。同样操作系统中的进程也有执行,就绪,活动阻塞等多种状态。但是HTTP全程都是"懵逼"无状态。比如小华请求服务器获取视频X,服务器觉得可行就发给小华。小华还想获取视频Y,这时服务器不会记录之前的状态,也就不知道这两个请求是否是同一个,所以小华还得告诉服务器自己的身份。4:明文。优点是能让开发人员通过wireshark工具更直观的调试。缺点即裸奔互联网,没隐私可言。5:可靠传输。HTTP为应用层协议,基于TCP/IP,而TCP为“可靠”传输协议,因此HTTP能在请求应答中"可靠"传输数据。6:应用层协议。应用层协议很多,其中常用的邮件协议SMTP,上传下载文件ftp,默认端口22/23,SSH远程登录(XSHELL)。这些应用层协议都太专一,而HTTP通过各种头部字段,实体数据的组合,并综合缓存代理等功能,不得不说是网络中的冠希哥。
HTTP识别(还原)
这里说的识别,通过代码层面(libpcap封装)实现HTTP的识别,也能进一步体现TCP/IP协议栈的分层特性。先看回忆一下IP头部格式。