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

    目录:

        软件架构

        网络协议(外链)

        通讯协议

        网络层

        传输层

        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
    在写网络编程的时候,必然是有两部分代码,对应着客户端和服务器
  • 相关阅读:
    LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
    UVA 10564 Paths through the Hourglass(背包)
    Codeforces Round #323 (Div. 2) D 582B Once Again...(快速幂)
    UVALive 3530 Martian Mining(贪心,dp)
    UVALive 4727 Jump(约瑟夫环,递推)
    UVALive 4731 Cellular Network(贪心,dp)
    UVA Mega Man's Mission(状压dp)
    Aizu 2456 Usoperanto (贪心)
    UVA 11404 Plalidromic Subsquence (回文子序列,LCS)
    Aizu 2304 Reverse Roads(无向流)
  • 原文地址:https://www.cnblogs.com/xuechengeng/p/9890305.html
Copyright © 2011-2022 走看看