zoukankan      html  css  js  c++  java
  • 操作系统和网络基础之网络协议

    操作系统

    一、为何要有操作系统
    为了简化程序员去研究硬件的过程,可以直接在操作系统上开发应用程序(因为操作计算机硬件是一个非常复杂的过程,且程序员无法了解所有硬件的操作细节)

    二、操作系统的位置
    在硬件之上装操作系统,在操作系统上装应用程序,操作系统处于硬件和应用程序之间

    三、操作系统的功能
    1、将丑陋的硬件调用接口隐藏了,并为程序员调用硬件提供了更好的系统调用接口,程序员可以直接通过这些美化后的接口来调用硬件资源,专心开发应用程序,无需考虑硬件的细节操作,大大简化了开发应用程序的过程
    2、将应用程序对硬件的调用请求从无序化变得有序化。因为计算机上所有的应用软件都是共享一套硬件资源的,如果所有的应用软件都去发起对硬件的调用请求,则会变成一个无序竞争的一个过程,没有秩序,谁抢到了就执行谁的命令,而操作系统的作用,就是将应用程序对硬件的调用请求从无序化变得有序化

    四、操作系统的发展
    1、第一阶段:第一代计算机(1940~1955):真空管和穿孔卡片
    没有操作系统的概念,所有的程序设计都是用纯粹的机器语言来写的,且同一时刻只有一个程序在内存中被cpu调用执行,是串行运行的,容易造成资源的浪费,但好处是程序员可以在使用过程中独享资源,可以随时调试自己的程序,有bug的话,也可以立即处理

    2、第二阶段:第二代计算机(1955~1965):晶体管和批处理系统
    为了解决第一代计算机中的资源浪费问题,所以在第二代计算机时,出现了批处理系统,即收集好批量作业,集中将卡片读进磁带,然后人工将磁带送入机房装到磁带机上,通过特殊的程序从磁带上挨个读入每个作业并运行,(和第一代计算机一样是串行运行的)当所有的作业结束后,将其打印出来。解决了第一代计算机中的资源浪费问题,但整个的流程都需要人员参与操作,增加了人工成本,且程序员如若需要调试程序,需要等同批次的作业运行完才可以调试,无法及时调试程序,影响了开发效率

    3、第三阶段:第三代计算机(1965~1980):集成电路芯片和多道程序设计
    解决了第二代计算机的人工搬运输入输出问题,并且采用了多道技术解决了第一代、第二代计算机的串行运行问题,同时,采用了分时操作系统、多联机终端和多道技术,解决了第二代计算机中程序员无法及时调试程序的问题

    4、第四阶段:第四代计算机(1980~至今):个人计算机


    五、多道技术
    多道技术是为了解决多个应用程序在共享同一个硬件资源时,让无序的竞争调用变成有序的调用,它通过多路复用来解决,多路复用分为时间上的复用和空间上的复用。
    时间上的复用:当一个程序在等待I/O时,另一个程序可以使用CPU,极大的缩减了应用程序调用硬件资源的时间,节约了时间成本
    空间上的复用:是将内存分成多个部分,每个部分放入一个程序,使得程序在硬件层面就分隔完毕,保障了程序运行的安全性和稳定性

    网络基础之互联网协议

    一、什么是互联网协议及为何要有互联网协议

    什么是互联网协议:互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"
    为何要有互联网协议:是定义计算机如何来接入网络,以及接入网络的计算机通信标准上午

    二、osi五层模型
    osi五层模型的五层分别是:
    应用层
    传输层
    网络层
    数据链路层
    物理层

    用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入
    1、物理层:就是把电脑连接起来的物理手段。(也就是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式)它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
    2、数据链路层:
    (1)定义:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
    这就是"链接层"的功能,它在"实体层"的上方,确定了0和1的分组方式
    (2)以太网协议:早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet
    以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。
    “标头"的长度,固定为18字节。
    发送者/源地址,6个字节
    接收者/目标地址,6个字节
    数据类型,6个字节
    "数据"的长度,最短为46字节,最长为1500字节。
    因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
    (3)MAC地址:以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。
    mac地址:每块网卡出厂时都有一个全世界独一无二的MAC地址
    (4)广播:定义地址只是第一步,后面还有更多的步骤。
    首先,一块网卡怎么会知道另一块网卡的MAC地址?
    回答是有一种ARP协议,可以解决这个问题。以太网数据包必须知道接收方的MAC地址,然后才能发送。
    其次,就算有了MAC地址,系统怎样才能把数据包准确送到接收方?
    回答是以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"
    有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。
    3、网络层:
    (1)网络层的由来:有了以太网、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,但是,这样做有一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一"包",不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。
    因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。)遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。
    "网络层"它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"
    (2)IP协议:规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。
    但是单单从IP地址,我们无法判断网络部分。那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数"子网掩码",知道"子网掩码",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
    IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
    (3)IP数据包:根据IP协议发送的数据,就叫做IP数据包。ip数据包也分为head和data部分
    (4)ARP协议:ARP协议主要是通过广播的方式发送数据包,获取目标主机的mac地址

    4、传输层:
    (1)传输层的由来:有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。主要是建立端口到端口的通信。

    (2)UDP协议:不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

    (3)TCP协议:可靠传输,TCP数据包没有长度限制

    5、应用层:
    直接面向用户的应用程序,都工作于应用层


    三、用户上网流程
    (1)获取4要素,本机的IP地址、子网掩码、网关的IP地址、DNS的IP地址
    (2)其次是打开任意浏览器,输入其网址。例如:想要访问Google,在地址栏输入了网址:www.google.com
    (3)dns协议(首先网络客户端会询问本地DNS服务器我要访问的www.163.com的IP地址是多少,本地DNS服务器会查看缓存里是否有记录,没有记录的话,联系根服务器,询问域名对应的ip地址是多少,然后得到根服务器的回应告知域名是由.com区域管理,并给本地DNS服务器一个.com服务器的地址,然后本地DNS服务器去询问.com域服务器,.com域服务器会反馈告知,负责163.com区域的服务器知道答案,又给了本地DNS服务器一个163.com服务器的地址,继而,本地DNS服务器去询问163.com域服务器,最后163.com域服务器告知经查询此域名对应的IP地址是多少,然后本地DNS服务器会将最后询问的IP地址告知网络客户端,并写入缓存,以备下次使用)
    (4)HTTP部分的内容
    (5)TCP协议
    (6)IP协议
    (7)以太网协议
    (8)服务器端响应:本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

     

     

     

  • 相关阅读:
    《例说51单片机(C语言版)(第3版)》——1-3 认识MCS-51的存储器结构
    MySQL5.7中InnoDB不可不知的新特性
    python 抓取日志
    Packet for query is too large (1706 > 1024). You can change this value on the server by setting the
    面对1.3 亿用户数据泄露,企业如何围绕核心数据构建安全管理体系?
    python 正则替换
    python 正则
    没有宫廷内斗,数据库界的延禧攻略
    抽象基类
    ansible -m shell -a 注意单引号和双引号
  • 原文地址:https://www.cnblogs.com/xuyuanyuan123/p/6544749.html
Copyright © 2011-2022 走看看