1、简述 OSI 七层模型和 TCP/IP 五层模型
1.1 OSI 七层模型
OSI(Open System Interconnect),即开放式系统互联。 一般都叫 OSI 参考模型,是 ISO(国际标准化组织)组织在 1985 年研究的网络互连模型。
OSI 定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),每一层实现各自的功能和协议,并完成与相邻层的接口通信。
- 物理层
传输比特流。为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范。数据单元为“比特( bit )”。
- 数据链路层
传输数据帧。定义如何格式化数据以便进行传输及如何控制对网络的访问,支持错误检测。数据单元为“数据帧( Frame )”,常见协议:ARP。
- 网络层
保证网络的可达性。路由数据包;选择传递数据的最佳路径(路由);支持逻辑寻址和路径选择。数据单元为“数据包( Packet )”,常见协议:IP、ICMP。
- 传输层
保证端到端的传输。确保数据传输的可靠性;建立、维护和终止虚拟电路;通过错误检测和恢复;信息流控制保障可靠性。数据单元为“数据段( Segment )”,常见协议:TCP、UDP。
- 会话层
会话控制。建立、管理和终止在应用程序之间的会话。数据单元为“数据( Data )”,常见协议:无。
- 表示层
数据的表达及数据格式的转换。确保接收系统可以读取该数据;格式化数据;构建数据;协商用于应用层的数据传输语法;提供加密。数据单元为“数据( Data )”,常见协议:无。
- 应用层
提供具体的应用服务。为应用程序进程(如:电子邮件、文件传输和终端仿真)提供网络服务;提供用户身份验证。数据单元为“数据( Data )”,常见协议:HTTP、HTTPS、FTP、POP3、SMTP。
1.2 TCP /IP 五层模型
TCP/IP 是一组协议的代名词,它包括许多协议,组成了 TCP/IP 协议簇。它是把OSI七层模型简化成了五层模型,将 OSI 七层模型中的 会话层 、表示层 、 应用层 合并为 应用层。
2、总结描述 TCP 三次握手四次挥手
2.1 三次握手过程
- step 1
建立连接时,客户端发送 SYN 包到服务器,其中包含客户端的初始序号 seq=x,并进入 SYN_SENT 状态,等待服务器确认。(其中,SYN=1,ACK=0,表示这是一个 TCP 连接请求数据报文;序号 seq=x,表明传输数据时的第一个数据字节的序号是 x )。
- step 2
服务器收到请求后,必须确认客户的数据包。同时自己也发送一个 SYN 包,即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。(其中确认报文段中,标识位 SYN=1,ACK=1,表示这是一个 TCP 连接响应数据报文,并含服务端的初始序号 seq(服务器)=y ,以及服务器对客户端初始序号的确认号 ack(服务器)=seq(客户端)+1=x+1)。
- step 3
客户端收到服务器的 SYN+ACK 包,向服务器发送一个序列号(seq=x+1),确认号为ack(客户端)=y+1,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
2.2 四次挥手
- step 1
首先,客户端发送一个 FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认。其中终止标志位 FIN=1,序列号 seq=u。客户端发送 FIN 后,进入 FIN_WAIT_1 状态(终止等待状态)。
- step 2
服务器收到这个 FIN,它发送一个 ACK,确认 ACK 为收到的序号加 1。服务器进入 ClOSE_WAIT 状态(关闭等待状态),客户端进入FIN_WAIT_1状态(终止等待状态)。
这一步,服务器除发送 ACK 外,也可能发送 FIN(回应一个ACK给服务端,进入 CLOSING 状态),或 ACK+FIN(直接进入TIME_WAIT状态)。
- step 3
关闭服务器到客户端的连接,发送一个 FIN 给客户端,服务端进入 LAST_ACK 状态。
- step 4
客户端收到 FIN 后,并发回一个 ACK 报文确认,并将确认序号 seq 设置为收到序号加 1。进入 TIME_WAIT 状态,服务器收到 ACK 后执行关闭,客户端等待 2MSL(建议值为2分钟)后,执行关闭。
3、描述 TCP 和 UDP 区别
TCP/IP 和 UDP最大的区别就是:TCP/IP 是面向连接的,UDP 是无连接的。TCP 协议和 UDP 协议各有所长、各有所短,适用于不同要求的通信环境。TCP 协议和 UDP 协议之间的差别如下表所示。
对比项 | TCP | UDP |
---|---|---|
是否建立连接 | 面向连接 | 无连接 |
传输可靠性 | 可靠 | 不可靠 |
应用场景 | 传输少量数据 | 大量数据 |
速度 | 慢 | 快 |
在实际的使用中,TCP主要应用于文件传输精确性相对要求较高且不是很紧急的情景,比如电子邮件、远程登录等。有时在这些应用场景下即使丢失一两个字节也会造成不可挽回的错误,所以这些场景中一般都使用TCP传输协议。由于UDP可以提高传输效率,所以UDP被广泛应用于数据量大且精确性要求不高的数据传输,比如我们平常在网站上观看视频或者听音乐的时候应用的基本上都是UDP传输协议。
4、总结ip分类以及每个分类可以分配的IP数量
IP地址是一个32位的2进制数,一般用点分10进制表示。
划分为ABCDE共五类,其中ABC类是常用地址,D类是组播地址,E类是保留地址(未使用)。
- A类
以0开头,前8位表示网络位,共126个可用网络(27-2),每个网络中有16777214(224-2)个可分配给主机的IP。
A类IP地址范围:0.0.0.0-127.255.255.255(其中0.0.0.0/16,即0.0.0.00.255.255.255用于表示所有地址,127.0.0.0/16,即127.0.0.0172.255.255.255是本机的回环地址,用于测试)
默认子网掩码:255.0.0.0
私有IP地址段为:10.0.0.0/8
- B类
以10开头,前16位表示网络位,共16384个可用网络(214),每个网络中有65534(216-2)个可分配给主机的IP。
B类IP地址范围:128.0.0.0-191.255.255.255
默认子网掩码:255.255.0.0
私有IP地址段为:172.16.0.0/16 ~ 172.31.0.0/16
- C类
以110开头,前24位表示网络位,共2097152个可用网络(221),每个网络中有254(28-2)个可分配给主机的IP。
C类IP地址范围:192.0.0.0-223.255.255.255
默认子网掩码:255.255.255.0
私有IP地址段为:192.168.0.0/16
- D类
以1110开头,均为组播地址,无网络位。
D类IP地址范围:224.0.0.0-239.255.255.255
- E类
以1111开头,保留地址(除255.255.255.255外)。
E类IP地址范围:240.0.0.0-255.255.255.255,其中255.255.255.255是广播地址。
5、总结IP配置方法(CentOS)
5.1 临时生效
- ifconfig
# 将 eth1 的 IP 设置为 10.10.10.10
[root@centos7 ~]# ifconfig eth1 10.10.10.100
# 将 eth1 的 IP 设置为 10.10.10.10,掩码为24位
[root@centos7 ~]# ifconfig eth1 10.10.10.100/24
# 给 eth1 设置一个子IP,地址为 10.10.10.10,掩码为24位
[root@centos7 ~]# ifconfig eth1:1 10.10.10.101/24
# 清除 eth1 的 IP 地址
[root@centos7 ~]# ifconfig eth1 0.0.0.0
- ip
# 将 eth1 的 IP 设置为 10.10.10.10
[root@centos7 ~]# ip addr add 10.10.10.10 dev eth1
# 将 eth1 的 IP 设置为 10.10.10.10,掩码为24位
[root@centos7 ~]# ip addr add 10.10.10.10/24 dev eth1
# 给 eth1 设置一个子IP,地址为 10.10.10.10,掩码为24位
[root@centos7 ~]# ip addr add 10.10.10.10/24 dev eth1 label eth1:1
# 清除 eth1 的 IP 地址
[root@centos7 ~]# ip addr del 10.10.10.10/24 dev eth1
5.2 永久生效
- 配置文件
/etc/sysconfig/network-script/ifcfg-* 文件(如不存在可创建),格式如下(帮助文档:/usr/share/doc/initcripts-*/sysconfig.txt):
BOOTPROTO="none"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="10.10.10.10"
PREFIX="24"
GATEWAY="10.10.10.2"
DNS1="223.5.5.5"
DNS2="223.6.6.6"
生效
[root@centos7 ~]# systemctl restart network
- nmcli (CentOS 7,实际会修改对应的配置文件)
[root@centos7 ~]# nmcli con mod eth1 ipv4.address 10.10.10.101/24
生效
[root@centos7 ~]# systemctl restart network
- setup命令 (CentOS 6)
会弹出一个图形界面,选择"Network configuration"按提示操作即可,CentOS7不支持。
- 图形界面
登录系统后点击桌面右上角的网络图标进行设置。
- 安装过程设置IP
系统安装正式开始前的配置界面,可以配置网络(包括IP地址)。