zoukankan      html  css  js  c++  java
  • 网络通信部分之bs/cs架构,网络概念,osi七层网络模型,TCP/UDP协议---day27

    1.网络开发的两大架构c/s,b/s

    # ### 1.网络开发的两大架构
    a文件 -> b文件  借助c文件
    a文件和b文件进行数据交流,借助c文件中转数据
    a文件把数据放在c文件中,b文件从c文件取
    b文件把数据放在c文件中,a文件从c文件取
    构成了最早期的数据交互的原理 ->socket(套接字)的模型
    socket(套接字)是收发数据的一个工具
    
    后来有了网络之后
    a文件中的数据,可以通过网络协议,转化成101001电信号,进行发送
    a文件借助socket发送数据
    b文件借助socket接收数据
    
    
    #两大架构
    c/s
    c => client 客户端
        是具体的一个软件,比如qq,微信,lol等
    s => server 服务端
        天河三号 百亿亿次
    
    b/s
    b => browser 浏览器
        通过输入网址,访问对方的服务器,对方的服务器响应请求之后
        把对应的数据给你返回,就可以在浏览器看到了
    s => server 服务端
    
    #b/s c/s 两大架构  更好的是b/s 是未来的发展方向
    未来更多向b/s 发展,像微信小程序,支付宝程序
    (1)省去复杂漫长的下载安装环节,节省手机或者电脑的硬盘空间
    (2)因为手机便捷性,随时随地可以访问到网站和相应的服务,提升效率,加快速度

    2.网络的概念

    # ### 2.网络的概念
    #(1)ip
    ip =>  查看本地ip地址 ipconfig
    ip地址的最后一位0或者255 两个数字不能用
    一般最后一位0表达的是网段
    255代表广播地址
    
    
    #(2)网段:
    判别的依据:如果ip地址和子网掩码相与 得到的值相同就是同一网段
    子网掩码:区分网段和主机和一串ip
    # 案例一
    #ip1 192.168.31.43  通过bin转换成二进制
    11000000 10101000 00011111 00101011
    #子网掩码  255.255.255.0
    11111111 11111111 11111111 00000000
    #ip1 & 子网掩码   两两为1就为1,否则为0
    11000000 10101000 00011111 00000000
    ip1的网段:192.168.31.0
    
    #ip2 192.168.30.44
    11000000 10101000 00011110 00101100
    #子网掩码 255.255.255.0
    11111111 11111111 11111111 00000000
    # ip2 & 子网掩码
    11000000 10101000 00011110 00000000
    ip2的网段:192.168.30.0
    
    ip1和ip2的网段不同,不一样,所以不在同一网段不能通信
    
    
    #案例二 改变子网掩码
    #ip1 192.168.31.43
    11000000 10101000 00011111 00101011
    #子网掩码 255.255.0.0
    11111111 11111111 00000000 00000000
    #ip1 & 子网掩码
    11000000 10101000 00000000 00000000
    ip1的网段:192.168.0.0
    
    #ip2 192.168.30.44
    11000000 10101000 00011110 00101100
    #子网掩码 255.255.0.0
    11111111 11111111 00000000 00000000
    #ip2 & 子网掩码
    11000000 10101000 00000000 00000000
    ip2的网段:192.168.0.0
    
    结论:ip1和ip2的网段相同,所以可以通信
    ping 域名 可以查看网络是否通常(顺便可以拿到ip)
    
    
    #(3) 端口:某个程序与外界通讯的出口
    通过ip+端口 可以找到世界上任何一台电脑的任何一个软件
    端口的范围:0~65535  形式:192.168.2.1:8000
    建议自定义端口的时候,往8000以上定义
    
    20  端口:FTP文件传输协议(默认数据口)
    21  端口:FTP文件传输协议(控制)
    22  端口:SSH远程登录协议
    23  端口:telnet(终端仿真协议),木马,Tiny Telnet Server 开放次端口
    25  端口:SMTP 服务器所开放的端口用于发送邮件
    80  端口:http,用于网页浏览,木马 Executor 开放此端口
    443 端口:基于 TLS/SSL的网页浏览端口,能提供加密和通过安全端口传输的另一种http
    3306端口:MySQL 数据库端口

    3.osi七层网络模型

    应用层(应用层,表示层,会话层)
        封装数据
            依据不同的协议,封装对应格式的数据消息
            HTTP[超文本传输协议]
            HTTPS[加密传输超文本传输协议]
            FTP[文件传输协议]
            SMTP[电子邮件传输的协议]
    传输层:封装端口 传输协议TCP/UDP协议 网络层: 封装ip 版本ipv4
    / ipv6 数据链路层: 封装mac地址 指定链路层的协议(arp协议(通过ip找mac地址),rarp协议(通过mac找ip)) 物理层: 打成数据包,变成二进制字节流,通过网络进行传输 # ### 4.交换机和路由器 #交换机:对同一网段的不同机器之间进行数据转发的设备 [每一台机器和交换机相连,形成通信] 交换机从下到上拆2层,拆物理层和数据链路层,可以找到mac #路由器:对不同网段的不同机器之间进行数据转发的设备 [每一个局域网和路由器相连,形成通信] 交换机从下到上拆3层,拆物理层和数据链路层和网络层,可以找到ip #arp协议:通过ip找mac (arp地址解析协议) '''通过交换机的一次广播和一次单播找到对应的mac''' 电脑a先发送一个arp的广播包,把mac标记一个全FF-FF-FF-FF-FF-FF的广播地址 交换机接收到arp的广播包,从下到上进行拆包,拆2层,到数据链路层得到mac 发现mac是全F的广播地址,重新打包,交换机开始广播,所有连接在交换的设备都会收到arp广播包 各个主机开始拆包,对应FF广播地址可以跳过,继续向上找,发现ip不符合,直接舍弃 路由器允许从下到上拆三层,拆到ip,得到对应的网段 打开路由器的对照表 网关->网段,重新打包,找到对应的接口发送数据包 对应的交换机得到数据包,重新从下到上拆包,2层,发现全F,开始广播 数据的主机接收到广播包,从下到上拆包,ip正确,符号自己的条件 数据库主机会把ip->mac的映射关系的数据发送回当前的交换机, 此时,交换机通过单播,把对应的ip和mac发送回原来请求的主机 数据在通过路由器,交换机发送回去 原主机在得到了ip和mac之后, 重新把真实数据进行打包,从而完成发送 如果没有mac,主机一开始会发送请求包(发出找mac的请求) 各大主机在接收arp请求包的时候,都会去找对照自己本机当中的arp解析表(ip->mac) 如果没有,这个arp的请求包舍弃 如果有,会把自己的ip和mac封装在arp的响应包当中给交换机进行单播 在回来的过程中,所有相应的主机都会拿响应包中的数据更新自己的arp解析表,方便下次使用 arp协议:通过ip -> mac

    4.TCP/UDP协议三次握手

    三次握手
    
    SYN 创建连接
    ACK 确认响应
    FIN 断开连接
    
    #三次握手
        客户端发送一次请求,与服务端建立连接
        服务端接收这个请求,并且响应与客户端建立连接的请求
        (服务端的响应和请求是在一次发送当中完成的)
        客户端接收服务端的请求之后,把消息在响应给服务端
        
        接下来客户端和服务端可以发送数据了
        每发送一个数据出去,对应的主机都会有一个回执消息,确认数据的接受情况
        如果没有得到回执消息,该数据会重发一次,保证数据的完整
        不会一直不停的发下去,有时间最大允许周期
  • 相关阅读:
    Android面向切面编程(AOP)(转)
    Android性能优化
    Android 性能分析之TraceView使用(应用耗时分析)
    Lint检查选项
    Android Chromium WebView Crash
    Could not get unknown property 'assembleRelease' for project ':app' of type org.gradle.api.Project.
    Android studio gradle 无法获取 pom文件
    android 7.0 因为file://引起的FileUriExposedException异常
    Android双系统实现
    git 安装 和 基本操作
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/13046516.html
Copyright © 2011-2022 走看看