touch file 不存在file则创建文件,存在修改时间属性
cat -n 连接文件打印输出,每行编号 -b空白不编号
cat -n text1 > text2 :把text1内容加行号输入text2中
cat /dev/null > /etc/text.txt:清空/tec/text.txt内容
diff 比较文件差异
find 指定目录下查找文件(path为空说明当前路径)
locate 查找符合条件的文档
more 类似cat,页显示,空格/b 前后
less 类似more,随意浏览,回车滚动一行
rm -i/f/r 删除 询问/不询问/循环
tail 查看文件内容
which查看当前要执行的命令所在路径
whereis 查找文件
grep 查找文件里符合条件的字符串
join 连接两个文件内容打印
tar
cd
df 显示文件系统的磁盘使用情况统计
du 显示目录和文件的大小
fdisk -l查看当前分区情况
pwd 显示当前工作目录(PrintWorkingDirectory)
mkdir 创建文件夹
mount 挂载linux系统外的文件
ls 显示工作目录下内容
netstat显示网络状态
netstat -a:显示详细的网络状况,显示所有连线中的socket
netstat -n:直接使用ip地址,不通过域名服务器
netstat -I:显示监控中的服务器socket
netstat -t/u:显示TCP/UDP连线状况
nestat -p:显示正在使用socket的程序识别码和程序名称
-Intp 查看所有监听端口
-antp已经建立连接正在使用
-anp查看端口对应服务 |grep 8080
-ano查看端口对应进程 |find str
route -n 查看路由表
iptables -L 查看防火墙
ifconfig 查看网络接口
ps -ef 用户查找全格式(f)的全部(e)进程(ps命令是Process Status)
nouhp后台运行
nouhp java -jar -Dfile.encoding=UTF-8 -Duser.timezone=GMT+08 xxx.jar > dev/null &
docker run 创建新的容器并允许一个命令
docker run --name mynginx -d nginx:lastest:使用docker镜像nginx:lastest以后台模式启动一个容器,命名为mynginx
docker run -it nginx:lastest /bin/bash:使用镜像nginx:lastest以交互模式启动一个容器,并执行/bin/bash指令
docker run -p 80:80 -v /data:/data -d nginx:lastest:镜像后台启动一个容器,把容器80端口映射到主机端口,主机目录/data映射到容器的/data
docker start/stop/restart/kill命令
docker rm删除一个或多个容器
docker create创建一个新的容器但不启动它,用法同run
docker pause/unpause暂停/恢复容器中所有进程
docker exec 在运行的容器中执行命令
docker ps 列出容器
-a 显示所有的容器,包括未运行的
-l 显示最近创建的容器 -n最近创建的n个容器
-q 只显示容器编号
-f根据条件过滤
docker attach 连接正在使用中的容器
docker logs获取容器的日志
login
logout
pull
push
search
docker images 列出本地镜像
docker build使用Dockerfile创建镜像,docker通过读取Dockerfile文档传几创建镜像
docker history查看指定镜像的创建历史
docker save : 将指定镜像保存成 tar 归档文件
docker load : 导入使用docker save命令导出的镜像
docker import : 从归档文件中创建镜像
OSI七层模型 | 介绍 | 主要设备 | TCP/IP四层模型 | 协议 |
---|---|---|---|---|
应用层 | 各种应用程序,网关在应用层,可连接不同协议的子网 | 应用网关 | 应用层 | DNS(域名解析53),FTP(文件传输协议20,21),TeInet(远程登录协议23),HTTP(超文本传输协议80),SMTP(简单邮件协议),HTTPS(超文本传输安全协议) |
表示层 | 对数据进行加密解密,编码解码,压缩解压缩 | |||
会话层 | 建立不同机器之间的连接 | |||
传输层(segment) | 实现端对端的通讯传输 | 传输层 | TCP,UDP | |
网络层(packet) | 主机之间通讯,传输IP数据包(IP寻址路由转发数据包packet) | 路由器(可以隔离广播风暴而交换机不能)防火墙,VPN | 网络层 | IP(Internet Protocol)网际协议,ARP(地址解析协议),ICMP(网络控制报文协议),IGMP(网际组管理协议) |
数据链路层(Frame) | 将比特封装成帧,在以太网传输,可实现差错控制 | 网桥(连接不同网络的桥梁) 交换机(根据数据帧的***MAC地址***交换信息到不同端口) | ||
物理层(Bits) | 实现主机与网络之间的物理连接,规定一些传输媒体接口 | 网线,光纤,中继器(放大信号等)和集线器(将网线集在一起,多端口的中继器) | 主机-网络层 | 以太网 |
HTTP | 端口号80 | 信息明文传输 | 连接简单,无状态 | |
---|---|---|---|---|
HTTPS | 端口号443 | 具有安全性的SSL加密协议 | HTTPS协议是由SSL+HTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 | HttpsURLConnection |
TCP和UDP | java.net. | 是 | |||
---|---|---|---|---|---|
TCP | 面向连接的可靠字节流传输协议 | 传输数据之前在不同主机的端口之间建立一条链路,传输前建立连接传输和释放连接。要求系统资源较多 | 保证数据正确性和顺序 | ServerSocket | 电话通话 |
UDP | 面向无连接的不可靠报文传输协议 | 数据传输速度快,每个数据包限制在64k以内 | 可能丢包,不保证数据顺序 | DatagramSocket/Packet | 视频聊天,对讲机 |
第一次握手 | 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认; | SYN:同步序列编号(Synchronize Sequence Numbers)。 | 客户端进入同步发送状态 |
---|---|---|---|
第二次握手 | 服务器收到syn包,必须确认客户的ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; | ACK:确定号是否有效,一般置为1 | 服务端进入同步接收状态 |
第三次握手 | 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 | 同时进入建立状态 |
第一次挥手 | 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。 | 客户端进入终止等待1状态 | |
---|---|---|---|
第二次挥手 | 服务器收到FIN连接释放报文,发出ACK确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。 | 服务端进入关闭等待状态 | |
第三次挥手 | 客户端收到服务器的ACK确认请求报文后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据) | 客户端今日终止等待2状态 | |
第四次挥手 | 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。 | 服务端进入最后确认状态 | |
客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。 | 客户端进入时间等待状态 | ||
服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCP后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。 | 服务端进入关闭状态,客户端进入关闭状态 |
服务端状态 | CLOSED | LISTEN | SYN_RCVD | ESTABLISHED | CLOSE_WAIT | LAST_ACK | CLOSED | ||
客户端状态 | CLOSED | SYN_SENT | ESTABLISHED | FIN_WAIT_1 | FIN_WAIT_2 | TIME_WAIT | CLOSED |
为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
IP地址由网络号和主机号组成,通过子网掩码可以知道一个IP地址的网络号和主机号
网络号划分子网,子网地址基于没类网络地址的主机部分创建
特征 | 网络范围 | 默认掩码 | |
---|---|---|---|
A类地址 | 第1个8位中的第1位始终为0 | 0-127.x.x.x | 255.0.0.0/8 |
B类地址 | 第1个8位中的第1、2位始终为10 | 128-191.x.x.x | 255.255.0.0/16 |
C类地址 | 第1个8位中的第1、2、3位始终为110 | 192-y.x.x.x | 255.255.255.0/24 |
指明一个IP地址的哪些标识是主机所在子网,以及主机的位掩码。
作用:将IP地址划分为网络地址和主机地址两部分
格式ip/子网掩码1的个数,如206.110.4.0/18 ,网络号位为18,子网掩码255.255.192.0,
IP地址和子网掩码进行&运算,结果就是网络地址
网络地址的主机位全部变成1
例:
IP:141.14.72.24 子网掩码:255.255.192.0 求网络地址
141.14.72.24(72==>01001000)
&
11111111 1111111 11000000 00000000(网络号18位,主机号14位)
=
141.14.64(01000000).0(网络地址)
141.14.126(011111110).127(广播地址)
子网数=2^子网号位数
每个子网容纳主机数=2^主机位数 - 2
每个子网的主机数量为n,分配的子网地址空间个数为:n+3
加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址
例:一个子网有10台主机,那么对于这个子网需要的IP地址是
13<16=2^4,主机号位为4,子网掩码为255-16=240 255.255.255.240
例:一个子网有14台主机,14+3=17>16,主机号位为5,子网掩码 255.255.224
例:206.110.4.0/18被划分成16个子网求每个子网容纳主机数
默认没有划分子网情况下是C类IP,默认子网掩码是255.255.255.0,网络号为24位,主机号位为8位
划分子网后,子网掩码为255.255.192.0,网络号为18位,主机号为14位,借走了6位主机位,分出26子网数,即每个子网号位数为6,子网数为64(26),每个子网容纳主机数=2^14 - 2
如将206.110.4.0/18划分成16个子网说明子网号位为4(2^4 = 16),原主机号为14位,从主机号中借走4位划分14-4=10,子网的主机号为10位,每个子网容纳主机数=2^主机位数 - 2=1022。
IP地址 | MAC地址 | |
---|---|---|
长度不同 | 32位二进制 | 48位二进制 |
分配依据 | 网络拓扑 | 基于制造商 |
寻址协议不同 | 网络层 | 数据链路层 |
作用 | IP寻址路由转发包 | 数据链路层设备如交换机,根据MAC地址将数据帧从一个节点传送到另一个节点 |
IP和MAC地址映射关系有ARP地址解析协议完成。ARP根据目的IP地址,找到中建节点的MAC地址,通过其传送最终达到目的网络
websocket是基于HTTP的应用层协议,只需要完成一次握手,建立长连接并进行双向传输,,不需要再次发起网络请求,允许服务端向客户端推送信息(Http是通过客户端Ajax轮询发起请求,服务端进行响应),是双向通信协议。使用ws(80)或wss(443)的统一资源标识符(wss表示在TLS上的websocket)
websocket在建立握手时通过 HTTP/1.1 协议的101状态码进行握手。但是建立之后,在真正传输时候是不需要HTTP协议的,而是使用TCP协议。
属于OSI应用层协议,由请求和响应构成。无状态协议。
建立TCP连接后,通过socket访问连接,客户端通过该连接发送HTTP请求报文(ASCII码)
请求行:方法字段 URL字段 HTTP协议版本
请求头:键值对格式,浏览器自行封装,要告知服务器的一些信息
空行
请求体:请求参数(get为空)
状态:HTTP协议版本 状态码 状态码的原因短码
响应头:键值对格式,浏览器自行封装,要告知服务器的一些信息
空行
响应体:静态资源
HTTP1 | HTTP1.1 | HTTP2.0 |
---|---|---|
当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接 | 默认使用长连接,减少三次握手开销 | 使用多路复用技术,通过单一的HTTP/2连接发起多重请求响应信息 |
只发送header信息,如判断有权限请求返回100,客户端接收后再发送body。返回401不发送。 | 采用二进制格式 | |
当浏览器下次请求的时候又要建立连接 | 支持断点续传 | 多路复用底层采用“二进制分帧层”的方法,分割成更小的帧,二进制进行编码,多个请求在一个TCP连接上完成,性能提升 |
同一时间见对同一域名请求数量有限制,超过阻塞 |
短连接:在HTTP1.0中,客户端发送请求,服务器接收请求,双方建立连接,服务器响应资源,请求结束。
长连接:在HTTP 1.1,客户端发出请求,服务端接收请求,双方建立连接,在服务端没有返回之前保持连接,当客户端再发送请求时,它会使用同一个连接。这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。
优势:减少了连接请求,降低TCP阻塞,减少了延迟,实时性较好。
劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。
状态字 | 含义 | ||||
---|---|---|---|---|---|
1** | 表示通知信息,表示请求收到,或者正在处理 | 100 Continue客户端应当继续发送请求 | 101 Switching Protocols服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求 | ||
2** | 成功,操作被成功接收并处理 | 200 OK请求已成功 | 204:请求被受理但没有资源可以返回 | ||
3** | 重定向 | 301 Moved Permanently永久性重定向 | 302临时重定向,请求的资源已经临时移动到新URL | 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上 | 304:GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变 |
4** | 客户端错误 | 401请求需要认证 | 403请求的对应资源禁止被访问 | 404服务器无法根据客户的请求找到资源 | |
5** | 服务器错误 | 500服务器内部错误,无法完成请求 | 503服务器正忙 |
请求方法 | |
---|---|
GET | 请求获取由Request-URI所标识的资源 |
POST | 在Request-URI所标识的资源后附加新的数据 |
HEAD | 请求获取由Request-URI所标识的资源的响应消息报头 |
OPTIONS | 请求查询服务器的性能,返回服务器所支持的请求方法 |
PUT | 请求服务器存储一个资源,并用Request-URI作为其标识 |
DELETE | 请求服务器删除由Request-URI所标识的资源 |
TRACE | 回显请求服务器收到的请求信息,主要用语测试或诊断 |
都是HTTP协议中的两种请求方式,HTTP是基于TCP/IP的应用层协议,在报文格式上,请求行不同
GET | POST | |
---|---|---|
带参数时 | GET方法的参数放在URL中 | POST方法放在请求体中 |
GET通过URL提交数据,约定是参数写在?后以&分割,因此GET提交的数据量和URL所能达到的最大长度有关 | ||
实际上HTTP协议对URL长度没有限制,限制URL长度大多是浏览器或服务器配置参数 | ||
GET方式通过URL方式请求,明文传输,数据地址栏可见 | POST传输数据地址栏不可见 | |
回退 | 无害 | 重新被提交 |
可悲缓存 | 不可被缓存 |