1、简述osi七层模型和TCP/IP五层模型
- OSI七层模型:即开放系统互联模型(Open Systems Interconnection),OSI七层模型从下到上分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,每一层负责一项或一类具体的工作,然后将数据传递给下一层。
 - 
TCP/IP五层模型:TCP/IP是一组协议的代名词,它包括许多协议,组成了TCP/IP协议簇。它是把OSI七层模型简化成了五层模型。
osi七层模型和TCP/IP五层模型 
应用层:为应用程序或用户请求提供请求服务。
应用层是一些常见的应用程序(如Apache httpd服务、ftp、QQ、微信等)的数据起点或终止点,他们产生的数据就是应用层,接收数据也是在应用层接收。
应用层是OSI模型的最高层,离物理硬件层次最远,最接近用户。
表示层:数据编码、格式转换、数据加密。
应用层的下一层,在表示层,将为应用层产生的数据提供编码和数据转换类服务,即数据如何展现、如何表示的功能。如格式转换、编码转换、数据压缩、数据加密与解密等。
会话层:创建、管理会话。
接收来自传输层的数据,负责建立、管理和终止表示层实体之间的通信会话,支持他们之间的数据转换。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
传输层:数据通信。
传输层的基本功能是接收会话层的数据,并在必要的时候将数据分隔成更小的数据单位,然后传递给网络层。它是第一个端对端的传输控制层,在传输层有两个协议:UDP和TCP,当数据到达传输层,将被封装成数据报或数据段。如果采用UDP协议传输,则数据被封装成数据报;如果采用TCP协议传输数据,则数据被封装成数据段。
网络层:IP选址及路由选择。
经传输层封装的数据报或数据段要想通过网络传输出去,必须要指定数据的目标IP,在网络层会为数据段或数据报继续封装,加上源IP和目标IP,封装成为数据包。数据包有了目标IP之后,根据路由规则,可以知道数据包如何传递、怎么找到目标主机。另一方面,数据包中有源IP地址,使得对方主机回应的时候,可以将对方产生的数据根据这个源IP路由回来,使得自己能够收到对方的响应数据。
数据链路层:提供介质访问和链路管理。
经过网络层封装的数据包到达数据链路层后,将继续封装成数据帧:即将源MAC地址和目标MAC地址加入数据包,得到数据帧。链路层比较接近物理层,所以这次封装会根据物理链路上的设备来决定封装成何种格式的数据帧。如果是计算机与路由器或交换机之间的数据,则要将MAC封装成以太网帧;如果是路由器与路由器之间,则数据帧为PPP点到点协议帧。
物理层:管理通信设备和网络媒体之间的互联互通。
数据最终是通过网卡出去的,数据帧将进入最后一层物理层,在物理层,网卡会将数字信号转变成电信号传递给网线或其他传输介质,物理层处理后得到的数据是二进制数据,也成为bit位数据,在网络上传输的很多bit数据被称为bit流。
2、总结描述TCP三次握手四次挥手
(1)三次握手:
- 第一次握手:客户端A与服务器B建立连接时,A向B发送请求报文,在请求报文中,TCP首部中的SYN位设置为1,ACK位设置为0,序号seq为m,即SYN=1、ACK=0、seq=m,生成SYN包并发送给服务器B,此时A进入SYN_SENT状态;
 - 第二次握手:服务器B收到A发送的报文后,发现其中的SYN=1、ACK=0,便知道这是一个请求报文,如果B与A建立TCP连接,则B需要回复A。回复时,SYN=1,ACK=1、ack=m+1(ack为确认号),序号seq=n,这个包被称为ACK包,当服务器端发送SYN+ACK包后,服务器B进入SYN_RECV状态;
 - 第三次握手:客户端A收到服务器B发送的SYN+ACK包后,检查ack是否为m+1,ACK是否为1,如果正确,则将标志位ACK置为1,ack=n+1,seq=m+1,并将包回复给服务器;服务器收到回复后,检查ack是否为n+1,ACK是否为1,如果是则建立连接成功,客户端和服务器均进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传输数据。
