正式班D7
2020.10.13星期二 正式班D7
一、上节课复习
Linux发展
- 批处理系统
- 多道技术
- 分时操作系统
- multics—>Unix—>minix—>Linux(如Redhat、centos)
线程与进程
进程:资源单位
一个程序在运行过程中使用的数据都与自己的进程有关
线程:执行单位(CPU执行的是线程)
进程内代码的运行过程
任务运行的三种状态
- 运行态:拿到CPU,正在运行
- 就绪态:等待分配CPU,一旦拿到cpu就可以立即运行
- 阻塞态:拿到CPU也无法执行,必须等io结束进入就绪态
网络
什么是网络
网络=物理连接介质+互联网通信协议
互联网通信协议就相当于计算机界的英语
为什么要有网络
为了打破地域限制,提高数据传输效率(信息高速公路)
OSI七层协议
应用层==》http、ftp、可以自定义协议
表示层
会话层
传输层==》TCP/UDP协议
1、数据段
2、head+data:head放源端口、目标端口
3、端口在本机唯一即可
网络层==》IP协议
1、数据包
2、head+data:head放源IP地址、目标IP地址
3、IP地址的通信协议==》路由协议
ipv4:
IP v4地址
00000000.00000000.00000000.00000000==》0.0.0.0
11111111.11111111.11111111.11111111==》255.255.255.255
子网掩码:
11111111.11111111.11111111.00000000==》255.255.255.0
172.16.10.13/24==》172.16.10.0
172.16.10.14/24==》172.16.10.0
子网地址相同,代表处于同一个lan中
数据链路层==》Ethernet以太网协议
1、数据帧
2、head+data,head放源mac地址、目标mac地址
3、基于mac地址的广播的通信方式==》计算机通信基本靠吼
物理层==》转换成电信号(如011101101),然后发送
二、本节内容
数据链路层与网络层补充
引入
- 计算机1要与计算机2通信,计算机1必须拿到计算机2的IP地址和子网掩码
- 通信分为两类:局域网内、跨局域网
- 问题:
- 计算机1如何确定与计算机2是否在同一个局域网内
- 如果在一个局域网内如何通信(要拿到目标mac也就是计算机2的mac地址)
- 如果跨局域网如何通信(要拿到目标mac也就是网关的mac地址)
ARP协议
通过IP地址找到mac地址
前提:在一个局域网LAN内,靠的是目标mac地址找到对方在哪里
即只要知道目标mac地址是谁,数据包就发给谁
情况一:
前提:计算机一:192.168.10.11/24
计算机二:192.168.10.13/24
拿到目标mac地址
ARP协议:判断两台计算机的子网地址是否一样
(此情况一样,尝试获得计算机2的mac地址)
发包
计算机1的mac地址 FF-FF-FF-FF-FF-FF 192.168.10.11/24 192.168.10.13/24 数据部分
所有计算机都收到该ARP包
碰到FF-FF-FF-FF-FF-FF大家都知道对方想和自己要mac地址
如果目标IP192.168.10.13/24是自己就返回自己的mac地址
发真正的数据
计算机1的mac地址 计算机2的mac地址 192.168.10.11/24 192.168.10.13/24数据部分
情况二:
前提:计算机一:192.168.10.11/24
计算机二:202.10.11.13/24
拿到目标mac地址
ARP协议:判断两台计算机的子网地址是否一样
(此情况不一样,应当尝试获取网关的mac地址)
发包
计算机1的mac地址 FF-FF-FF-FF-FF-FF 192.168.10.11/24 192.168.10.1/24(网关的IP) 数据部分
所有计算机都收到该ARP包
碰到FF-FF-FF-FF-FF-FF大家都知道对方想要自己的mac地址
如果碰到目标IP192.168.10.1/24就是自己则返回自己的mac地址
发真正的数据
计算机1的mac地址 网关的mac地址 192.168.10.11/24 202.10.11.13/24 数据部分
IP+mac
IP地址+mac地址==》全世界唯一一台计算机
ARP会将IP地址转换成mac地址
- 要么是局域网内一台计算机的mac地址
- 要么就是网关的mac地址
TCP/UDP协议(传输层)
由来
- 网络层的IP帮我们区分子网,以太网层的mac帮我们找到主机;然后大家就使用多个应用程序
- 如何标识这台主机上的应用程序就是端口(应用程序与网卡关联的编号)
功能:建立端口到端口的通信
范围:065535(其中01023是系统占用端口)
TCP协议(可靠传输)
TCP通信之前必须建立双向通路
TCP数据包没有长度限制,理论上可以无限长,但为了保证网络的效率,
通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割
可靠原因:数据拷贝后传输(传输时不会删除原数据),对方无应答会申请多次,给到ACK确认信息之后删除数据
UDP协议(不可靠传输)
报头部分一共只有8个字节,总长度不超过65535个字节,正好放进一个IP数据包
TCP三次握手和四次挥手
SYN:Synchronize sequence numbers同步序列编号
seq:sequence序列
ACK:ACKnowledge Character确认字符
三次握手(客户端先手)
客户端状态SYN_SENT,发送SYN请求信息给服务端,此数据段序列号seq=x
服务端状态从LISTEN转到SYN_RCVD
回复SYN+ACK数据段,此数据段序列号seq为y,确认序列号ACK=x+1
客户端状态从SYN_SENT转到ESTABLISHED
回复确认序列号ACK=y+1
服务器状态从SYN_RCVD转到ESTABLISHED
四次挥手(客户端、服务端都可先手)
应用层
由来:用户使用的都是应用程序,均工作于应用层
互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式
功能:规定应用程序的数据格式
socket
应用层
》socket《
传输层
网络层
数据链路层
物理层
DHCP
想实现网络通信,每台主机需要具备四要素:
- 本机的IP地址
- 子网掩码
- 网关的IP地址
- DNS的IP地址
获取方式
静态获取:手动配置
动态获取:通过DHCP获取(udp头)
以太网头+IP头+udp头+DHCP数据包
"以太网头"设置发出方(本机)的mac地址和接收方(DHCP服务器)的mac地址
前者就是本机网卡的mac地址,后者此时未知,填广播地址FF-FF-FF-FF-FF-FF
"IP头"设置发出方IP地址和接收方IP地址
此时两者均未知,发出方填0.0.0.0,接收方填255.255.255.255
"UDP头"设置发出方的端口和接收方的端口
这一部分是DHCP协议规定好的,客户端是68端口,服务端是67端口
DHCP client(68号端口)---------------->DHCP server(67号端口)
DNS(Domain Name System)域名系统
dns作用
DNS是解析域名的,会把域名翻译成IP再进行连接
DNS服务器地址是唯一的,是运行商提供给终端用户来解析IP地址及域名的关系的
dns查询方式
递归
主机向本地域名服务器查询一般都是采用递归查询
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,
那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(替主机继续查询,而不是让主机自己进行下一步查询)。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
迭代
本地域名服务器向根域名服务器的查询是迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。
根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
结合
dns解析流程
dns缓存
··DNS缓存指DNS返回了正确的IP之后,系统会将这个结果临时存储起来,且为这个缓存设定失效时间
··在时间内再次访问这个网站时,系统会直接从本地DNS缓存中把结果交给你,而不是去询问DNS服务器,变向加速了网址的解析。
··时间过后系统会再次询问DNS服务器获得新的结果
··修改DNS服务器后并且不希望电脑再使用之前的DNS缓存时要手动清除本地缓存
分类
浏览器DNS缓存(内存中)
浏览器会按照一定频率缓存DNS记录
本地操作系统DNS缓存(内存中)
如果浏览器找不到需要的DNS记录就去操作系统找
本地HOSTS文件(硬盘中)
Windows系统中位于C:\Windows\System32\drivers\etc
Linux系统中位于/etc/hosts
路由器指定的DNS(远程)
路由器自动获取DNS地址,也可以手动修改-登录后台设置DNS服务器地址
(路由器DNS被篡改会造成域名劫持,访问的网址都会被定位到同一个位置,但IP可以直接访问)
本地DNS服务器(远程)
根服务器(远程、跨国)
浏览器dns查找顺序
浏览器DNS缓存->本地系统DNS缓存->本地计算机HOSTS文件->本地DNS缓存->递归or迭代搜索
清除dns缓存
全国通用DNS地址(国内用户推荐使用,速度较快!)
首先DNS服务器地址添:114.114.114.114 (位于北京人民英雄纪念碑)
备用DNS服务器地址添:114.114.115.115
全球通用DNS地址(此DNS地址为谷歌服务器的)
首选DNS服务器地址添:8.8.8.8
备用DNS服务器地址添:8.8.4.4
- 打开cmd执行命令:ipconfig/all
- 查看本地dns缓存命令:ipconfig/displaydns
- 清除本地dns缓存命令:ipconfig/flushdns
正式班D7的更多相关文章
- 正式班D5
2020.10.10星期六 正式班D5 一.上节课复习 1.硬盘分类 1.机械磁盘 io时间=平均寻道时间+平均延迟时间 buffer:写缓冲区 cache:都缓存 2.固态硬盘 ...
- 正式班D8
2020.10.15星期四 正式班D8 一.上节课复习 OSI七层协议 socket socket是对传输层以下的封装 IP+port标识唯一一个基于网络通讯的软件 TCP与UDP TCP:因为在通信 ...
- 正式班D9
2020.10.16星期五 正式班D9 一.vmware workstation的使用 虚拟机管理软件 定义 虚拟机(Virtual Machine)软件是一套特殊的软件,它可以作为操作系统独立运行, ...
- 正式班D11
2020.10.20星期二 正式班D11 bash解释器交互式环境特性 命令和文件自动补全(Tab只能补全命令和文件) 快捷键 CTRL+C ==>终止前台运行的程序 CTRL+D ==> ...
- 正式班D12
2020.10.21星期三 正式班D12 一.目录结构 系统目录结构 目录 文件夹:存放的是具体有哪些文件 文件:存放的就是具体的数据 需要记住的 /dev/cdrom # 光盘设备,光盘里存放的内容 ...
- 正式班D13
2020.10.22星期四 正式班D13 修改文件内容 vim编辑 vim基础 可理解为Windows下的文本编辑器 vim可用来修改配置.写脚本 三种模式(命令模式.输入模式.末行模式) 命令模式按 ...
- 正式班D14
2020.10.23星期五 正式班D14 9.5 文件处理三剑客(支持|) 9.5.1 sed流式编辑器 事先制定好编辑文件的指令,让sed自动完成对文件的整体编辑(同一时间内存中只有文件中一条) # ...
- 正式班D16
2020.10.27星期二 正式班D16 目录 9.9 字符处理命令 9.9.1 sort排序 9.9.2 uniq去重 9.9.3 cut处理规律文本 9.9.4 tr替换 9.9.5 wc统计 9 ...
- 正式班D20
2020.11.02星期五 正式班D20 目录 11 软件包管理 11.1 软件包介绍 11.1.1 编程语言分类 11.1.2 三种安装包 11.2 rpm包管理 11.2.1 rpm包简介 11. ...
随机推荐
- require exports module.exports
require 用于引入模块(js文件). JSON.或本地文件 自己写的模块必须是相对路径,省略了node就认为该自定义模块(js文件)是核心模块(内置模块或者第三方模块) node 有模块作用域 ...
- 8svg 自定义全局组件
0.https://www.npmjs.com/package/vue2-svg-icon 直接使用vue2-svg-icon插件 .如果不使用,就使用下面用法 注意:用阿里图标时候,最好都选择#ff ...
- 当前PageOffice需要获取更高版本的授权才能正常运行。(Error:0x0005)
说明当前程序的是pagoeffice3说明当前程序的是pagoeffice3.0的程序,而序列号用的是2.0的序列号,或者说是当前程序是4.0的程序,而序列号用的是3.0的序列号.即当前用的是高版 ...
- 剑指 Offer 43. 1~n整数中1出现的次数
题目描述 输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例如,输入12,1-12这些整数中包含1 的数字有1.10.11和12,1一共出现了5次. 示例 1: 输入:n = 12 ...
- Mysql执行计划(大章)
Mysql的执行计划 执行计划是啥? 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道Mysql是如何处理你的SQL语句的.分析你的查询语句或者表结构的性能瓶颈 语法 explain ...
- Oracle的timestamp字段更新实验 结论:只有逐条更新才能保证timestamp字段有差别,批量更新只会得到一致的时间,此操作无关时间精度.
有这么一张表: create table hy_testtime( id number(6,0) not null primary key, name nvarchar2(20) not null, ...
- Unity接入多个SDK的通用接口开发与资源管理(二)
接着上篇,本篇对SDK接口进行封装.在开始之前,需要先了解下面知识. (1)unity与android之间的交互 unity通过下面方式调用android中的函数: 方法一: AndroidJavaC ...
- ASP.NET Core 3.x启动时运行异步任务(一)
这是一个大的题目,需要用几篇文章来说清楚.这是第一篇. 一.前言 在我们的项目中,有时候我们需要在应用程序启动前执行一些一次性的逻辑.比方说:验证配置的正确性.填充缓存.或者运行数据库清理/迁移等 ...
- JVM运行时数据区--程序计数器
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息.CPU只有把数据装载到寄存器才能够运行.JVM中 ...
- Linux实战(5):Centos8安装python
Centos8正式版已经发布了,已经尝鲜的小伙伴们会发现与其他Linux发行版不同,CentOS 8默认不安装Python.接下来的操作指导大家如何安装python3. 转自链接 安装python3 ...