• 初识网络编程


    网络编程

    ---------------------------不定时的更新开始了,且更且珍惜------------------------------

    我要每次都写一遍:前面的还没补完,以此催促不定时更新的我

     

    网络编程

    软件开发架构:有两种,c/s架构、b/s架构

       c/s架构:

           c:客户端

           s:服务端

       b/s架构:

           b:浏览器

           s:服务器

      什么是服务端?什么是客户端?

          从名字我们也能大致了解到它们的作用,服务端提供服务,客户端体验服务。

          服务端:24小时不间断通过服务,谁来就服务谁

          客户端:想体验服务的时候就去找服务端体验服务

          手机端:看起来c/s架构好像比较火,其实不然,微信小程序、支付宝第三方接口:统一接口 都是b/s架构

      PC端:b/s比较火

      本质上:b/s其实也是c/s

    学习网络编程 >>> 开发c/s架构的软件

    并发编程,前端,数据库,框架 >>> 开发b/s架构的软件

     

    目的:需要实现远程数据传输(起源于美国军事)

    那么想要实现远程通信,第一个需要具备的条件就是:物理连接介质。

    而计算机与计算机之间实现远程通信,光有物体连接介质是不够的,还需要一个共同的标准即协议

     

    ’‘’

    我微笑码字,关于python的浪漫,原来真心更新博客并不这么简单

    温习银幕上,那熟悉的代码

    关于python的了解我又多传了一行

    ‘’‘

     

    接下来对计算机相关的协议介绍:主要是OSI七层协议(模型)

    OSI七层协议

        应用层

        表示层

        会话层

        传输层

        网络层

        数据链路层

        物理连接层

    我们只有了解下面五层:

        应用层

        传输层

        网络层

        数据链路层

        物理连接层

    下面详细介绍这五层:

        从最底层开始依次往上,每一层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件

        搞清了每一层的主要协议就理解了整个互联网通信的原理

    1.物理连接层

        实现计算机之间物理连接,传输的数据都是01010的二进制

        电信号工作原理:电只有高低电平

     

    2.数据链路层(“以太网协议”):

        1)规定了二进制数据的分组方式(数据链路层的功能:规定了电信号的分组方式)

        2)规定了只要是接入物联网的计算机,都必须有一块网卡

        网卡上面刻有世界唯一的编号:

          每块网卡出厂时都被烧制了一个世界唯一的mac地址

          长度为48位2进制,通常由12位16进制数表示(前六位是厂商号,后六位是流水线号)

          我们管网卡上刻有的编号叫电脑的mac地址

        -------上面的两个规定即为“以太网协议”

    基于以太网协议通信:通信基本靠吼(脑补土拨鼠的"啊"------------------------------------------------)

    弊端:广播风暴

    交换机:如果没有交换机,你的电脑就会变成马蜂窝(“嗡嗡嗡嗡嗡嗡嗡嗡嗡”),有了交换机之后,所有的电脑只需要有一个网卡连接交换机即可实现电脑之间的物理连接。

     

    世界范围的互联网是由一个个彼此隔离的小局域网组成,如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,不仅仅效率低,更是一种灾难

     

    3.网络层(IP协议)

      功能:引入一套新的地址用来区分不同分广播域/子网,这套地址即网络地址

      规定了计算机都必须又有一个IP地址

        IP地址特点:点分十进制

        有两个版本ipv4和ipv6(为了能够兼容更多的计算机)

        最小:0.0.0.0

        最大:255.255.255.255

      IP协议可以跨局域网传输

      IP地址能够唯一标识互联网中独一无二的一台机器

     

    4.传输层(端口协议)

      TCP,UDP基于端口工作的协议

      其实计算机之间通信其实是计算机上面的应用程序与应用之间的通信

      端口(port):唯一标识一台计算机某一个基于网络通信的应用程序

      端口范围:0~65535(动态分配)

        注意:0~1024通常是归操作系统分配的端口号

        通常情况下,我们写的软件端口号建议起在8000之后

        flask框架默认端口5000

        django框架默认端口8000

        mysql数据库默认端口3306

        redis数据库默认端口6379

      注意:一台计算机上同一时间一个端口号只能被一个应用程序占用

    小总结:

        IP地址:唯一标识全世界接入互联网的独一无二的的、机器

        port端口号:唯一标识一台计算机上的某一个应用程序

        ip+port:能够唯一识别全世界独一无二的计算机上的某一个应用程序

    补充:

        arp协议:根据ip地址解析mac地址

    应用层(HTTP协议,FT协议):

     

    TCP协议(流式协议,可靠协议):

      TCP协议传输数据可靠的原因:

        给对方互发消息,对方必须回复确认收到传输的数据才会被删除,否则会在一定时间间隔     之内反复发送直到对方接收或者超时

    三次握手四次挥手

        三次握手连接

        

        四次挥手断开连接

        

        

    syn洪水攻击:服务端大量处于连接请求状态

     

    UDP协议

         无需建立双向连接,并且传输数据不可靠,可能会出现丢包的情况。

      丢包原因:只要数据发送过去,内存会立马将数据清空,一旦断开连接,数据就会丢失

      应用:qq用的就是udp

      优缺点:

        优:通信速度比较快

        缺:发送的数据不会在内存中保留

    ‘’’

    你微笑浏览,关于python的浪漫,原来学习可以来的这么突然

    博客的桥梁,将学习期拉长

    我们的感情蔓延滋长用文字培养

    在虚拟土壤

    ‘’‘

  • 相关阅读:
    Could not obtain transaction-synchronized Session for current thread
    Spring 具名参数NamedParameterJdbcTemplate
    Could not load driverClass jdbc:mysql://localhost:3306/spring
    Spring 使用AspectJ的三种方式
    Excel 若某列包含某个字符则特定列显示特定字符
    使用Spring的隐式注解和装配以及使用SpringTest框架
    Eclipse Oxygen 解决 自动导包的问题
    C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
    Eclipse 多行复制并且移动失效
    正则表达式 使用代码
  • 原文地址:https://www.cnblogs.com/yangyinyin/p/10792273.html
Copyright © 2020-2023  润新知