• 网络编程


    目录:

        软件架构

        网络协议(外链)

        通讯协议

        网络层

        传输层

        socket

        TCP传输

        UDP传输

        简易聊天室

        通讯与连接循环

    软件架构:

    1.C/S
        client ==== server
    2.B/S
        browser === server
    在不同的计算机上,一个安装客户端,另一安装服务端,通过网络来通讯.
    client<---基于网络通信--->server
    browser<---基于网络通信--->server

    server端必须满足的条件:
    1、稳定运行(网络、硬件、操作系统、服务端应用软件),对外一直提供服务
    2、服务端必须绑定一个固定的地址

    网络通讯:

    互联网要完成通讯必须具备的条件
      1.物理连接介质 (网线,WIFI,光纤)
      2.必须遵循相同的标准,即互联网协议
    在计算机网络中同样需要具备这两个条件.
    作为应用软件开发者,不需要关心第一步,重点是通讯的标准(通讯的协议)

     通讯协议:

    自定义协议:
      任何一种通信协议都必须包含两部分:
      1、报头:必须是固定长度
      2、数据
    osi七层协议:
        应用
        表示
        会话
        传输
        网络
        数据链路层
        物理
    
    程序员需要关注的是传输层协议. 简化后得到五层: 应用: 没有固定协议,需要程序员协商 传输: TCP和UDP,通讯协议 网络: ip协议,找到局域网 数据链路层: 以太网协议,发送二进制的格式 物理: 接口协议,发送二进制

    osi之网络层:

    ip用来定位子网的网关,mac用来定位子网中的计算机.
    已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算.

    172.16.10.1: 10101100.00010000.00001010.00000001 255.255.255.255.0: 11111111.11111111.11111111.00000000 子网地址: 10101100.00010000.00001010.00000000 172.16.10.0 172.16.10.2: 10101100.00010000.00001010.00000001 255.255.255.255.0: 11111111.11111111.11111111.00000000 子网地址: 10101100.00010000.00001010.00000000 172.16.10.0
    AND运算之后结果相同,说明是属于同一子网.
    标识地址的方式:
    ip+mac就能标识全世界范围内独一无二的一台计算机
    ip+mac+port就能标识全世界范围内独一无二的一个基于网络通信的应用软件
    url地址:标识全世界范围内独一无二的一个资源

    以太网协议与ip协议:

    大型局域网:由小局域网互联而成

    osi之传输层:

       传输层功能:建立端口到端口的通信(端口范围0-65535,0-1023为系统占用端口)

     TCP协议: 

     三次握手建立连接
     四次挥手断开连接
      1、为何建连接要三次而断开连接却需要四次
      2、为何tcp协议是可靠协议,而udp协议是不可靠协议
      3、tcp协议建立连接与断开连接的状态信息以及表示的意义

     图示:

    TCP和UDP是传输层最常见的协议
    主要控制传输数据的方式
    TCP
    优点:通过三次握手来与服务器建立连接
    可以保证数据的完整性
    a机器给b机器发送数据包 要求b机器必须立即返回一个确认包
    a机器会等待一段时间,如果超时还没有收到确认,则重发数据
    缺点:传输效率低
    使用场景: 文字聊天,支付宝转账等,
    UDP
    传输方式:不需要建立连接,直接发送
    缺点:不能保证数据的完整性
    优点:传输效率比TCP高
    使用场景:视频通话,语音通话,UDP

    socket套接字:

    socket是什么?
        翻译过来称为套接字
        是对底层的 TCP IP UDP 等网络协议进行封装
        使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议
    在程序员的言论,他就是一个封装好的模块!
    要完成网络通讯,只需要使用系统提供的socket模块就行
    在使用socket的时候用户需要关心的是ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data
    在写网络编程的时候,必然是有两部分代码,对应着客户端和服务器
  • 相关阅读:
    Caffe学习系列(16):caffe的整体流程
    caffe_windows安装
    r-cnn学习系列(三):从r-cnn到faster r-cnn
    Spatial pyramid pooling (SPP)-net (空间金字塔池化)笔记(转)
    r-cnn学习(二)
    r-cnn学习(一)
    Caffe学习系列(13):对训练好的模型进行fine-tune
    注解
    MATLAB实现回归分析
    MATLAB进行假设检验
  • 原文地址:https://www.cnblogs.com/xuechengeng/p/9890305.html
Copyright © 2020-2023  润新知