• day30,网络编程和各种协议


    网络编程    1.网络通讯协议 理论知识点

            学习网络编程的目的?

    什么是互联网
    网: 由多个节点相互连接组成 渔网 蜘蛛网
    计算互联网: 由多台计算机通过某种介质相互连接而组成
    互联网之所以存在就是为了能让信息共享

    网络编程 :指的是编写基于网络的应用程序
    学习网络编程的目的
    开发出一款可以利用网络来传输数据的应用程序

    CS结构
    建立网络至少需要两台计算机,然后使用网络来传输数据
    1.网络必须联通
    2.在需要访问数据一方 必须安装用于访问数据的应用程序
    该应用程序称之为客户端应用程序(client)

    在需要提供数据的一方 必须安装用于共享数据的应用程序
    该应用程序称之为服务端应用程序(server)
    简写为C/S
    例如: qq 就是一个客户端 服务器在腾讯公司
    腾讯视频

    B/S Browser浏览器/Server 该结构下 通过传输都是HTML文本数据

    学习网络编程 最终的目的就是要编写出一个基于C/S结构的应用程序

    要通讯必须具备的两个条件
    1.物理传播介质 (双绞线
    同轴线 无线电波)
    2.通讯协议 (重点)


    通讯协议
    是由发送方和接收方共同商定一套规范

    为什么需要协议
    其目的是是为了双方能正确解析数据
    例如 国内通讯:双方都是用普通话
    国际通信:使用英文


    IBM DELL HP 早些年 每个公司都有自己一套通讯协议 这导致了 不同品牌的电脑连不了网
    于是 国际标准组织就提出了一套开放系统互联模型 OSI

    物理层 通过物理介质建立物理连接 可以发送1010101 二进制数据 但是单纯二进制 无法理解
    必须明确一次性收几个 ,每一段二进制的含义是什么

    数据链路层
    以太网协议工作在数据链路层
    1.数据如何分组 (数据的格式)
    每次发送一个数据帧
    每个数据帧 包含 head和data
    head18 data 46-1500
    head 包含 目的地址 源地址 802标签 以太类型 data

    最大1518 超过将被分片
    2.MAC地址 每一台计算机要联网都要具备网卡 每个网卡必然具备一个全球唯一的MAC地址
    MAC可以定位到任意一台计算机 ,但是 如果我提前不清楚你的网卡 那就需要进行广播
    来确定网口和MAC地址的对应关系


    每个局域网 第一个ip是网络地址 最后一个ip是广播地址
    如:192.168.13. 0 - 255 所以可用范围是: 1-254
    路由器 也是一种交换机


    有了链路层 理论上全世界的计算机就能连到同一个网络了
    但是我们不可能将所有计算机设备连到同一个交换机
    广播风暴: 当 很多同一网络中的计算机 同时发送广播 就会形成广播风暴 到只网络瘫痪


    问题1: 没有交换机能支持这么多计算机
    问题2: 不能使用原始的广播方式

    网络层
    ip协议工作在网络 Internet Protocol Address
    ip协议规定 每一个计算机设备要联网 必须分配一个Ip
    地址
    ip是一个逻辑地址 不是固定的 可能会变化
    物理存在 相反的 逻辑 存在

    ip地址的格式
    由4段3位的十进制组成
    0.0.0.0 - 255.255.255.255
    ]

    ip地址在mac地址基础上加入网络地址的概念 有了网络地址之后 就可以缩小广播范围
    所以在ip地址中 前三段是网络号 用于表示所在的局域网
    后一段是主机号 用于表示这个主机在局域网中的位置


    ip地址分为网络号 和主机号
    通过网络号可以定位到某一个局域网
    再通过主机号定位某一个计算机
    这样一来就可以通过ip定位到全球任意一台计算机

    问题: 一台计算机 不可能只运行一个需要联网的程序,那当网卡收到数据后 ,到底把数据给哪个应用程序

    传输层
    TCP/UDP工作在这一层
    传输层要求每一个应用程序捆绑一个端口号
    端口号是一个整数 取值范围0-65536 0-1024 这是系统保留的 不建议使用
    端口号不能重复
    至此 就可以通过ip+端口号定位全球某一台计算机上的某一个应用程序


    TCP 传输控制协议
    可靠传输协议, 如何保障可靠,在发生完数据之后,必须等待接收方返回回复消息,该数据才算发送成功
    如果对方在一段时间内没有返回,会再次发送数据,超限制次数,将判定为链接丢失
    基于链接的传输
    怎么叫链接
    要发生数据必须先建立链接 简单的说就是找一条可以到达对方的路 ,
    如何选择一条最佳的传输路径,由路由协议来控制
    要保证数据传输室可靠 一定要保证这传输路径是可用的
    建立链接需要三次握手:
    三次握手是为了确定传输可用
    但是并不能保证后续传输可靠 所以TCP协议在传输数据时 每一个数据段segment都需要确认信息
    断开链接需要四次挥手
    保证双方数据传输完毕 ,为什么需要多一次,有可能一段传输结束 另一边还没结束

    优点:
    保证传输可靠,数据完整
    缺点:
    因为需要传输确认信息,所以对网络消耗较大,效率相对较低
    应用场景:
    重要数据,在线支付,文字信息


    UDP 协议用户数据报协议
    不可靠传输
    UDP只管发送 不管对方是否收到

    优点:传输效率比TCP高
    缺点:传输不可靠
    应用场景:
    对速度要求高 ,对完整性要求较低
    视频通话,语音聊天
    对战游戏 多是UDP 你卡了你就卡吧 别人正常游戏

    
    
  • 相关阅读:
    Visifire正式版(v1.1)发布
    [转]PSP机能强大!已能模拟运行WINDOWS系统?
    在Silverlight+WCF中应用以角色为基础的安全模式(一)基础篇之角色为基础的安全模式简介 Virus
    C#的加密解密算法,包括Silverlight的MD5算法 Virus
    MMORPG programming in Silverlight Tutorial (10)Implement the sprite’s 2D animation (Part IV)
    Game Script: Rescue Bill Gates
    MMORPG programming in Silverlight Tutorial (9)KeyFrame Animation
    MMORPG programming in Silverlight Tutorial (5)Implement the sprite’s 2D animation (Part II)
    MMORPG programming in Silverlight Tutorial (7)Perfect animation
    MMORPG programming in Silverlight Tutorial (3)Animate the object (Part III)
  • 原文地址:https://www.cnblogs.com/WBaiC1/p/10932422.html
Copyright © 2020-2023  润新知