一、简述osi七层模型和TCP/IP五层模型
OSI七层模型:
第七层:应用层
第六层:表示层
第五层:会话层
第四层:传输层
第三层:网络层
第二层:数据链路层
第一层:物理层
TCP/IP五层协议:
第五层:应用层
第四层:传输层
第三层:互联网层
第二层:数据链路层
第一层:物理层
二、总结描述TCP三次握手四次挥手
三次握手的过程:
四次挥手的过程:
三、描述TCP和UDP区别
1)基于连接vs无连接
TCP是面向连接的协议,而UDP是无连接的协议。
2)可靠性 不同
TCP提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的。如果消息在传输过程中丢失,那么它将重发,这是由TCP协议本身控制的。另一方面,UDP是不可靠的,它不提供任何交付的保证。一个数据报包在运输途中可能会丢失。这就是为什么UDP是不适合保证交付的项目。
3)有序性
TCP保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。UDP不提供任何有序性或序列性的保证。数据包将以任何可能的顺序到达。这就是为什么TCP是适合需要顺序交付方式的应用,尽管有基于UDP的协议通过使用序列号和重传来提供有序和可靠性的应用
4)速度
TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,他需要做比UDP多的多的事。这就是为什么UDP更适用于对速度比较敏感的应用,例如:在线视频媒体,电视广播和多人在线游戏。
5)头大小
TCP具有比UDP更大的头。一个TCP数据包报头的大小是20字节,每行32位,5行。UDP数据报报头是8个字节,每行32位,2行。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。而UDP报头只包含长度,源端口号,目的端口,和校验口。
UDP报头
6)拥塞或流控制
TCP有流量控制。在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。另一方面,UDP不能进行流量控制。
四、网卡绑定bond0的实现
五、ubuntu简介及系统安装
ubuntu简介:
Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity。从前人们认为Linux难以安装、难以使用,在Ubuntu出现后这些都成为了历史。Ubuntu也拥有庞大的社区力量,用户可以方便地从社区获得帮助。
ubuntu特点:
Ubuntu在桌面办公、服务器方面有着不俗的表现,总能够将最新的应用特性囊括其中,主要包括以下几方面:
1、桌面系统使用最新的Gnome、KDE、Xfce等桌面环境组件。
2、集成搜索工具Tracker,为用户提供方便、智能的桌面资源搜索。
3、抛弃繁琐的X桌面配置流程,可以轻松使用图形化界面完成复杂的配置。
4、集成最新的Compiz稳定版本,让用户体验酷炫的3D桌面。
5、“语言选择”程序提供了常用语言支持的安装功能,让用户可以在系统安装后,方便地安装多语言支持软件包。
6、提供了全套的多媒体应用软件工具,包括处理音频、视频、图形、图像的工具。
7、集成了Libreoffice办公套件,帮助用户完成文字处理、电子表格、幻灯片播放等日常办公任务。
8、含有辅助功能,为残障人士提供辅助性服务,例如,为存在弱视力的用户提供屏显键盘,能够支持Windows NTFS分区的读/写操作,使Windows资源完全共享成为可能。
9、支持蓝牙(Bluetooth)输入设备,如蓝牙鼠标、蓝牙键盘。
10、拥有成熟的网络应用工具,从网络配置工具到Firefox网页浏览器、Gaim即时聊天工具、电子邮件工具、BT下载工具等。
11、加入更多的打印机驱动,包括对HP的一体机(打印机、扫描仪集成)的支持。
12、进一步加强系统对笔记本电脑的支持,包括系统热键以及更多型号笔记本电脑的休眠与唤醒功能。
13、与著名的开源软件项目LTSP合作,内置了Linux终端服务器功能,提供对以瘦客户机作为图形终端的支持,大大提高老式PC机的利用率。
14、Ubuntu 20.04 LTS提供对配备指纹识别功能笔记本的支持。可录制指纹和进行登陆认证。
Ubuntu安装:
六、ubuntuserver使用
基础概要:
一些Linux的基础操作已经在我以前写的Linux基础概要一书中有阐述,本篇文章只列出和服务器相关的常用操作。
远程连接:
Ubuntu Server自14.04版本以后默认禁止root远程登录,但是阿里云等镜像会定制这个配置,允许root远程登录。如果需要开启root ssh的话,修改/etc/ssh/sshd_config配置文件重启ssh即可。相关的配置已经在之前的文章提到过:https://www.jianshu.com/p/967e3a04a6c7
软件管理:
我维护服务器的原则是各种手段杜绝直接编译安装,以包管理部署为尊。因此能不编译的都不编译,我采用的部署优先级如下:
软件开发商的官方仓库(比如nginx、postgresql、docker等)
软件开发商的PPA仓库(基本等同于软件开发商官方仓库对待,如timescaledb, ansible等等)
Ubuntu官方仓库(如Apache, OpenJDK, tomcat等等)
社区维护方的PPA仓库(如redis, oracle-java等)
官方直接release的二进制包+其他第三方的部署脚本
编译安装:
原则上,软件开发方有官方仓库或者官方PPA仓库的,优先考虑,因为可选版本较多,漏洞修补更加及时,并且契合官方文档。Ubuntu官方仓库相对版本较低,但是通常稳定性较好,安装部署也比较方便,如无必要追新也可以考虑。没有软件仓库部署的情况下,也应该优先考虑使用官方或社区方编译好的release版本。最后都没有再考虑自行编译安装。编译环境也可以在本机搭建(同版本的Ubuntu),编译好以后打包编译好的二进制包上传到服务器上部署。
对于软件仓库的管理,我的规则是:
Ubuntu官方仓库配置在/etc/apt/sources.list
对于非Ubuntu官方仓库,统一放在/etc/apt/sources.list.d/xxx.list(ppa也是这个规范)