• 网络编程osi五层协议(一)


    五层协议:
    应用层:每个软件对于数据都有不同的自定义协议

    传输层:建立端口到端口的通信
    端口:确定软件的位置
    每个软件都有固定的端口
    端口范围:0-65535 0-1024为系统占用端口
    端口 + ip + mac + 广播 能确定世界上任何一个计算机软件的位置

    网络层:找到对方局域网的位置
    根据ip协议寻找对方局域网的位置
    ip + mac +广播就能确定世界上任何一台计算机的位置了

    数据链路层:
    定义了电信号的分组方式,主要是对数据进行分组
    封包:源地址,目标地址
    早期每个公司都有不同的标准,后来统一标准:以太网协议
    规定数据分为两个部分:
    数据头 | 数据
    head | date
    数据头规定固定字节:18个字节
    数据头部分 :
    源地址:6个字节
    目标地址:6个字节
    数据类型:6个字节
    将数据分为组的形式:一组电信号:数据报 也叫一帧
    head长度+data长度= 最短64字节 最长1518字节,超过最大限制就分片发送
    data长度也就是数据包的内容
    网卡中的mac的地址:每个网卡出厂的时候都会被烧上独一无二的mac地址
    12位16进制数组成:
    前六位是厂商编号 后六位:流水线号 40-8D-5C-93-F1-DE
    计算机的通信方式: 广播
    mac+广播的理论上可以跟所有的计算机进行通信,
    但是实际上会产生广播风暴,效率低,工作量太大
    所有mac+广播的形式仅限于局域网内

    物理层:
    基于电器特性发送高低电平 0101011 高电压对应数字1 低电平对象数字0

    例子:
    给对方送一个消息'今晚吃鸡'
    软件部分:
    应用层:将消息封装成数据类型譬如字典{msg:'今晚吃鸡'}
    操作系统部分:
    传输层:确定端口,确定计算机中软件的位置8000 | {msg:'今晚吃鸡'}
    网络层:ip:192.168.16.1 | 8000 | {msg:'今晚吃鸡'}
    确定计算机在哪个局域网
    数据链路层:源mac地址 目标mac地址 | ip:192.168.16.1 | 8000 | {msg:'今晚吃鸡'}
    确定计算接在局域网的哪个位置
    物理层:网线将数据以电信号的形式发出去

    细节补充:
    原则上同一个局域网就是通过源mac地址+目标mac地址+数据+广播 可以将数据传输
    这里有一个交换机mac的地址自主学习功能,交换机有一个mac与网口的对照表
    交换节第一次链接电脑的时候:
    在已知对方ip的情况下,网口进行连接的计算机发送一个数据.发送给目标mac,第一次的时候不知道目标的mac的地址
    但是 ip地址 +ARP协议 可以计算出对方的mac地址
    例子:
    第一次发送给ip地址为192.168.11.1
    通过广播:在同一局域网内广播一个数据
    (源mac地址40-8D-5C-93-F1-DE ,对方mac FF-FF-FF-FF-FF-FF)(源ip :192.168.10.22 对方ip 192.168.10.24)
    找到符合的ip:
    回传一个数据:
    (源mac地址40-8D-5C-92-F1-DE ,对方mac FF-FF-FF-FF-FF-FF)(源ip :192.168.10.22 对方ip 192.168.10.24)
    交换节会记住回传的mac地址

    同一局域网内:
    第一次发送数据需要用广播的形式,根据ip获得对方的mac地址,将mac地址与网口写入交换机的对照表
    第二次发送数据(计算机和网口没更换):不用广播,直接从mac对照表寻找mac地址

    如何确定局域网的位置:
    网络层:通过ip协议确定局域网的位置
    怎么通过ip协议确定局域网的位置:
    同一局域网内的所有计算机的ip地址绝对不同
    ip+子网掩码才能确定是否在同一网段
    如果前提都是c类的子网掩码:最多能有253个ip
    0 不能用 255不能用 254不能用 有253个ip

    ip + mac + 广播 能获取世界上任何一台电脑的位置


    总结:
    通过计算机发送数据, 我要先获取对方的ip和子网掩码:
    去判断是不是同一个局域网
    如果是同一个局域网: 通过IP ,ARP协议获取mac发送数据.
    如果不是同一个局域网: 网关(路由协议)一层一层的发送.
  • 相关阅读:
    SecureCRT 自定义配置
    deepin 使用笔记
    TotalCommander 使用笔记
    不同环境下MySQL 表名大小写敏感问题
    Windows / Linux 下查看文件 MD5
    设置ll命令日期格式 并友好显示文件大小
    scp 常用命令
    【C++ IO机制】stream_buf 解析
    d
    【C++ IO机制】标准IO库(C库函数)
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10396518.html
Copyright © 2020-2023  润新知