一、简述osi七层模型和TCP/IP五层模型
1. osi七层模型和tcp/ip五层模型的对应关系示意图
2.OSI的来源
OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。
3.OSI七层功能简述
应用层:工作在最顶层,为计算机用户提供各种应用程序和网络之间的接口,主要功能是直接为用户提供各种需要的服务,完成用户希望在网络上完成的各种工作,并且协调各个应用程序的工作。主要常见的网络协议有:HTTP、HTTPS、FTP、POP3、SMTP等。
表示层:对应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定格式传递给会话层,主要功能是处理用户信息的表示问题,如编码、数据格式转话和加密解密等。
会话层:是用户应用程序和网络之间的接口,负责两个实体表示层之间会话的建立、维持和终止,并支持它们的数据交换,例如提供单方向会话或双方向会话,管理会话中的发送顺序,及会话占用时长,更深层次的进行会话流量控制,寻址,出错控制等。
传输层:工作在第四层,上三层的任务是数据处理,传输层的任务是数据通信,起到承上启下的作用,主要功能是向用户提供可靠的端到端和透明的数据传输服务,包括差错控制和流量控制,向高层屏蔽了下层数据通信的细节。常见的网络协议有:TCP、UDP,端口号即是“端”也是工作在这一层中。
网络层:依据逻辑地址“IP”来建立两个网络设备之间的连接和信息传输,为传输层来的数据分组,数据链路层的数据转换为数据包,通过路由计算为报文或分组选择合适的路径。该层控制了数据链路层和传输层之间的信息转发、建立、维持和网络连接的终止,这一层就是我们经常说的IP协议层,IP协议是Internet的基础。
数据链路层:负责将来自物理层的比特流组合成字节,再将字节组合成帧传送到上一层,反之将上层的数据帧拆解转发到物理层,使用链路层地址来完成介质访问,差错检测,流浪控制和链路控制,提供可靠的,无差错的数据传输链路。该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
物理层:最终的信号传输是通过物理层实现的,通过物理介质传输比特流,物理层的主要功能是利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
4.两个主机之间各层的数据传输
二、总结描述TCP三次握手四次挥手
1.TCP三次握手
第一次握手:客户端主动向服务器端发起建立连接请求报文,SYN=1,并进入SYN-SENT阶段
第二次握手:服务器端接收到客户端的SYN报文,返回ACK确认客户端请求,并发送自己的SYN和ACK报文表明同意建立连接,进入SYN-RCVD阶段
第三次握手:客户端接收到服务器端的SYN+ACK报文,也向服务器端发送ACK报文确认自己收到,发送完毕,双方进入ESTAB-LISHED状态,TCP连接成功,完成三次握手
2.TCP四次分手
第一步:客户端向服务器端发送解除连接请求报文,FIN=1,并进入FIN-WAIT-1阶段。
第二步:服务器端接收到客户端的解除连接请求,先返回ACK确认自己收到解除请求,进入CLOSE-WAIT阶段,等待自己所有数据发送完。客户端接收到服务器端的确认报文后,进入FIN-WAIT-2阶段。
第三步:服务器端发送完最后的数据,发送FIN=1解除连接请求,进入LAST-ACK阶段。
第四步:客户端接收到服务器端的解除连接请求后,返回ACK报文,进入TIME-WAIT阶段,等待2MSL时间,如果服务器端收到客户端的ACK报文,则进入CLOSED状态,关闭终止此连接,如果没收到客户端的ACK报文,则会再次发送FIN报文给客户端,客户端在2MSL时间内,没有再次收到服务器端的FIN报文后,也进入CLOSED状态。
三、描述TCP和UDP区别
TCP包头
UDP包头
- TCP是面向连接;UDP是无面向连接,即发送数据不需要连接建立过程
- TCP提供可靠的服务,TCP通过校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输,保证传送的数据无差错、不丢失、不重复;UDP则是不保证可靠传输
- UDP有较好的实时性,工作效率比TCP高,适用于高速传输和实时性需求较高的通信或广播通信。
- TCP连接只能是点到点;UDP支持一对一、一对多、多对一和多对多的交互通信。
- TCP的包头首部是20字节;UDP的包头首部是8字节
四、总结ip分类以及每个分类可以分配的IP数量
IP地址中的前5位用于标识IP地址的类别:
A类地址的第一位为0;
B类地址的前两位为10;
C类地址的前三位为110;
D类地址的前四位为1110;
E类地址的前五位为11110。
IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。全0和全1的都保留不用。
A类:
(1.0.0.0-126.0.0.0)
第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
定义:第1字节为网络地址,其它3个字节为主机地址
范围:1.0.0.1-126.255.255.254
数量:允许有126个网段,每个网段允许有16777214台主机
子网掩码:255.0.0.0
私有地址:10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址),范围10.0.0.1-10.255.255.254
保留地址:127.X.X.X是保留地址,也是本机地址,等效于localhost或本机IP。一般用于测试使用。例如:ping 127.0.0.1来测试本机TCP/IP是否正常。
B类(128.0.0.0-191.255.0.0)
前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
定义:第1字节和第2字节为网络地址,其它2个字节为主机地址
范围:128.0.0.1-191.255.255.254
数量:允许有16384个网段,每个网段允许有65534台主机
子网掩码:255.255.0.0
私有地址:172.16.0.0 - 172.31.255.255是私有地址
保留地址:169.254.X.X是保留地址。如果IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP
C类
(192.0.0.0-223.255.255.0)
前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
定义:第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110
范围:192.0.0.1 - 223.255.255.254
数量:允许有2097152个网段,每个网段允许有254台主机
子网掩码:255.255.255.0
私有地址:192.168.X.X是私有地址。(192.168.0.0 - 192.168.255.255)
D类:
是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户。
定义:不分网络地址和主机地址,它的第1个字节的前四位固定为1110
范围:224.0.0.1 - 239.255.255.254
E类:
是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
定义:不分网络地址和主机地址,它的第1个字节的前五位固定为11110
范围:240.0.0.1 - 255.255.255.254
五、总结IP配置方法
IP地址配置可分为DHCP动态分配和静态指定
1.修改网络配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //动态地址分配,需要依赖DHCP服务
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f72eb9ab-6ded-4a58-a2c7-315b8c28c9a3"
DEVICE="eth0"
ONBOOT="yes"
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //静态指定IP
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" //修改地址配置协议为static静态
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f72eb9ab-6ded-4a58-a2c7-315b8c28c9a3"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.232.129 //配置IP
NETMASK=255.255.255.0 //配置掩码
GATEWAY=192.168.232.1 //配置网关
配置文件说明:
NAME:图形界面的网卡名
DEVICE:此配置文件应用到的设备
ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
IPADDR:指明IP地址
PREFIX:以CIDR表示表示子网掩码如255.255.255.0就可以写成24
NETMASK:子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
HWADDR:对应的设备的MAC地址
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf
2.临时修改IP指令
ifconfig 命令
[root@localhost ~]# ifconfig eth0 192.168.58.132/24
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.58.132 netmask 255.255.255.0 broadcast 192.168.58.255
inet6 fe80::69a5:3410:47ff:a9fd prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:16:a5:38 txqueuelen 1000 (Ethernet)
RX packets 1663 bytes 163252 (159.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1069 bytes 274660 (268.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip 命令
[root@localhost ~]# ip addr add 192.168.58.132/24 dev eth0
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:16:a5:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.58.130/24 brd 192.168.58.255 scope global noprefixroute dynamic eth0
valid_lft 1728sec preferred_lft 1728sec
inet 192.168.58.132/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::a2fd:24d8:4c25:7b7b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3.在centos7中使用nmcli命令配置IP
[root@localhost ~]# nmcli con add con-name test ifname eth0 type ethernet ipv4.method manual ipv4.addresses 192.168.58.132/24 ipv4.gateway 192.168.58.2
Connection 'test' (f3946291-f5a5-4623-afe6-c50bff6f723f) successfully added.
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-test
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.58.133
PREFIX=24
GATEWAY=192.168.58.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=test
UUID=f3946291-f5a5-4623-afe6-c50bff6f723f
DEVICE=eth0
ONBOOT=yes
[root@localhost ~]#nmcli con up test //启用test
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:16:a5:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.58.132/24 brd 192.168.58.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::69a5:3410:47ff:a9fd/64 scope link noprefixroute
valid_lft forever preferred_lft forever