• 网络编程基础


    一、软件开发的架构

    我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:

    第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用

    第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用

    这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~

    1.C/S架构

    C/S即:Client与Server,中文意思:客户端与服务端架构,这种架构也是从用户层面(也可以是物理层面)来划分的

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

    优点:软件的使用稳定

    ​ 节省网络资源

    缺点:安装麻烦,用户体验差

    ​ 软件的每一次更新,用户都需要重新下载或更新版本

    2.B/S架构

    B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。

    Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源)

    优点:软件的使用方便

    ​ 无需跟着软件更新去下载

    缺点:如果网络不稳定,软件的使用就不稳定

    趋势:B/S架构流行,用户体验高

    二、网络概念

    问题:网络到底是什么?计算机之间是如何通信的?

    语言是人与人之间沟通的介质!

    协议是计算机与计算机之间沟通介质!

    如何远程通信

    物理连接介质

    • 电话--—电话线
    • 纯屏电脑-–-–网线
    • 笔记本电脑-–-–网线,网卡

    电脑与电脑通信:互联网协议

    三、互联网协议(OSI七层协议)

    互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

    此时需要关注的是5层: 由下到上记

            - 应用层
            - 传输层
            - 网络层
            - 数据链路层
            - 物理层
    

    物理层

    获取计算机的电信号数据(100101001)
    
    问题:无法获取具体数据内容,将电信号数据扔给数据链路层
    

    数据链路层

    我们要知道数据是什么?
    我们要知道数据是给谁的?
    
    以太网协议:
    获取电信号真实数据
    head:-18个字节
    	  -6:发送者
    	  -6:接受者
    	  -6:数据类型
    data:电信号具体的类型
    
    每台电脑必须要有一个网卡(电脑插网线的地方,里面连着一个网卡)
    网卡:每块网卡都会有一串世界上独一无二的数字 MAC 地址
    12位16进制的数字,6位产品好,6位流水号
    MAC地址作用:标识世界上一台独一无二的计算机
    
    以太网协议的工作方式:
    单播:
    广播:只能在局域网内实现通信, 无法跨局域实现通信
    
    总结:MAC地址:标识全世界上一台独一无二的计算机
    

    网络层

    实现全世界某一台计算机之间的通信
    
    IP地址(IP协议):
    点分十进制的数字组成
    130.123.31.55
    最小范围:0.0.0.0
    最大范围:255.255.255.255
    
    IP的版本:
    	IPV4
    	IPV6
    IP的作用:用于标识全世界某一台计算机的位置,局域网的位置
    
    总结:IP地址 + MAC地址:
    			标识全世界某一个局域网内的某一台计算机
    

    传输层

    TCP与UDP都是基于“端口”实现通信的
    
    TCP:
    UDP:
    
    主要是软件与软件之间进行通信
    port端口:
    		用于标识计算机某一个独一无二的软件
    		
    总结:IP地址 + MAC地址 + PORT端口:
    	标识的是全世界范围内某一个局域网内某台计算机上的某一个软件
    

    应用层

    大佬们定制好的一套牛X的协议
    HTTP协议
    FTP协议
    
    自定义的协议
    
    
  • 相关阅读:
    超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备?
    使用Prometheus监控Golang服务-基于YoyoGo框架
    Kubernetes Pod OOM 排查日记
    Golang语言排序的几种方式
    设计公共组件需要注意什么
    有关WebSocket必须了解的知识
    docker容器技术
    【SpringBoot】 中时间类型 序列化、反序列化、格式处理
    安装Scrapy的时候报错error: Microsoft Visual C++ 14.0 is required.
    python爬虫学习05-爬取图片
  • 原文地址:https://www.cnblogs.com/kai-/p/11983427.html
Copyright © 2020-2023  润新知