美文网首页
面试复习-网络

面试复习-网络

作者: 云无心 | 来源:发表于2021-04-24 23:10 被阅读0次

    网络


    分层
    1. HTTP请求类型

    GET POST HEAD PUT DELETE OPTION

    1. GET POST区别

    GET:安全 幂等 可缓存
    POST:非安全 非幂等 非可缓存
    安全:(GET HEAD OPTION)
    幂等:(GET PUT DELETE)
    可缓存:(GET HEAD)

    1. 三次握手 四次挥手

    三次握手
    C SYN
    S SYN+ACK
    C ACK
    四次挥手
    C FIN
    S ACK
    S FIN+ACK
    C ACK

    为什么三次:

    1. 三次才可以阻止重复历史连接 (旧的SYN先到
    2. 三次才可以同步初始序列号(SYN +ACK才可以保证序列号一致,序列号保证去重复)
    3. 三次可以避免资源浪费
      为什么四次挥手:
      服务器通常等待完成数据的发送和处理,所以 服务端ACK和FIN分开发送

    2MSL maximun segment lifttime 报文最大生存事件(2MSL=60s)

    1. HTTP特点 和优缺点 等

    1.HTTP 是灵活可扩展的,可以任意添加头字段实现功能
    2.HTTP 是可靠传输,利用TCP/IP,‘尽量’保证数据到达
    3.HTTP 是应用层协议,比起FTP,SSH,SMTP,它更通用,能够传输人意数据
    4.HTTP 是请求-应答模式,客户端主动请求,服务器被动回复(无连接)
    5.HTTP 本质是无状态的,每个请求无关联
    无连接 (HTTP持久连接),减少建立
    无状态 (Cookie/Session)
    头部字段
    connection: keep-alive
    time:20
    max:10(多少个请求响应对)

    如何判断请求结束

    Content-length :1024
    chunked:空格

    优缺点
    1.HTTP 最大的优点是简单,灵活,易于扩展
    2.HTTP 有成熟的软硬件环境,应用广泛,是互联网的基础设施
    3.HTTP 是无状态,可以轻松实现集群化,扩展性能,可以通过cookie实现有状态
    4.HTTP 明文传输,更方便分析研究,已被窃听
    5.HTTP 死不安全的,无法验证双方身份,也无法判断是否篡改
    6.HTTP性能不算差,但是还有提升空间

    HTTP1.1
    长链接:解决效率问题,一个连接收发多个响应
    2.过多长链接也会占用资源。需要策略选择关闭
    3.队头阻塞 可以用 并发连接 和 域名分片解决
    HTTP2
    1.取消了小版本号,没有2.0
    2.兼容HTTP1
    3.HPACK压缩头部,消除重复冗余数据
    4.二进制桢传输,而非header+body
    5.虚拟流:队头堵塞,多路复用
    6.安全性提升1.2+
    HTTP3.0:
    谷歌开发的QUIC协议,利用UDP实现可靠数据传输。

    -----HTTP架构-----
    HTTP
    SSL/TLS
    TCP/IP
    -----HTTP2架构-----
    HTTP
    HPack/Stream
    TLS 1.2+
    TCP/IP

    1. Charles

    中间人攻击,CA证书 完全信任
    窃听风险 加密
    篡改风险 摘要
    冒充风险 证书

    1. HTTPS + SSL/TLS 流程
      TCP/IP 中间插入了 SSL/TLS

    C:TSL版本 ,支持的加密算法 ,随机数 C
    S:商定的加密算法,随机数S,server证书
    C:验证证书(CA发布),组装会话密钥 (随机C+随机S+预主密钥
    C:通过公钥对 预主密钥(pre-master key)加密传输 (摘要算法)
    S:私钥解密获得主密钥,组装会话密钥
    C:加密的握手消息
    S:加密的握手消息

    通信建立非对称加密交互密钥
    通信用对称加密

    1. UDP 和 TCP

    UDP

    无连接
    尽最大努力交付
    面向报文(不合并 不拆分)

    复用 分用 差错检测

    TCP

    面向连接 :开始之前需要连接(三握四挥)
    可靠传输 (无差错,不丢失,不重复,按序到达)
    面向字节流
    流量控制(滑动窗口协议,发送窗口接收大小,接受窗口发送大小)
    拥塞控制(慢开始,拥塞避免。快恢复,快重传:新的x+3)。先指数到16,线性

    1. DNS (端口53)

    使用 UDP & 明文
    递归查询 (帮你问一下)本地DNS-根域DNS-顶级DNS-权限DNS
    迭代查询 (告诉你谁可能知道)

    DNS劫持,窃听 钓鱼DNS。 DNS解析在HTTP连接之前

    解决 劫持

    1. httpDNS使用 HTTPS访问80端口
    2. 长连接 Client - 长连Server - 内网 - server
      DNS解析转发,移动为了节省资源,转发给电信DNS,但是移动电信可能不一样,跨网变慢
    1. Session/Cookie

    server生成cookie,客户端记录
    cookie主要记录用户状态,区分用户,状态保存在客户端
    修改:新cookie覆盖老cookie,规则name path domain需要一致
    删除:新cookie覆盖老cookie,,规则name path domain需要一致 设置过期时间 或者
    Max-Age, Expires,Domain(作用域),HttpOnly(只能通过HTTP传输)

    cookie安全

    1. 加密
    2. 只在https携带cookie
    3. 设置cookie为httpOnly,防止跨站脚本(https://blog.csdn.net/qq_38553333/article/details/80055521)js脚本将无法读取到cookie

    Session

    Session主要记录用户状态,区分用户,状态保存在服务端
    依赖cookie机制
    server 生成sessionId set-Cookie sessid=xxxx
    client 发送 Cookie:sessid=xxxx,通过sessid区别

    scoket

    HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。
    Socket:Socket是应用层与TCP/IP协议族通信的中间软件抽象层, 它是一组接口。 Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。

    相关文章

      网友评论

          本文标题:面试复习-网络

          本文链接:https://www.haomeiwen.com/subject/vpbcrltx.html