• 学习笔记:08_26


    学习笔记:08_26

    TCP 黏包问题

    原因

    TCP 是一个基于字节流的传输服务(UDP 基于报文的),“流” 意味着 TCP 所传输的数据是没有边界的。所以可能会出现两个数据包黏在一起的情况。

    解决
    • 发送定长包。如果每个消息的大小都是一样的,那么在接收对等方只要累计接收数据,直到数据等于一个定长的数值就将它作为一个消息。
    • 包头加上包体长度。包头是定长的 4 个字节,说明了包体的长度。接收对等方先接收包头长度,依据包头长度来接收包体。
    • 在数据包之间设置边界,如添加特殊符号 标记。FTP 协议正是这么做的。但问题在于如果数据正文中也含有 ,则会误判为消息的边界。
    • 使用更加复杂的应用层协议。

    为什么三次握手

    【答案一】因为信道不可靠,而 TCP 想在不可靠信道上建立可靠地传输,那么三次通信是理论上的最小值。(而 UDP 则不需建立可靠传输,因此 UDP 不需要三次握手。)

    【答案二】因为双方都需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信。

    【答案三】为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

    LinkedList源码:

    成员变量:

    ``

    transient int size = 0; // 当前列表的节点个数
    transient Node<E> first; // 第一个节点
    transient Node<E> last; // 最后一个节点
    

    构造方法

    ``

    /* 构造方法一 */
    public LinkedList() {
    }
    /* 构造方法二 */
    public LinkedList(Collection<? extends E> c) {
      this();
      addAll(c);
    }
    

    HTTP 的缺点

    1. 通信使用明文(不加密),内容可能会被窃听
    2. 不验证通信方的身份,因此有可能遭遇伪装
    3. 无法证明报文的完整性,所以有可能已遭篡改
  • 相关阅读:
    Volar vue终极开发神器!
    Object.assign基础与实际应用场景
    如何将Promise.then中的值直接return出来
    zap linux环境下的使用
    量化
    博客园中实现代码高亮
    react环境搭建
    博客园中实现代码高亮
    Python之标准库【shutil】
    Python之标准库【shutil】
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/11419569.html
Copyright © 2020-2023  润新知