网络传输内存术语小结
大纲:
1.子网掩码
2.CIDR
3.域名
4.TCP
5.任务,进程和线程
6.电脑内存和磁盘空间
7.I/O
一、子网掩码(subnet mask):
1.它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分,可以区分网络号和主机号。
-
无赞助:.biz .com .edu .gov .info .int .mil .name .net .org .pro .xyz
注意:DNS域名解析采用的是递归查询的方式,过程是,先去找DNS缓存->缓存找不到就去找根域名服务器->根域名又会去找下一级,这样递归查找之后,找到了,给我们的web浏览器
5.域名解析过程:
a)首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)
b)如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存
c)如果还没有找到,那么尝试从 hosts文件里面去找
d)在前面三个过程都没获取到的情况下,就递归地去域名服务器去查找
四、TCP(传输控制协议)
1.传输层通信协议,旨在适应支持多网络应用的分层协议层次结构,在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。每台支持TCP的机器都有一个TCP传输实体。TCP实体可以是一个库过程、一个用户进程,或者内核的一部分。
2、功能:
IP层并不保证数据报一定被正确地递交到接收方,也不指示数据报的发送速度有多快。正是TCP负责既要足够快地发送数据报,以便使用网络容量,但又不能引起网络拥塞。
SYN表示SYN报文(在建立TCP连接的时候使用)
-
客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
-
服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
-
客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
注意:拿到域名对应的IP地址之后,User-Agent(一般指浏览器)会以一个随机端口(1024<端口<65535)向服务器的WEB程序(常用的有httpd,nginx)等的80端口。这个连接请求(原始的http请求经过TCP/IP4层模型的层层封包)到达服务器端后(这中间有各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终达到WEB程序,最终建立了TCP/IP的连接
关闭需要四次握手:
五、任务,进程和线程
1.任务(task):
任务是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。
2.进程(process):
进程(process)常常被定义为程序的执行,是资源分配的基本单位。
例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。
进程包含线程。
进程特性:
独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间。在没有经过进程本身运行的情况下是不能访问其中的内容的。
动态性:进程与程序的区别在于,程序是静态的,进程是动态的。程序只是一个静态的指令集合,而进程是一个正在系统中运行的指令集合。有了时间的概念,如生命周期;
并发性:进程之间,交替着执行。
3.线程(tread)
线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。
进程和线程关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
线程相对于进程而言,很强大了,做到了资源的共享,资源的损耗降低,人为的手工控制程序的运行。
六、电脑内存和磁盘空间
1.电脑内存--安装内存(RAM)--运行内存--物理内存
1)是计算机内部(在主板上)的一些存储器,用来保存CPU运算的中间数据和计算结果,内存是电脑的一个中转站,从硬盘那里取出数据或运行程序提供给中央处理器,它的速度很快。
电脑的运行内存,是通过插内存条的形式存在的。一般容量有1G、2G、4G、8G、16G等。内存的大小,直接影响到电脑的流畅度,内存越大越好。2
2)易挥发性,即掉电失忆。它是临时存放数据用的,断电后数据丢失。
3)内存作为1个存储数据的存在, 有1个很重要的特性, 就是内存里的数据能被cpu直接访问。 cpu能不能直接访问硬盘的数据呢, 不能。 只能通过把硬盘的数据先放到内存里, 然后再从内存里访问硬盘的数据。我们平时玩游戏碰上读图loading 进度条的这个过程, 就是把数据从硬盘读到内存的过程啊。 读完条后地图的数据就在内存中了。
所以内存才是计算机系统的主存储器, 而硬盘是被分到跟光盘..u盘一类都是外部存储器。
4)注意:内存地址的数量决定cpu能访问的内存大小(二进制).
32位系统最多访问4G:
2^32到底是多少个? 2^32 = 4 * 1024(G) * 1024(M) * 1024(K) = 4294967296 , 就是4G
64位系统访问更多:
2^64 = 2^34 * 2^10(G) * 2^10(M) * 2^10(K) 也就是 17179869184 G(4G × 4G)个地址,也就是说64位系统配上64位cpu理论上支持17多亿GB的内存, 当然这个只是理论了, 实际上现在的普通主版能上个16GB都不错了。
2.虚拟内存
虚拟内存:当电脑需要的数据太多或程序太大时,内存不够用只好暂时把一部分内容放在指定的硬盘里,即为应急把硬盘当内存用,可设置大小,而硬盘的速度比内存慢得多,这就是电脑有时运行慢的原因之一。
由于虚拟内存用的是硬盘空间,硬盘的读写速度要远远低于真正的内存,所以设置过大虚拟内存会影响你计算机的速度。并且虚拟内存最好是设置成你不经常用的磁盘分区上,因为不经常用的分区碎片少,磁头读写顺畅,相对较快,是程序运行的缓冲区。
有时运行大型游戏时,系统会提醒虚拟内存太小,你就得自定义你的虚拟内存来使你的游戏玩得畅快些了。
3.磁盘空间--固态存储器--ROM
特点:一次写入,反复读取
硬盘是相对固定的,存放的是系统软件、应用软件等完全可由你自己控制的东西。硬盘是一个储存设备,有20G的,40G的,80G的,甚至上百的 "我的电脑"中的C盘,D盘都是硬盘
七。I/O
1)I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。
多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。
读操作:操作系统检查内核的缓冲区有没有需要的数据,如果已经缓存了,那么就直接从缓存中返回;否则从磁盘中读取,然后缓存在操作系统的缓存中。
写操作:将数据从用户空间复制到内核空间的缓存中。这时对用户程序来说写操作就已经完成,至于什么时候再写到磁盘中由操作系统决定,除非显示地调用了sync同步命令.
2)缓存I/O的优缺点:
缓存I/O的优点:1)在一定程度上分离了内核空间和用户空间,保护系统本身的运行安全;2)可以减少读盘的次数,从而提高性能。
缓存I/O的缺点:在缓存 I/O 机制中,DMA 方式可以将数据直接从磁盘读到页缓存中,或者将数据从页缓存直接写回到磁盘上,而不能直接在应用程序地址空间和磁盘之间进行数据传输,这样,数据在传输过程中需要在应用程序地址空间(用户空间)和缓存(内核空间)之间进行多次数据拷贝操作,这些数据拷贝操作所带来的CPU以及内存开销是非常大的。
标准文件访问方式: