zoukankan      html  css  js  c++  java
  • day-30网络编程

    网络通信协议

    什么是互联网
    计算互联网: 由多台计算机通过某种介质相互连接而组成
    互联网存在的意义:为了能让信息共享
    网络编程 :指的是编写基于网络来传输数据的应用程序
    
    
    C/S结构
    建立网络至少需要两台计算机,然后使用网络来传输数据
    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标签 以太类型
        最大1518   超过将被分片
      2.MAC地址   每一台计算机要联网都要具备网卡  每个网卡必然具备一个全球唯一的MAC地址
      MAC可以定位到任意一台计算机 ,但是 如果我提前不清楚你的网卡 那就需要进行广播
      来确定网口和MAC地址的对应关系
      路由器 也是一种交换机
      有了链路层   理论上全世界的计算机就能连到同一个网络了
      但是我们不可能将所有计算机设备连到同一个交换机
      广播风暴: 当 很多同一网络中的计算机 同时发送广播 就会形成广播风暴 造成网络瘫痪


      问题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 你卡了你就卡吧 别人正常游戏
  • 相关阅读:
    ADO.NET API+MVC实现文件上传及文件下载
    ASP.NET MVC+ajax实现文件上传及文件下载
    js实现cookie读写的简单操作
    数据库 DML、DDL、DCL的简单介绍
    winfrom 控件Chrat 代码实现
    C# Redis简单存储string
    MVC AJAX方法 文件上传下载
    MVC 文件上传下载
    js设置cookie(简单保存cookie)
    cookie的执行过程
  • 原文地址:https://www.cnblogs.com/klw1/p/10932775.html
Copyright © 2011-2022 走看看