zoukankan      html  css  js  c++  java
  • 网络基础(一)

    网络基础(一)

    协议栈 TCP/IP( Transmission Control Protocol /Internet Protocol)

    • TCP/IP模型与OSI参考模型的共同之处是:他们都采用了层次结构的概念,在传输层定义了相似的功能,但是二者在层次划分与使用的协议上是有很大差别的,也正是这种差别对两个模型的发展产生的两个截然不同的局面,OSI属于国际意义上的协议,TCI/IP属于实际人们用到的协议。
    OSI参考模型与TCP/IP模型对照图
    OSI参考模型 TCP/IP模型
    应用层 --------> 应用层
    表示层 --------> 应用层
    会话层 --------> 应用层
    传输层 --------> 传输层
    网络层 --------> Internet层
    数据链路层 --------> 网络访问层
    物理层 --------> 网络访问层

    用户发送数据时发送方每层都会依次给数据进行封装,接受方收到时会依次解封装查看数据是否完整。就好比寄快递自己要给快递封装一下,快递员也会给快递封装一层包装,收件人会依次拆开包装才能看到快递。这种封装称为“HDR=报头”

    应用层:网络进程访问层,直接与人打交道,
    • 为应用程序进程 例如:电子邮件、文件传输和终端仿真,提供网络服务
    • 提供用户身份验证
    表示层:数据表示
    • 确保接受系统可以读出该数据
    • 格式化数据
    • 构建数据
    • 协商用于应用层的传输语法
    • 提供加密
    会话层:主机之间通信
    • 建立管理和终止在应用程序之间的会话
    传输层:(单位为“段”)传输问题
    • 确保数据传输的可靠性
    • 建立、维护和终止虚拟电路
    • 通过错误检查和恢复
    • 信息流控制来保障可靠性
    网络层:(单位为“包”)数据传输
    • 路由数据包
    • 选择传递数据的最佳路径
    • 支持逻辑寻址和路径选择
    数据链路层:(单位为“帧”)访问介质
    • 定义如何格式化数据以便进行传输以及如何控制对网络的访问
    • 支持错误检测
    物理层:(单位为“比特 bit”)二进制传输
    • 为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范

    三次握手四次挥手

    建立TCP数据传送链接需要三次握手才能建立,而断开连接则需要四次握手。(画图会比较直观,原谅我画图废柴)

    三次握手 建立连接
    发送方和接受方默认处于CLOSED关闭状态
    • 建立第一次握手:
      • client将标志位SYN(发起一个新链接)=1,随机产生一个值seq(序号)=x,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
    • 第二次握手:
      • Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK(确认序号有效)都置为1,ack=x+1,随机产生一个值seq(序号)=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
    • 第三次握手:
      • Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

    双方此时处于EXTAB-LISHED 已建立连接模式

    四次挥手 解除连接
    发送方和接受方默认处ESTAB-LISHED建立连接状态
    • 第一次挥手:
      • Client发送一个FIN(释放一个连接)=1和seq=u,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1(终止等待状态)状态。
    • 第二次挥手:
      • Server收到FIN后,发送一个ACK=1给Client,确认序号ack=u+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
    • 第三次挥手:
      • Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    • 第四次挥手:
      • Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号ack=w+1,Server进入CLOSED状态,完成四次挥手。 Client进入TLME-WAIT 时间等待2MSL 。

    双方进入CLOSED状态

    以上只是模拟大概挥手过程,有些情况下会有例外。

    IP地址

    • 每台主机(计算机、网络设备、外围设备)它们可唯一标识网络中的每台设备,相当于每个人的身份证,必须具有唯一性。

    • IP地址由两部分组成

      • 网络ID
        • 标识网络
        • 每个网段分配一个网络ID
      • 主机ID
        • 标识单个主机
        • 由组织分配给各设备
      • 子网掩码
        • 标识网络位位数
    • IP地址为32位二进制数,可将32位二进制数划分为四组8位二进制八位数,每组二进制八位数(或字节)均可转换为十进制数,转换结果就是平时人们见到的样子。

    • 公式

      • 32位IP=网络ID+主机ID
      • 一个网络中IP数量=2^主机位ID-2
      • 网络ID值=IP “于”子网掩码
      • 子网数=2^(网络ID位数) 损失IP数=(2^n-1)*2

    划分子网:将一个大网划分成多个小网,网络ID向主机ID借n位,意味着划分成2^n个子网 由于网络细分的情况太严重,为了担心路由信息过于庞大导致网络效能不佳,有的时候我们反而把网络位借给主机位

    划分超网:将多个小网合并成一个大网,主机ID向网络ID借n位

    IP分类
    • A:特征 0开头 前8位网络ID 1-126
    • B:特征10开头 前16位网络ID 128-191
    • C:特征110开头 前24位网络ID 192-223
    子网掩码

    子网掩码是一个32位的地址,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

    IP:172.16.0.100/16  转换为二进制
    二进制IP:10101100.00010000.00000000.01100100
    子网掩码:11111111.11111111.00000000.00000000
    网络ID:10101100.00010000.00000000.00000000
    网络ID转换为十进制:172.16.0.0

    二进制转换一个不麻烦的小公式

    1 0 0 0 0 0 0 0 = 128
    
    1 1 0 0 0 0 0 0 = 192
    
    1 1 1 0 0 0 0 0 = 224
    
    1 1 1 1 0 0 0 0 = 240
    
    1 1 1 1 1 0 0 0 = 248
    
    1 1 1 1 1 1 0 0 = 252
    
    1 1 1 1 1 1 1 0 = 254
    
    1 1 1 1 1 1 1 1 = 255
  • 相关阅读:
    NABCD
    返回一个整数数组中最大子数组的和。
    四则运算
    返回一个二维整数数组中最大子数组的和
    返回一个整数数组中最大子数组的和
    解决方案
    测绘软件
    ImageMagick还是GraphicsMagick?
    opencv-2.4.11编译备忘
    Graphicmagick编译
  • 原文地址:https://www.cnblogs.com/MYue/p/6821360.html
Copyright © 2011-2022 走看看