(一)操作系统
1.含义:协调,控制和管理计算机硬件系资源和软件资源的控制程序。位于计算机硬件和软件之间,本质上也是个软件程序,但不同于一般的软件。
2.组成:2部分。由操作系统的内核和系统调用2部分组成。操作系统的内核,运行于内核态,管理硬件资源;系统调用,运行于用户态,为软件应用程序提供系统调用接口。
3.作用:一是为软件程序提供接口即系统调用;二是将应用程序对计算机硬件资源的竞态请求有序化即有序合理分配硬件资源。
4.特点(与一般软件程序比较):大型(linux或windows的源代码有五百万行数量级);长寿(操作系统使用时间长,不断更新一直沿用)
5.多道技术或者多路复用:
空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。多个程序的内存由操作系统分配控制,程序之间是隔离的。
时间上的复用:由于内存中的软件程序多了,CPU运行的程序也就多了(CPU运行不同程序切换很快整体上感觉CPU运行快了),即CPU的使用率也就提高了。
6.几种系统:
UNIX:最稳定的系统。为了使程序能在任何版本的unix上运行,IEEE提出了一个unix标准,即posix(可移植的操作系统接口 portable operating system interface)
LINUX:诞生于1987年,开源系统,多用于服务器,系统中可以从硬盘上虚拟内存即swap(一般是内存的1到2倍)。
(二)网络协议
计算机之间的连接交互需要统一的标准,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite)。
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层如下图。最上为应用层也最靠近用户,每层都依靠下一层,越往下层越是靠近硬件。各层有相应的协议;
我们从一般常用的五层结构来看:
1.物理层:完成计算机之间的物理连接,电缆,光纤,双绞线,无线电波;主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0;
2.数据链路层:以太网协议ethernet为标准,对物理层发来的电信号统一规范;
ethernet规定:(1)一组电信号构成一个数据包,叫做‘帧’;(2)每一数据帧分成:报头head和数据data两部分
head包含:(固定18个字节):发送者/源地址,6个字节;接收者/目标地址,6个字节;数据类型,6个字节
data包含:(最短46字节,最长1500字节):数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
head中包含的源地址和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址
3.网络层:IP协议,标识计算机所在的网络地址;计算机不在同一子网依靠IP地址,在同一子网依靠mac地址;
4.传输层:通过IP可以找到计算机所在的子网,通过mac地址可以找到子网中的主机,但在主机上有好多应用程序,将信号发给哪一个软件程序尼?答案就是端口,端口即应用程序与网卡关联的编号。
传输层就是建立端口到端口的通信(端口范围0-65535,0-1023为系统占用端口)。有TCP和UDP协议来规范。
(1)TCP协议:可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
(2)UDP协议:不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
5.应用层:规定应用程序的数据格式,例如TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
(三)socket:我们开发的软件程序要运行和外界联系,开发的时候就要考虑到软件是否满足各种通信协议,要一项一项与各种协议核对么?不用,我们有socket.
我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。