zoukankan      html  css  js  c++  java
  • 网络通信协议基础

    1.网络分层

    Frame -> 物理层
    提供网络通信环境:光纤,电缆等物理设备
    Ethernet -> 数据链路层
    提供线路之前的无差错链接,包括差错控制,流量控制
    Internet -> 网络层
    寻址,路由,分段组合,拥塞控制
    Transmission Control Protocol -> 传输层
    应用层交互,提供透明数据交互
    OSI:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

    2.TCP/UDP介绍

    TCP:双工互通,提供可靠网络传输协议,具备数据分包,解包,组装功能,点对点。HTTP、FTP、Telnet、DNS、SMTP
    UDP:用户数据协议,支持一对一,一对多广播。传输效率更高,但不安全。(QQ等及时通讯产品,视频通信)

    3.TCP握手机制

    srcPort:源端口
    dstPort:目的端口
    SeqNumber:请求序号
    AckNumber:响应序号
    Header Length:头长度,校验和:二进制和的反码
    window:窗口
    Flags:标识字段
    ACK:响应链接
    FIN:关闭链接
    PUSH:数据传输
    RST:重置操作
    RVT:预留字段
    SYN:建立链接
     
    三次握手:
    第一次握手:src->dst:seq=0
    第二次握手:dst->src:seq=0,ack=1
    第三次握手:src->dst:seq=1,ack=1
     
    SYN攻击:SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时。这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。
     
    四次握手:
    关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手
     

    4.TCP超时重传机制:

    网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间、链路带宽容量和中间节点的处理能力
     
    流量控制:
    设置滑动窗口(window),充分利用网络资源。确定发送数据大小,避免网络过载。弊端:只是考虑客户端和服务器端数据传输大小,利用缓存的方式解决数据包过大的问题,但是没有考虑网络的承载能力。
     
    拥塞机制:
    慢启动:TCP初始化一个拥塞窗口cwnd大小,收到ACK后增加数据包大小
    拥塞避免:增加一个阀值,超时后将阀值/2,减少数据包大小
    快速重传:缓存segment数据,ackNum的连续的,出现重复的ack则判定数据丢失,启动重传功功能。
     
    案例:弱网机制下重复请求,后台接口的幂等处理
     

    5.IP网段划分

    IPV4:2^4 32位 256
    IPV6:2^6 64位
    NetId->用来区分网段 HostId->服务器IP
    A:(0-127),子掩码:255.0.0.0 2^24
    B:(128-191),子掩码:255.255.0.0 2^16
    C:(192-223),子掩码:255.255.255.0 2^8
     
    判断IP在同一网段计算:
    IP->二进制,子掩码->二进制,进行AND操作 0&0 =0 0&1=0 1&1=1
     
    DNS:
    根域名“”/顶级域名com.cn/本地域名baidu.com
    域名解析过程:
    请求->
    ->本地缓存-> 本地域名
    ->没有缓存-> 根服务器(13)->顶级服务器(cn,com,org)->本地域名

    6.HTTP协议

    请求头:Accept、Accept-language、Connection、content-type、host
    状态码:200,300,404,401,505
    Cookier:内存、磁盘。客户端存储的
    http是无状态化的,那么页面的逻辑如何保证?
    Domain:
    Path:
    Expire time/Max-age:
    Httponly:
    cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
    由于在HTTP请求中的cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
    Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。
    sessions:OAUTH2.0
    服务器端保存的状态信息,跟踪用户
  • 相关阅读:
    物联网架构成长之路(11)-Redis缓存主从复制
    物联网架构成长之路(10)-Nginx负载均衡
    物联网架构成长之路(9)-双机热备Keepalived了解
    物联网架构成长之路(8)-EMQ-Hook了解、连接Kafka发送消息
    2017年年度总结
    物联网架构成长之路(7)-EMQ权限验证小结
    物联网架构成长之路(6)-EMQ权限控制
    物联网架构成长之路(5)-EMQ插件配置
    物联网架构成长之路(4)-EMQ插件创建
    物联网架构成长之路(3)-EMQ消息服务器了解
  • 原文地址:https://www.cnblogs.com/huane/p/14234537.html
Copyright © 2011-2022 走看看