• 网络基础(一)


    网络基础(一)

    协议栈 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
  • 相关阅读:
    Python 模块 itertools
    Python 字符串的encode与decode
    python 模块 hashlib(提供多个不同的加密算法)
    暴力尝试安卓gesture.key
    hdu 1300 Pearls(DP)
    hdu 1232 畅通工程(并查集)
    hdu 1856 More is better(并查集)
    hdu 1198 Farm Irrigation(并查集)
    hdu 3635 Dragon Balls(并查集)
    hdu 3038 How Many Answers Are Wrong(并查集)
  • 原文地址:https://www.cnblogs.com/MYue/p/6821360.html
Copyright © 2020-2023  润新知