(2)四次挥手 - 第一次挥手:客户端A向服务器B发送一个TCP请求,该TCP请求首部中FIN位置为1,序列号seq=x。FIN=1意味着这是一个请求关闭TCP连接的数据包,也被成为FIN包,当发送FIN包之后,A将从ESTABLISHED状态进入FIN-WAIT-1状态;
 - 第二次挥手:服务器B收到FIN包之后,发现FIN=1,知道A请求关闭,于是需要回复一个包给A,回复时,设置ACK=1,ack=x+1,同时设置seq=y,当发送完该回复包之后,服务器B进入CLOSE-WAIT状态。到了这个阶段,A向B的连接已经被释放,A不能向B发送数据,当时B还可以向A发送数据,由于这个阶段只有一个方向的连接被释放,所以CLOSE-WAIT状态也被成为半关闭(half-close)状态;
 - 第三次挥手:当A收到B发送的回复之后,A将进入FIN-WAIT-2状态,等待B发起从B到A的连接关闭请求。当B确认已经没有数据发送给A后,B主动向A发送请求,关闭从B到A的TCP连接。这时同样会发送一个FIN包,设置ACK=1,ack=x+1,seq=z(seq为一个新值,因为进入close-wait状态后,B可能还发送了一些数据),B发送完FIN+ACK包之后,进入LAST-ACK(最后确认)状态;
 - 第四次挥手:当A收到B发送的FIN+ACK包之后,需对B发送的关闭请求作出回复。回复时,ACK=1,ack=z+1,seq=x+1.当发送完这个ACK包之后,A不会立即关闭,而是进入TIME-WAIT阶段等待一段时间。当B收到A的ACK回复包之后,意味着B到A方向的连接确认关闭,服务器端进入CLOSED状态,完成四次挥手。
 
3、描述TCP和UDP区别
(1)TCP是面向连接的,通信是双向的;UDP是无连接的,发送数据前无需和对方建立连接,单向传输,效率较高;
(2)TCP提供可靠的服务,TCP传输的数据无差错、不丢失、不重复且有序到达;UPD由于差错校验功能有限,只能尽量保证数据可达对方,,无法保证可靠的交付;
(3)TCP是面向字节流的传输模式,可以来做拥塞控制;UDP是面向报文的,没有拥塞控制,出现网络拥塞的时候,源主机不会降低传输速率,对实时应用很有用;
(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
(5)TCP首部开销20字节;UDP的首部开销小,只有8个字节
4、总结ip分类以及每个分类可以分配的IP数量
1)IP分类
简介(IPV4):IPV4是一个32位二进制数,将32位二进制数分为四组,每组8位二进制数,每组二进制数均可转换成十进制数(如下图)
Internet委员会定义了5种IP地址类型,分别是A-E类,其中A、B、C三类由Internet委员会全球分配,D和E类为特殊地址,作为多播或保留使用。
每个IP地址都分为网络部分和主机部分,网络部分描述的是这个IP地址在哪个网段,主机部分描述的是这个IP地址在这个网段的哪个标识。
(1)网络地址最高位是0的地址为A类地址
(2)网络地址最高位是10的地址为B类地址
(3)网络地址最高位是110的地址为C类地址
(4)网络地址最高位是1110的地址为D类地址
(5)网络地址最高位是11110的地址为E类地址

A类地址
A类地址IP的第一部分格式是0xxx xxxx,那么它的范围是0000 0000=0,0111 1111=127,但是A类地址的第一部分范围其实是1-126,0和127都不是A类地址的有效地址
B类地址
B类地址IP的第一部分格式是10xx xxxx,那么它的范围是1000 0000=128,1011 1111=191,所以B类网络地址的第一个字节取值为128-191
C类地址
C类地址IP的第一部分格式是110x xxxx,那么它的范围是1100 0000=192,1101 1111=223,所以C类网络地址的第一个字节取值为192-223
D类地址
D类地址IP的第一部分格式是1110 xxxx,那么它的范围是1110 0000=224,1110 1111=239,所以D类网络地址的第一个字节取值为224-239,D类地址被用于组播地址
E类地址
E类地址不区分网络地址和主机地址,范围是240-255
保留地址

