计网10——HTTP(应用层)2

98 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

认证

通过使用 证书对通信方进行认证

数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。

服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名用CA的私钥对运营人员的公钥加密得到数字签名),然后分配这个已签名的运营人员的公开密钥,并将该公开密钥数字签名)放入公开密钥证书后绑定在一起。

进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥(数字签名)之后,使用(内置的)CA的公钥解数字证书中服务器的真实公钥,就可以开始通信了。(客户端随机生成32位的私钥,用客户端公钥加密后传输给服务器端,然后使用该私钥对称加密进行通信)

进行 HTTPS 通信时,服务器会把证书公钥发送给客户端。客户端取得其中的公开密钥(数字签名)之后,使用(内置的)CA的公钥解数字证书中服务器的真实公钥如果该真实公钥是服务器的公钥则验证通过,就可以开始通信了。

GET与POST的区别?

  1. GET是幂等的即读取同一个资源,总是得到相同的数据),POST不是幂等的
  2. GET一般用于从服务器获取资源,而POST有可能改变服务器上的资源
  3. 安全性GET请求被缓存、收藏,且是明文传输数据。POST的数据不会被保存,安全性相对较高
  4. GET的长度有限制(操作系统或者浏览器),而POST数据大小无限制
  5. GET只允许ASCII字符,POST对数据类型没有要求,也允许二进制数据;
  6. 请求形式上:GET请求的数据附在URL之后,在HTTP请求头中;POST请求的数据在请求体中;

Session与Cookie的区别?

Session是服务器端保持状态的方案Cookie是客户端保持状态的方案

Cookie保存在客户端本地,客户端请求服务器时会将Cookie一起提交;Session保存在服务端,通过检索Sessionid查看状态。保存Sessionid的方式可以采用Cookie,如果禁用了Cookie,可以使用URL重写机制(把会话ID保存在URL中)。

从输入网址到获得页面的过程 (越详细越好)?

  1. URL解析:获得目标 Web 服务器的域名。【www.server.com】 http表示请求协议,//后面就是服务器域名

  2. DNS域名解析:查询域名对应的IP地址,具体过程包括浏览器搜索自身DNS缓存、搜索操作系统DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询,获得目标IP地址。

  3. 通过 DNS 获取到 IP 后,把 HTTP 的传输工作交给操作系统中的协议栈。协议栈包含传输层的TCP 和 UDP 协议和网络层的IP 协议

    • ICMP 用于告知网络包传送过程中产生的错误以及各种控制信息
    • ARP 用于根据 IP 地址查询相应的 MAC 地址
  4. 浏览器通过协议栈中的TCP协议向服务器请求建立链接,发起三次握手。(HTTP需要可靠连接)

    • 三次握手:【syn=1 seq=x】 【syn=1 ack=x+1 seq=y】【ack=y+1 seq=x+1】防止已失效的连接请求报文段突然又传送到了服务端,而产生错误。
    • 建立请求过程中会协商MSS值、接收窗口值三次握手完毕之后进行HTTPS验证证书、传递对称加密的密钥
    • MSSTCP的一个数据报受制于MTUTCP单个数据报的最大消息长度,称为MSS
    • MTU:最大数据传输单元,以太网帧的MTU是1500字节,最小长度是46字节
    • 流量控制 使用滑动窗口协议控制发送方的发送速率保证接收方接收时不会溢出
    • 拥塞控制 使用慢开始拥塞避免快重传(丢失)、快恢复(超时),来降低整个网络的拥塞程度
  5. TCP/IP链接建立起来后,浏览器向服务器发送HTTPs请求;(服务器两小时没有收到客户端数据,则会每隔75秒发送一次发送探测报文段,若发送10个探测报文仍然没反应则关闭连接)

  6. 服务器接收到HTTP请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器

  7. 浏览器解析并渲染视图,若遇到js文件、css文件、图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源,最终向用户呈现一个完整的页面;