1、简述osi七层模型和TCP/IP五层模型
osi七层模型
第7层 应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:
HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
第6层 表示层
主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式
第5层 会话层
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。
第4层 传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
第3层 网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。
第2层 数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层
第1层 物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等
TCP/IP五层模型
第 5 层 - 应用层
应用层是放置网络应用的地方。网络应用程序的示例是网络浏览器、聊天客户端和电子邮件客户端。驻留在应用层上的网络应用程序使用其底层,即传输层来连接到远程计算机。
第 4 层 - 传输层
传输层中的两个重要协议是TCP(传输控制协议)和UDP(用户数据报协议)。TCP(传输控制协议)用于可靠连接,UDP(用户数据报协议)用于快速流连接类型。传输层为不同的应用程序提供了一个寻址系统,称为端口号。传输层通过为应用程序分配端口号将数据传送到确切的应用程序。
第 3 层 - 网络层
网络层负责将数据从一个网络移动到另一个网络。网络层的主要协议是互联网协议 (IP)。Internet 协议 (IP) 使用 IP 地址来标识 IP 流量的来源和目的地。路由功能与网络层相关。
第 2 层 - 数据链路层
LAN 标准(例如:以太网)与数据链路层相关联。数据链路层创建称为帧的数据包,它封装了Internet 层的 IP 数据报。数据链路层使用MAC 地址来识别源计算机和目标计算机。
第 1 层 - 物理层
物理层负责沿网络将计算机位从一个设备发送到另一个设备。物理层以电、光或无线电波的方式传输数据
2、总结描述TCP三次握手四次挥手
三次握手:
客户端主动发送数据包, 包含标识符SYN=1和包的序号seq=x;
服务器端收到后,回包标识符SYN=1,确认符ACK=1,回包的序号seq=y,和确认符号ack=x+1(在客户端的包序号上+1,表示希望客户端下一次传包的时候发送x+1);
客户端在收到来自服务器的回应后回包ACK=1,表示已收到服务器端的包seq=x+1是服务器端要求的序号,同时告知服务器 希望下次收到的包序号为ack=y+1
至此完成了三次握手
四次挥手:
第一次挥手。客户端发起 FIN 包(FIN = 1),客户端进入 FIN_WAIT_1 状态。TCP 规定,即使 FIN 包不携带数据,也要消耗一个序号。
第二次挥手。服务器端收到 FIN 包,发出确认包 ACK(ack = u + 1),并带上自己的序号 seq=v,服务器端进入了 CLOSE_WAIT 状态。这个时候客户端已经没有数据要发送了,不过服务器端有数据发送的话,客户端依然需要接收。客户端接收到服务器端发送的 ACK 后,进入了 FIN_WAIT_2 状态。
第三次挥手。服务器端数据发送完毕后,向客户端发送 FIN 包(seq=w ack=u+1),半连接状态下服务器可能又发送了一些数据,假设发送 seq 为 w。服务器此时进入了 LAST_ACK 状态。
第四次挥手。客户端收到服务器的 FIN 包后,发出确认包(ACK=1,ack=w+1),此时客户端就进入了 TIME_WAIT 状态。注意此时 TCP 连接还没有释放,必须经过 2*MSL 后,才进入 CLOSED 状态。而服务器端收到客户端的确认包 ACK 后就进入了 CLOSED 状态,可以看出服务器端结束 TCP 连接的时间要比客户端早一些。
3、描述TCP和UDP区别
传输控制协议 (TCP) | 用户数据报协议 (UDP) |
TCP 是一种面向连接的协议。面向连接是指通信设备在传输数据之前应该建立连接,传输数据后应该关闭连接。 | UDP 是面向数据报的协议。这是因为没有用于打开连接、维护连接和终止连接的开销。UDP 对于广播和多播类型的网络传输是有效的。 |
TCP 是可靠的,因为它保证将数据传送到目标路由器。 | UDP 无法保证将数据传送到目的地。 |
TCP 提供了广泛的错误检查机制。这是因为它提供了数据流控制和确认。 | UDP 只有使用校验和的基本错误检查机制。 |
存在确认段。 | 没有确认段。 |
数据排序是传输控制协议 (TCP) 的一个特性。这意味着数据包按顺序到达接收器。 | UDP 中没有数据排序。如果需要订单,则必须由应用层管理。 |
TCP 相对来说比 UDP 慢。 | UDP 比 TCP 更快、更简单、更高效。 |
丢失数据包的重传在 TCP 中是可能的,但在 UDP 中是不可能的。 | 用户数据报协议 (UDP) 中没有丢失数据包的重传。 |
TCP 有一个 (20-60) 字节的可变长度标头。 | UDP 有一个 8 字节的固定长度的报头。 |
TCP 是重量级的。 | UDP 是轻量级的。 |
使用握手,例如 SYN、ACK、SYN-ACK | 这是一个无连接协议,即没有握手 |
TCP 不支持广播。 | UDP 支持广播。 |
TCP 被 HTTP、HTTPs、FTP、SMTP 和 Telnet 使用。 | UDP 被 DNS、DHCP、TFTP、SNMP、RIP 和 VoIP 使用。 |
丢失数据包的重传在 TCP 中是可能的,但在 UDP 中是不可能的。 | 用户数据报协议 (UDP) 中没有丢失数据包的重传。 |
TCP 有一个 (20-60) 字节的可变长度标头。 | UDP 有一个 8 字节的固定长度的报头。 |
TCP 是重量级的。 | UDP 是轻量级的。 |
使用握手,例如 SYN、ACK、SYN-ACK | 这是一个无连接协议,即没有握手 |
TCP 不支持广播。 | UDP 支持广播。 |
TCP 被 HTTP、HTTPs、FTP、SMTP 和 Telnet 使用。 | UDP 被 DNS、DHCP、TFTP、SNMP、RIP 和 VoIP 使用。 |
4、网卡绑定bond0的实现
[root@localhost network-scripts]# nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup
Connection 'mybond0' (79001b0d-8130-4614-ae76-4273c3077f56) successfully added.
[root@localhost network-scripts]# 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: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:75:7e:aa brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:75:7e:b4 brd ff:ff:ff:ff:ff:ff
inet 172.18.102.4/23 brd 172.18.103.255 scope global noprefixroute dynamic ens37
valid_lft 5441350sec preferred_lft 5441350sec
inet6 fe80::6678:68b3:519c:2871/64 scope link noprefixroute
valid_lft forever preferred_lft forever
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:75:7e:aa brd ff:ff:ff:ff:ff:ff
inet 172.18.102.3/23 brd 172.18.103.255 scope global noprefixroute dynamic bond0
valid_lft 5442847sec preferred_lft 5442847sec
inet6 fe80::7468:40c:7536:3d34/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost network-scripts]# nmcli con add type bond-slave ifname ens33 master bond0
Connection 'bond-slave-ens33-1' (bd97633d-774c-442f-97cd-ada1ba2f7f3e) successfully added.
[root@localhost network-scripts]# nmcli con add type bond-slave ifname ens37 master bond0
Connection 'bond-slave-ens37-1' (da8a8d5a-79b7-48a7-aff1-78c0cfc488e1) successfully added.
[root@localhost network-scripts]# ls
ifcfg-bond-slave-ens33-1 ifdown-ippp ifdown-sit ifup-bnep ifup-plusb ifup-TeamPort
ifcfg-bond-slave-ens37-1 ifdown-ipv6 ifdown-Team ifup-eth ifup-post ifup-tunnel
ifcfg-mybond0 ifdown-isdn ifdown-TeamPort ifup-ippp ifup-ppp ifup-wireless
ifdown ifdown-post ifdown-tunnel ifup-ipv6 ifup-routes init.ipv6-global
ifdown-bnep ifdown-ppp ifup ifup-isdn ifup-sit network-functions
ifdown-eth ifdown-routes ifup-aliases ifup-plip ifup-Team network-functions-ipv6
[root@localhost network-scripts]# nmcli con up bond-slave-ens33-1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
[root@localhost network-scripts]# ^C
[root@localhost network-scripts]# nmcli con up bond-slave-ens37-1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@localhost network-scripts]# nmcli con up mybond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
[root@localhost network-scripts]# 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: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:75:7e:aa brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:75:7e:aa brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:75:7e:aa brd ff:ff:ff:ff:ff:ff
inet 172.18.102.3/23 brd 172.18.103.255 scope global noprefixroute dynamic bond0
valid_lft 5443193sec preferred_lft 5443193sec
inet6 fe80::6c29:a726:344e:3a4c/64 scope link noprefixroute
valid_lft forever preferred_lft forever