python全栈学习记录--3(2018.1.13) 计算机基础知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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次。因为客户端数据传完时,服务器的数据传输并不一定就断开了。
以上是关于python全栈学习记录--3(2018.1.13) 计算机基础知识的主要内容,如果未能解决你的问题,请参考以下文章
Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)