公共IP地址

私有IP地址

2)每个分类的合法地址数量
- A类地址
网络位只在第一个字节,主机位是3个字节,主机位的每个字节范围都是0-255,其中不能是全0或全255,所以A类地址:
共有网段:126个
每个网段的合法地址数量是:256256256-2=16777214
共计合法地址数量:2113928964 - B类地址
网络位占用2个字节,其范围是128-191,主机位是2个字节,所以A类地址:
共有网段:64256=16384个
每个网段的合法地址数量是:256256-2=65534
共计合法地址数量:1073709056 - C类地址
网络位3个字节,其范围是192-223,主机位是1个字节,所以A类地址:
共有网段:32256256=2097152个
每个网段的合法地址数量是:256-2=254个
共计合法地址数量:532676608 
5、总结IP配置方法
一、修改配置文件

二、类图形化工具
(1)CentOS6:setup
# setup




(2)CentOS7:nmtui
# nmtui



三、使用命令行工具ipadd
(1)ifconfig
ifconfig [-a] [-s] [interface] [options]
-a :显示所有接口配置信息
-s:显示接口的简短列表
options:
 up:激活接口
 down:禁用接口
[root@centos7 ~]# ifconfig ens33 192.168.45.136/24 up
或者
[root@centos7 ~]# ifconfig ens33 192.168.45.136 netmask 255.255.255.0 up
(2)ip addr
ip addr add |del IP/NETMASK dev IFACE
添加IP
[root@centos7 ~]# ip addr add 192.168.45.136/24 dev ens33
查看结果:
删除IP地址:
[root@centos7 ~]# ip addr del 192.168.45.136/24 dev ens33
查看结果:IP192.168.45.136已被删除
(3)nmcli命令
启用或禁用指定网卡接口:
nmcli device [ disconnect | connect ] IFACE新建或删除connection:
nmcli connection add type ethernet con-name NAME ifname IFACE
nmcli connection add type ethernet con-name ens33_1 ifname ens33

nmcli connection delete NAME
- 查看connection配置:
nmcli connection show NAME 
[root@centos7 ~]# nmcli connection show 
NAME                UUID                                  TYPE      DEVICE 
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
Wired connection 1  01ccef1a-167e-3926-9d77-1366bd72544a  ethernet  ens37  
ens37               0328ae5e-ab94-3258-b10f-56745d198753  ethernet  --     
- 更改connection配置
 
nmcli connection modify ens33_1 \
  ipv4.method manual \
  ipv4.addresses 192.168.45.136 \
  ipv4.gateway 192.168.45.254 \
  ipv4.dns 192.168.45.2
- 激活ens33_1接口
 
[root@centos7 ~]# nmcli connection up ens33_1
[root@centos7 ~]# nmcli connection show
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  01ccef1a-167e-3926-9d77-1366bd72544a  ethernet  ens37  
ens33_1             036bc392-ede0-422f-9e0c-302ee560ef36  ethernet  ens33  
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  --     
ens37               0328ae5e-ab94-3258-b10f-56745d198753  ethernet  --     
此时ens33已被禁用,ens33_1启用
- 在connection上新增ipv4地址
 
[root@centos7 network-scripts]# nmcli connection modify ens33_1 +ipv4.addresses 192.168.45.137/24
再次激活使新增IP生效
[root@centos7 network-scripts]# nmcli connection up ens33_1

- 在connection上删除ipv4地址
 
[root@centos7 network-scripts]# nmcli connection modify ens33_1 -ipv4.addresses 192.168.45.137/24
[root@centos7 network-scripts]# nmcli connection up ens33_1
再次激活后IP删除
- 删除ens33_1接口
 
[root@centos7 network-scripts]# nmcli connection delete ens33_1
Connection 'ens33_1' (036bc392-ede0-422f-9e0c-302ee560ef36) successfully deleted.
[root@centos7 network-scripts]# nmcli connection show
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  01ccef1a-167e-3926-9d77-1366bd72544a  ethernet  ens37  
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
ens37               0328ae5e-ab94-3258-b10f-56745d198753  ethernet  --    
