python全栈学习记录--3(2018.1.13) 计算机基础知识

一、Linux操作系统
1、unix是目前世界上最稳定,安全的系统。是分时操作系统,多个联机终端和采用多道技术。
2、开源代表代表公开,所有人可以编辑查看,但不代表免费。
3、服务器要的是性能,稳定,效率,不间断运行。故LINUX更能胜任,WINDOW不行,运行久了就会很卡。
4、桥接:用交换机的方式上网,相当于在局域网内多增加一台电脑联网。
5、虚拟内存一般设为物理内存的1.5-2倍,但不超过8G。物理内存大于4G就足以运行目前几乎所有程序了,没必要设置虚拟内存了。

二、网络基础之OSI五层协议
1、网络通过电脑底层物理介质(网线,交换机,网卡等),由一个统一标准的互联网协议链接起来。
2、OSI五层含义:物理层相当于字母,数据链路层相当于单词、网络层相当于句子、传输层相当于语法、应用层才是实际的对话交流。
3、以太网协议规定:一组电信号构成一个数据包,称为帧。每一数据帧分成:报头HEAD和数据DATA两部分。
其中报头head固定18字节,包含:发送者地址(源地址),占6字节、接收者地址(目标地址),占6字节、数据类型,占6字节。就类似信件的发送和接收者地址和信件是用什么语言写的。
数据data最短46字节,最长1500字节),具体包含数据包的具体内容,就类似信件的正文。
head+data=最短64字节,最长1518字节。超过了就分片发送。
4、网路传输流程:通过网络设备(无线电波,电缆,光纤,双绞线)基于高低电频,实现数据在终端物理层间的传输;然后再数据链路层对数据进行分组,转换成十进制数据,进而转换成人类语言。
数据链路层定义了一个以太网协议,以太网协议规定了数据的分组方式,以太网规定所有想要联网的机器都要有网卡。到这一步实现了局域网内的广播式交流。
然后在网络层通过IP地址和MAC地址找到目标电脑。
然后再传输层基于端口(TCP/UDP,每个应用软件都有一个端口号,0-1024是给系统用的端口)找到接收软件(因为通信是应用软件之间的通信。)
然后到应用层:基于可自行定义的HTTP、FTP协议。其实就类似通过邮局之间的投递信件。
5、MAC地址:就是报头head包含的源地址和目标地址的由来。以太网协议规定每台连入internet的设备都必须要又一个网卡,发送端和接收端的地址其实就是网卡的地址,即MAC地址。
一个人的体貌特征就是MAC, 而通信地址+人名相当于IP地址可以进一步类比,通信地址是IP中的网络地址部分,人名相当于IP中的主机号部分你今天可以到这个国家, 明天可以到那个城市,通信地址(IP网络地址部分)就会变化,也可以到派出所改名字(IP主机号部分), 但一个人的体貌特征(MAC)永远不会变, 整容(修改MAC)不在讨论之列, 它唯一标识了你这个人。如果邮件的是寄给“上海市X区Y街道Z幢M室 小明收”,最后邮件送达M室(IP所在网络)的时候, 因为小明家里可能不止一个人(多台设备在同一个broadcast网络里),快递员会问, ”谁叫小明, 你有一封信”, 然后小明说"我是小明", 邮递员把邮件给到小明手中。还是没看出这个过程中体貌特征(MAC)起到了什么作用? 当小明说“我是小明”的时候, 邮递员已经把“小明”这个名字和小明这个人体貌特征联系起来了, 所以他会把信交到到小明的手中, 而没有放到这个家里的其他人的手中。
6、通信时,数据传输流程:发送数据包的时候:在应用层产生数据,在传输层封装上报头:发送者和接收者的MAC地址,传送到网络层并加上IP地址,再到数据链路层加上MAC地址,然到物理层打碎成计算机可识别的二进制数据。
接收数据包的时候:对方物理层收到的是二进制数据,数据链路层去除以太网头MAC地址,再网络层去掉IP,传输层去掉端口,然后到应用数据层。
三、网络基础之上网过程
1、DHCP服务器是分配动态IP地址的,IP地址是租用的。电脑没开机前是没有IP地址的,每次开机分配的IP地址都不一样。就和你去旅游一样,今天在中国,明天可能在美国了。
2、DNS:域名解析服务。比如打开百度网址,可以打开IP地址,或更方便点直接打开www.baidu.com. (后面有一个点,叫根域名,通常省略)域名。COM叫顶级域名,baidu叫下一级域名。不过在输入域名访问时,还是得让DNS转换成IP地址。
3、访问网站时,DNS先访问本地DNS和缓存DNS,如果有直接返回解析结果,如果没有则访问根DNS。
DNS分本地DNS、缓存DNS和根DNS。而如果要访问根DNS,则速度慢。
4、DNS查询走的是UDP协议(只管发送,最大有效传输数据量只有500多节,所以根DNS服务器只有13台)9台在美国,一台在日本,1台在瑞典,2台在欧洲。
四、三次握手和四次挥手
1、应用软件产生的数据到了传输层后,找到了接收软件后,但这不是目的,最终目的是与之通信。
2、TCP的三次握手和四次挥手:

通信时的三次握手:
A、客户端先要发一个请求到服务器,请求会打上一个标志位SYN(代表客户端要建立一条到服务器的链接,链接是以标准协议发送的)同时发送seq=x,然后服务器返回ACK=x+1,表示同意,然后客户端能和服务器能对话了。同理服务器对客户端发送进行同样的请求,这样服务器就能和客户端也能对话,这样双向通路就建立好了。
SYN seq=y表示服务器想客户端发送对话请求,ACK=X+1表示服务器同意客户端的对话请求。ACK=y+1表示客户端同意服务器的对话请求。然后准备吧消息通过网卡发送给目标电脑,此时工作于应用层,处于用户态,ACK x+2表示服务器收到客户端发来的消息,然后切换到内核态,由网卡发送出去。所以ACK x+2是切换用户态到内核态的信号。然后同时清除客户端上的缓存。
B、UDP协议只管发送,发送后就清除缓存(因为缓存占用的是内存),不管对象存不存在,万一断网了,对方收不到数据,显得不可靠,所以要结合TCP协议,TCP得等对方确认收到消息后才清除缓存。
断开链接时的4次挥手:
A、数据发送完了得断开链接,不然占用网络资源。
B、客户端数据传输完后,发送断开请求(标志位为FIN)给服务器,然后服务器返回ACK确认,这条线就断开。服务器和客户端断开也同理。就是四次握手了。
C、断开连接时,四次不能合并为3次。因为客户端数据传完时,服务器的数据传输并不一定就断开了。

原文地址:http://blog.51cto.com/13543767/2060515

时间: 2024-10-17 10:34:25

python全栈学习记录--3(2018.1.13) 计算机基础知识的相关文章

Python全栈开发之17、tornado和web基础知识

一.web基础知识 学习web框架之前,先来看一下web基础知识,首先要明白其本质就是socket,用户对应一个socket客户端,但是如果从socket开始开发web应用程序那么效率太了,正确的做法是底层socket处理代码由专门的服务器软件实现,而对于真实开发中的python web程序来说也是一般会分为两部分:服务器程序和应用程序.服务器程序负责对socket服务器进行封装,并在请求到来时,先经过web服务器,对请求的各种数据进行整理封装.之后web服务器将封装好的数据传递给应用程序,应用

Python全栈开发记录_第一篇

Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(代码行数:70行) 知识点1:优先级:not>and 短路原则:and:如果第一个条件的结论为假,那么 and 前后两个条件组成的表达式计算结果一定为假,后面的条件计算机不会进行计算 or:如果第一个条件的结论为真,那么or 前后两个条件组成的表达式计算结果一定为真,后面的条件计算机不会进行计算 知识点2:python区分大小写,常量需全部字母大写(默认这样写) python换行

Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)

由于上一篇篇幅较大,留下的这一点内容就想在这里说一下,顺便有个小练习给大家一起玩玩,首先来学习json 和 pickle. 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pic

python全栈学习--day4

列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}] 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据.列表是有序的,有索引值,可切片,方便取值. 索引,切片,步长 li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',

Python全栈开发记录_第五篇(装饰器)

单独记录装饰器这个知识点是因为这个知识点是非常重要的,必须掌握的. 了解装饰器之前要知道三个知识点 作用域,上一篇讲到过顺序是L->E->G->B 高阶函数: 满足下列其中一种即可称之为高阶函数: a.把一个函数名当做实参传递给另一个函数 b.返回值中包含函数名 3.闭包 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境),通俗讲法是:在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用.这样就构成了一个闭包.,具体看下面

Python全栈学习:如何安装Python方法,详解!

因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先就得把Python安装到你的电脑里.安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境. 安装Python 3.7 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的.由于3.x版越来越普及,我们的教程

python全栈学习路线

查询目录 一,硬件                                                                    十一,数据库 二,Linux基础                                                           十二,前端 三,python基础                                                        十三,Django 四,python文件处理   

python全栈学习--面向对象进阶3

复习: #反射 必须会,必须能看的懂,必须知道在哪儿用 #hasattr  getattr setattr delattr 内置方法 必须能看懂 能用尽量用 __len__len(obj)的结果依赖于obj.__len()__的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,结算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断相等 __str__ str(obj) print(

python全栈学习--day31(正则)

try: '''可能会出现异常的代码''' except ValueError: ''''打印一些提示或者处理的内容''' except NameError: '''...''' except Exception: '''万能异常不能乱用''' try: '''可能会出现异常的代码''' except ValueError: ''''打印一些提示或者处理的内容''' except NameError: '''...''' except Exception: '''万能异常不能乱用''' else