操作系统和基础网络知识

操作系统

一、操作系统过于复杂,且可替代性较弱,包括了驱动、网络协议、系统调用等等功能,不管程序员还是普通使用者在使用计算机前都必须要学习相关知识,大幅度降低了开发和使用的效率,有了操作系统后,可以化繁为简,只需要了解自己所要些的软件或工作的事就可以简单完成,降低了开发和使用效率。

二、操作系统位于硬件和应用程序之间,如下图

内核部分属于内核态,用于处理和硬件相关部分的程序,用户接口属于用户态,用于系统调用使用硬件。这样就可以把复杂的底层操作代码替换成简单的系统调用,方便开发人员高速高效的开发软件。

三、操作系统还能使各种软件对硬件的使用请求变的有序化。

1、普通软件无法通过直接操作硬件,必须通过系统调用间接达到操作硬件的目的。

2、操作系统属于软件,但是属于大型的软件,每个操作系统大概有五百万行数量级的源代码。

3、正是由于代码的复杂性,造成了系统代码的高成本,因此系统都是分类,如unix、linux和windows,它们的内核都有相似的部分,都是往上迭代的,这也是操作系统代码的长寿性。

四、操作系统的发展

1、第一代计算机(1940~1955):真空管和穿孔卡片。此时的计算机没有我们现在规定的编程语言如汇编、C、JAVA等,都是使用机器码编程,效率比较低下但可调实行强,出现BUG可以现场调试。

2、第二代计算机(1955~1965):晶体管和批处理操作系统。由于当时计算机使用成本昂贵,所以就想到了批处理操作系统来节省成本。如下图:

这样可以让程序员的程序批量执行,节省了计算机开机时间的浪费,但也造成了一些麻烦,如出现BUG程序员无法得到及时的处理,造成了开发周期的延长。

3、第二代计算机(1965~1980)集成电路芯片和多道程序设计。 

在此时,大部分计算机生产线有两种:一条是面向字的:大型的科学计算机,如IBM 7094,见上图,主要用于科学计算和工程计算。另外一条是面向字符的:商用计算机,如IBM 1401,见上图,主要用于银行和保险公司从事磁带归档和打印服务。

IBM公司试图通过引入system/360系列来同时满足科学计算和商业计算,360系列低档机与1401相当,高档机比7094功能强很多,不同的性能卖不同的价格。

这样就用机器代替了流水线上人工搬运磁带的工作,节省了成本,另外又用多道技术,增加了计算机的使用率。

多道技术主要分两部分提高效率:

1空间上的复用,把硬件进行划分,给不同程序使用。

2时间上的复用,cpu采用时间片的方法,解决了串行多程序的问题。

3但是复用就造成的安全性的丧失,例如某个应用程序可以获得它本不该拿到的硬件操作权限,还有稳定性的丧失,如回收内存资源误回收其他程序的资源造成系统崩溃。

4使用分时操作系统:多个联机终端+多道技术,使程序在资源使用上进行了隔离,这也是最初的unix操作系统。

4、第四代计算机(1980~至今)个人计算机,这个就是现在大家所熟知的电脑了,无论在开发效率和使用体验上都有了质的飞跃。

五、多道技术

处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用。

1.时间上的复用

基于CPU的工作原理,引出时间片的概念,例如把1ms拆成10份,分别分给一程序3份、二程序2份、三程序5份就实现的在用户体验上的多任务同时进行。

2.空间上的复用

每个程序都从内存等资源获取一小部分,保证了自己程序的运行,节省了任务的排队时间。

这两条组成了所谓的多道技术。

网络技术基础

一、互联网的本质就是协议,网线其实是有7跟铜线组成的,上面传输的是电信号即高电平1和低电平0,那么单纯的传输这些数字没有任何意义,因此有了所谓的协议来规范这些二进制的使用规范如定义00000000是A 00000001是B一次类推,则就能传输人们可识别的信息。

二、osi五层网络模型

该五层模型上面越靠近用户,下面则越靠近底层。

1、物理层

主要依靠电信号(磁信号,光钎,电缆等)发送信息,如1代表高电平,2代表低电平。

2、数据链路层

定意义了物理层的二进制数字的分组方式。即以太网协议(ethernet)。

ethernet规定:

  • 一组电信号构成一个数据包,叫做‘帧’
  • 每一数据帧分成:报头head和数据data两部分
  •        head

                           data                             

  • head包含:(固定18个字节)

    • 发送者/源地址,6个字节
    • 接收者/目标地址,6个字节
    • 数据类型,6个字节

    data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容

    head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

head头中包括源和目的的mac地址,mac地址长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)。

然后同一网络中的机器就可以依靠广播进行通信(通过arp协议获得另一台机器的mac地址)。

3、网络层

有了上述的条件,理论上世界上的任意两个机器连上网络后就可以进行通信,但实际依靠广播,那么很多机器就接收到了很多没有必要的数据,所以还需要引出网络层。

ip协议:

        规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示

        范围0.0.0.0-255.255.255.255

        一个ip地址通常写成四段十进制数,例:172.16.10.1

子网掩码和ip进行与运算后就可以算出两个ip是否在同一个子网中。

ip输出包也有头和数据部分

head:长度为20到60字节

data:最长为65,515字节。

以太网的数据部分最长是1500字节,因此大宇以太网的数据包必须进行拆分进行包装。

arp协议:用广播的方式发送数据包,获得目标机器的mac地址(前提每台机器的ip是已知的)。

工作方式:先判断ip是否和自己属于同一网络,如果不是则发送给网关的ip和mac,然后通过路由协议传送给目标网关最后送到目标ip。

4、传输层

在实际运用中,数据往往是发送给应用软件的,那么数据到达目标机器后,哪个软件接收数据,这有有了传输层的概念。

传输层主要有tcp和udp协议。

在传输层会封装一个端口号,这个就是和应用进行通讯的表示。(0-1023端口为系统占用,1024-65535是用户可用端口)

tcp是可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

tcp有三次握手,所以接收数据更可靠。

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

udp是广播形式,不关接收方是否接收数据。

5、应用层

应用层的协议有http、https、ftp等等,这些均是应用层的协议,这些协议是可以由应用开发人员修改的。当然也可以使用通用格式。

三、用户上网流程

用户打开网页,输入域名,浏览器会把请求封装成http协议包,传送给传输层,传输层包装端口号进去给网络层,网络成再包装ip给数据链路层,最后数据链路层包装mac地址后翻译成二进制给物理层。服务端则会反向的拆包,分析数据并把用户需要的数据用同样的方式传给用户机器,用户机器再自下而上的进行拆包获得自己希望得的的数据。

从网络通信上来说,该请求会先查询本地的DNS缓存,如果没有域名信息则会向互联网的DNS服务器发送请求获得ip(13台根级服务器、13台顶级域名服务器),然后将ip和端口返回给用户,用户再发送信息给目标服务器请求数据。

原文地址:https://www.cnblogs.com/drchen/p/6544009.html