• 计算机网络常见问题


    TCP 三次握手、TCP 四次挥手

    三次握手可以两次吗

    为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。

    如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。在 S ACK 的时候,C 可能已经关闭无法接受信息,导致网络资源浪费。

    四次挥手可以三次吗

    当服务端收到客户端的 SYN 连接请求报文后,可以直接发送 SYN+ACK 报文。其中 ACK 报文是用来应答的,SYN 报文是用来同步的。但是关闭连接时,当服务端收到 FIN 报文时,很可能并不会立即关闭,所以只能先回复一个 ACK 报文。只有等到服务端所有的报文都发送完了,才能发送 FIN 报文,因此不能一起发送。所以需要四次挥手。

    HTTP 报文组成部分

    请求报文:请求行、请求头、空行、请求体

    响应报文:状态行、响应头、空行、响应体

    HTTP/2 特性

    减少传输数据量:通过二进制传输 和 Header 压缩实现

    多路复用:使用同一个 TCP 连接来传输一个域名下的所有请求,请求还可以有优先级

    服务端推送:能够在客户端发送第一个请求到服务端时,提前把一部分内容推送给客户端,放入缓存当中,这可以避免客户端请求顺序带来的并行度不高,从而导致的性能问题。

    丢包重传会导致所有请求阻塞,这种情况下性能反而不如 HTTP/1。基于 QUIC 的 HTTP/3 可以彻底解决 TCP 的队头阻塞问题

    vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

    HTTPS 的工作原理

    输入 HTTPS 网址,连接 443 端口,发送一个密文族,包括浏览器所支持的加密算法清单

    服务器端选择加密算法,传送证书给客户端

    客户端解析证书,验证证书的颁发机构和过期时间,如果证书没问题,则生成一个随机值,用公钥对该随机值加密,发送给服务端

    服务端用私钥解密,得到随机值。至此,非对称加密过程结束,实现了身份认证和密钥协商。

    服务器端用随机值加密后传输信息给客户端

    客户端可以用之前生成的随机值还原出原文。至此,一个对称加密的过程结束,用于服务器端传送给客户端数据。

    因为非对称加密的性能很差,所以传输的时候用对称加密

  • 相关阅读:
    Vector3函数理解-计算两向量之间的角度
    Android报错Type Error executing aapt: Return code -1
    android中 onResume()方法什么时候执行 ??(转)
    自行实现Kinect 手势Demo踩的坑
    Kinect 2.0 默认姿势的中文意思
    C#限制float有两位小数
    Android View 从左边滑出动画 ,以及从左上,左下,右上,右下放大动画。
    注册谷歌账户时最后一步验证账户输入手机号说此电话号码无法用于进行验证,如何解决?
    Mac使用sonarqube进行代码检测
    Unable to find method 'org.gradle.api.tasks.TaskInputs.file
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13767093.html
Copyright © 2020-2023  润新知