网络编程

Posted ygzico

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程相关的知识,希望对你有一定的参考价值。

网络编程

一、软件开发架构

  • C/S架构:客户端与服务器端架构
    • C就是Client:客户端
    • S就是Server:服务端

    客户端一般指客户端应用程序exe,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖很大

    比如:微信客户端、QQ客户端等

    • 优点
      • 软件的使用稳定
      • 节省网络资源
    • 缺点
      • 安装麻烦,用户体验差
      • 软件的每一次更新,用户都需要重新下载或更新版本

    技术图片

  • B/S架构:浏览器端与服务器端架构

    • B就是Browser:浏览器端
    • S就是Server:服务器端

    Browser浏览器端,其实也是客户端,只是这个客户端并不需要大家去装什么应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查

    比如:淘宝网页版、京东网页版等

    • 优点
      • 软件的使用方便
      • 无须跟着软件的更新去下载
    • 缺点
      • 如果网络不稳定,软件的使用就不稳定

    技术图片

二、互联网协议

计算机与计算机之间通信

  • 语言是人与人之间沟通的介质
  • 协议是计算机与计算机之间沟通的介质

互联网协议按照功能 不同分为OSI七层或TCP/IP五层或TCP/IP四层

? 技术图片

这七层协议从下往上记会比较好记

连接通信

  • 交换机:所有连接了同一个交换机的电脑彼此之间都是互联的
  • 三层交换机:既有叫交换机功能,又具有路由器功能
  • 四层交换机:能够根据你走的是什么协议对应到对应的应用

每层常见运行协议

? 技术图片

  1. 物理层

    物理连接介质,传递电信号

    电信号就是(01010101101010101)

    问题:无法获取具体数据内容,将电信号数据扔给数据链路层

  2. 数据链路层

    物理层接收到一长串0101010如何切分取值,这个是数据链路层里面的以太网协议

    以太网协议:

    • 它规定了0101的二进制电信号的分组方式
      • head: 18个字节,划分3组6位字节
        • 6:发送者
        • 6:接收者
        • 6:数据类型
      • data: 电信号具体的数据类型
    • 但凡接入互联网的机器,都需要一块网卡
      • 每一块网卡都会有一串世界上独一无二的数字
      • 12位16进制的数字(mac地址)
        • 前六位:厂商编号
        • 后六位:流水线号
      • mac地址的作用
        • 标识全世界上一台独一无二的计算机
    • 以太网协议的工作方式
      • 单播与广播
      • 缺点
        • 广播风暴
        • 只能在局域网内实现通信,无法跨局域网实现通信
  3. 网络层

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

    • IP地址(IP协议)
      • 点分十进制的数字组成(192.168.1.1)
      • 最小范围:0.0.0.0
      • 最大范围:255.255.255.255
    • IP的版本
      • IPv4和IPv6为了兼容更多的计算机
    • IP地址的作用
      • IP协议可以跨局域网传输
      • 能够唯一标识互联网中独一无二的一台机器
    • mac地址和IP地址
      • 标识全世界某一个局域网内的某一台计算机
  4. 传输层

    TCP和UDP协议都是基于端口工作的协议

    • TCP协议建立双向通道

    • 三次握手,建立连接

      • 客户端向服务端发送建立连接的请求
      • 服务端返回收到请求的信息给客户端,并且发送往客户端建立连接的请求
      • 客户端接收到服务端发来的额请求,返回接收成功给服务端,完成双向连接

      客户向服务端发送请求,请求建立连接

      服务端同客户端的请求,并同时向客户端发送建立

      连接的请求,最后客户端同意后建立 双向连接

    • 反馈机制

      • 客户端往服务端发送请求,服务端必须返回响应
      • 告诉客户端收到请求了,并且将服务端的数据一并返回给客户端
      • C---S: 一次请求,必须有一次响应
      • 缺点
        • 洪水攻击:指的是通过伪造大量的请求,往对方服务器发送请求,导致对方服务器响应跟不上,以至于瘫痪。
        • 半连接池listen:限制用户在同一个时间段的访问量
    • 四次挥手,断开连接

      • 客户端向服务端发送断开连接的请求
      • 服务端返回收到的请求的信息给客户端
      • 服务端确认所有数据接收完成以后,再发送同意断开连接的请求给客户端
      • 客户端返回收到断开连接的请求,给服务端

    技术图片

    主要是软件与软件之间进行通信

    port端口:能够标识一台机器上的某个程序

    IP:能够查到全世界独一无二的计算机

    IP + port:能够确定全世界范围内一台计算机的某个程序

  5. 应用层

    HTTP协议

    FTP协议

以上是关于网络编程的主要内容,如果未能解决你的问题,请参考以下文章

Linux高级网络编程系列教程

Linux高级网络编程系列教程

面向对象编程面向组件编程面向方面编程面向服务编程

编程范式:命令式编程(Imperative)声明式编程(Declarative)和函数式编程(Functional)

少儿编程教育未来前景如何?我想加入少儿编程这行。

TCP/IP网络编程——理解网络编程和套接字编程