zoukankan      html  css  js  c++  java
  • 第十三章 网络编程

    一、软件开发的架构
    两个程序之间的通讯大致分为两种:
    - 应运类:QQ、微信、网盘、优酷等属于需要安装的桌面应运
    - web类:百度、知乎、博客园等使用浏览器访问的应运
    这些应运的本质其实是两个程序之间的通讯,而这两个分类又对应了两个软件开发的架构:
    1.C/S架构
    C/S即:Client与Server,中文意思:客户短与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的;
    2. B/S架构
    B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构也是从用户层面来分的;
    Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安转什么应运程序,只需要在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。
    二、网络基础
    IP地址:
    IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,他为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异;
    IP地址(IPv4)是一个32位的二进制数,通常被分割为4个8位二进制数(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
    端口:
    是英文port的意译,可以认为是设备与外界通讯交流的chuko。
    因此:IP地址精确到具体的一台电脑,而端口精确到具体的程序
    1. 互联网协议和OSI模型
    OSI模型:把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。这是一种事实上被TCP/IP 4层模型淘汰的协议。在当今世界上没有大规模使用。
    TCP/IP模型:实际上是OSI模型的一个浓缩版本,它只有四个层次:
    1.应用层,对应着OSI的应用层、表示层、会话层
    2.传输层,对应着OSI的传输层
    3.网络层,对应着OSI的网络层
    4.网络接口层,对应着OSI的数据链路层和物理层
    OSI模型的网络层同时支持面向连接和无连接的通信,但是传输层只支持面向连接的通信;TCP/IP模型的网络层只提供无连接的服务,但是传输层上同时提供两种通信模式。
    每层常见设备:
    每层常见协议:
    2. socket层
     
    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
    在于Python而言,socket就是一个模块。我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信。 也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序。 所以我们只要确立了ip和port就能找到一个应用程序,并且使用socket模块来与之通信。
    3. TCP协议和UDP协议
    TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。
     
    UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
    对比:
    TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
    UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
  • 相关阅读:
    Java实现 LeetCode 56 合并区间
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
  • 原文地址:https://www.cnblogs.com/jiumo/p/9620662.html
Copyright © 2011-2022 走看看