zoukankan      html  css  js  c++  java
  • TCP/IP 总结

    • TCP/IP协议族体系结构和主要协议

    下层协议通过封装为上层协议提供相应的接口,通过头部信息中的类型字段实现分用。‘

    • ARP协议工作原理

       主机向自己所在的网络广播一个ARP请求,目标地址会回应一个ARP应答,包含自己的物理地址。对于经常访问或最近访问的IP会放入ARP高速缓存。

    • ICMP:

      一类是差错报文,用来回应网络错误。一类是查询报文,用来查询网络信息。

      ICMP重定向报文:断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表。

     

    • IPV4头部信息

    f

    头部长度:有几个32bit,4位最多表示15,所以头部最多是60.

    标识:同一个数据报的所有分片的标识相同。

    片偏移:分片相对于原始IP数据报的开始。

    头部校验和:CRC检验IP头部是否损坏。

    • IP模块工作流程
    1. 对头部做CRC校验。
    2. 查看是否设置了源站路选项(如果是则调用数据报转发子模块来处理)
    3. 查看是否发送给本机(是,选择上一层分用的协议。否,调用数据报转发子模块处理)
    • TCP协议
    • 特点:面向连接,字节流,可靠传输。(tcp连接是全双工的)
    • TCP头部信息

    32位序号:初始化为ISN,后续的序号为ISN+携带数据第一个字节的偏移

    32位确认号:基于TCP的可靠链接,每次收到数据都需要确认。

    4位头部长度:最大15个4字节,也就是60

    6位标识:

      URG:紧急指针是否有效。

      ACK:携带ACK的保文为确认报文

      PSH:接收端应立即从缓冲区读走数据

      RST:复位报文

      SYN:同步报文(请求连接)

      FIN:结束报文段

    窗口大小:缓冲区还能容纳多少字节的数据。

    选项:

      kind=2 最大报文段长度选项一般是1460(1500 - 40)

      kind=3 窗口扩大因子(只能出现在同步报文中)

      kind=4 选择性确认

      kind=5 是kind=4的补充,标记了不连续的数据块

      kind=8 精确计算通信双方的回路时间。

    • TCP三次握手

    • 连接超时

    具有相同的序号值,发送的时间间隔:1s 2s 4s 8s 16s五次重传,全部失败后放弃连接并通知。

    • TCP四次挥手

    • TCP状态转移图

    • connect失败原因:
      1. connect的目标端口不存在
      2. connect在超时时间内未收到服务器的确认报文
    • TIME_WAIT状态
      1. 可靠终止TCP连接
      2. 保证让迟来的TCP报文有足够的时间被识别并丢弃(2*MSL)
    • 复位报文段
      1. 访问不存在的端口

      2. 异常终止链接(SO_LINGER)
      3. 处理半打开连接
    • 延迟确认(服务器端)

    不马上确认上次收到的数据,在一段延迟后查看是否有数据要发送,与确认报文一起发送,减少TCP报文的数量。

    • 超时重传

    与连接超时一样,一共执行5次,五次均失败的情况下有ARP和IP接管(发送广播查询ip)。

    • 拥塞控制

    SWND(一次性写入的数据)太小,会导致网络延迟。太大,会导致网络拥塞,频繁丢包。

    判断拥塞发生的方法:

    1. 传输超时(TCP重传定时器溢出)

    2. 接收到重复的确认报文段

    慢启动和拥塞避免(通过RTT时间判断):CWND从1开始以次方的方式增加,知道达到ssthresh的值,每次收到确认加一。一旦发生拥塞,ssthresh的值减半,CWND重新从1开始次方增加。

    快速重传和快速恢复(每收到一个无序报文就立即发出重新确认):快重传因为收到了三个重新确认报文,则不必等他超时。快速恢复时ssthresh减半,CWND减半并每次收到确认后加1。

     

  • 相关阅读:
    Django——缓存
    Django——中间件设置缓存
    Django——photo
    Django——权限
    ONVIF Event消息解析(How to work with gSoap)
    当OOP语言RAII特性发展到functional形式的极致
    探讨符号式未来,函数式语言//冒号说明法
    JavaScript 目标装配式编程(Target Assemble Programming)
    When Colon Scripting is comming(JavaScript语法扩充)
    When Colon Scripting is comming (脚本最佳体验)
  • 原文地址:https://www.cnblogs.com/zhangtiezi/p/8449385.html
Copyright © 2011-2022 走看看