网络编程

2022/8/8 1:24:30

本文主要是介绍网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 软件开发架构
    • C/S架构
    • B/S架构
    • 服务端三大特征
  • 网络理论
    • 远程数据传输发展史
    • 交换机
    • 局域网
    • 互联网
    • 路由器
  • OSI七层协议(五层)
    • OSI七层协议
      • 物理连接层
      • 数据链路层
      • 网络层
      • 传输层
      • 会话层
      • 表示层
      • 应用层

软件开发架构

C/S架构

Client (客户端)<==========> Server(服务端)

  • C/S数据传输过程
        "C"			    "S"
    | 客户端软件                 服务端
    | 操作系统                   操作系统
    ↓ 计算机硬件  <==========>   计算机硬件 
    

B/S架构

Browser (浏览器)<==========> Server(服务器)

  • 其实B/S架构的底层还是用到了C/S架构,浏览器充当了各个服务器的客户端;

  • 如果使用这种架构开发,不像C/S架构开发的标准是自己定制的,而必须按照浏览器的标准来开发;

  • B/S数据传输过程

    浏览器向服务器发送请求,等待服务器的响应;
    服务器处理请求,接收并处理请求,并产生响应;
    服务器发送响应,把用户请求的数据返回给浏览器;
    浏览器解释执行HTML文件;
    用户看到想要的界面;
    

服务端三大特征

  • 24小时不间断提供服务(24小时监听)
  • 固定的地址(IP地址)
  • 能够服务多个用户(高并发)

网络理论

  • 远程数据传输发展史

    设备		 通信介质
    有线电话		电话线互联
    无线电话		信号发射器
    台式电脑		网线
    笔记本电脑	网卡
    """所以要想实现远程数据交互的前提是必须要有物理的连接介质,以及保障数据互通的安全协议等;"""
    通信定义:网络存在的意义就是跨区域数据传输,即为通信;
    协议:规定怎么做的规章制度;
    网络 = 物理链接介质 + 互联网通信协议
    
  • 交换机

    能够使接入该机器的所有计算机之间彼此互联

  • 局域网

    有交换机组成的网络
    image

  • 互联网

    可以简单的理解为是多个局域网之间彼此互联
    image

  • 路由器

    能够连接多个局域网并实现局域网之间的数据传输,(上网的核心)

    路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。
    image

OSI七层协议(五层)

  • OSI七层协议

    ‘应’-‘表’-‘会’-‘传’-‘网’-‘数’-‘物’
    image

  • 物理连接层

    • 物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层。
    • 物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”。
    • 其实就是提供一个物理连接接口(网线口 无线网卡)
  • 数据链路层

    • 功能

      功能一:规定了电信号的分组方式

      • 规定内容:
        规定1:一组数据称之为一个数据帧
        规定2:数据帧分成两部分 =》头+数据
        	head包含(18个字节):源地址与目标地址,该地址是mac地址
        	data包含(最短46个字节,最长1500字节 ):包含的是网络层整体的内容
        规定3:规定但凡接入互联网的主机必须有一块网卡,每块网卡在出厂的时候都烧制好一个全世界独一无二的地址,该地址称为mac地址
        

      功能二:以太网协议:规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字12位16进制数(Mac地址);

      • Mac地址

        每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示;前六位:厂商编号;后六位: 流水线号;

        Mac地址只能在局域网中传播,不能跨局域网

    • 计算机通信基本靠“吼”,就是以太网的工作方式是广播

      • 广播:广播是去“寻找”主机;
      • 单播:回应广播;
      • !!!广播风暴!!!
  • 网络层

    • 网络层功能

      • 划分广播域
      • 每一个广播域要接通外部,需要网关 帮内部的计算机转发到公网,网关发送数据包
      • 网关与外界通信,走路由协议传输
    • 规定

      数据帧 = 头+数据

      • 头包含:源地址与目标地址,该地址是IP地址
      • 数据包含:传输层发过来的整体内容
    • IP协议

      规定了接入互联网的计算机都必须有一个IP地址用于唯一标识;

      • IPV4
        最小0.0.0.0 === 最大255.255.255.2555 # 最多也就42亿
      • IPV6
        能够表示出地球上每一粒沙子
    • 公网IP与私网IP

      • 公网IP需要申请
      • 私网IP自带的,但是无法直接基于互联网访问
    • IPV4子网掩码

      • 32位2进制数组成:8bit.8bit.8bit.8bit
      • eg:255.255.255.0 = 11111111.11111111.11111111.00000000
      • 合法的IPV4地址组成的部分 = ip地址/子网掩码地址
        eg:172.16.10.1 / 255.255.255.0 # 不加子网掩码默认为24(172.16.10.1/24)
    • 局域网的计算:将ip地址的二进制和子网掩码的二进制与运算(同1为1,同0为0,1和0得1),然后转十进制

      计算机在同一个局域网,可以互联:
       # 案例
      计算机1-》172.16.10.1 / 255.255.255.0
      	局域网 = 172.16.10.0
      计算机2-》172.16.10.2 / 255.255.255.0
      	局域网 = 172.16.10.0
      # 如果两台计算机不在同一局域网,那么走网关传输
      

    • ARP协议 - 地址解析协议(用在数据链路层)
      将ip地址解析成mac地址

      地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
      主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址(MAC地址)。
      收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
      地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

      # 两台计算机在同一个局域网内
      计算机1 
      计算机2
      ARP:
      1、计算二者网络地址,如果一样,拿到计算机2的mac地址就可以了
      2、发送广播包
      	发送端mac
      # 两台计算机不在同一个局域网内
      计算机1
         |
        网关
         |
      计算机2
      ARP:计算机二者网络地址,如果不一样,应该拿到网关的mac地址
      

      IP地址+Mac地址可以标识全世界范围内独一无二的一台计算机;如果在同一个局域网内,IP地址只是用于回去mac地址;不在同一局域网,ARP协议获取的是网关的mac地址

  • 传输层

  • 会话层

  • 表示层

  • 应用层



这篇关于网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程