网络和进程管理

网络协议介绍

 

功能与代表设备

分层 名字 功能 工作在该层的设备
7 应用层 提供用户界面 QQ,IE 。应用程序
6 表示层 表示数据,进行加密等处理
5 会话层 将不同应用程序的数据分离
4 传输层 提供可靠或不可靠的传输,在重传前执行纠错 防火墙
3 网络层 提供逻辑地址,路由器使用它们来选择路径 三层交换机、路由器
2 数据链路层 将分组拆分为字节,并讲字节组合成帧,使用MAC地址提供介质访问,执行错误检测,但不纠错 二层交换机,网卡
1 物理层 在设备之间传输比特,指定电平,电缆速度和电缆针脚 集线器

Linux防火墙有哪几种?

iptables

firewalld

selinux

常见网络相关的协议

 

DNS:域名解析协议 www.baidu.com

SNMP(Simple Network Management Protocol)网络管理协议

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,它是在TCP/IP网络上使客户机获得配置信息的协议

FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。

TFTP(Trivial File Transfer Protocol):小文件传输协议

HTTP(Hypertext Transfer Protocol ):超文本传输协议

HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作.

ICMP(Internet Control Message Protocol):Internet控制信息协议,互联网控制报文协议

ping  ip定义消息类型有:TTL超时、地址的请求与应答、信息的请求与应答、目的地不可到达

SMTP(Simple Mail Transfer Protocol):简单邮件传送协议

TELNET Protocol:虚拟终端协议

UDP(User Datagram Protocol):用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议

TCP(Transmission Control Protocol):传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议  log转发:开启一个协议:tcp(三次握手和四次挥手)

TELNET验证:首先在控制面板中勾选TELNET

格式: telnet    IP地址    端口

TCP协议和UDP协议的区别

(1)TCP协议:TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立可靠的连接。

(2)UDP协议:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

总结:TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。所以传输速度可更快
4.TCP保证数据正确性,UDP可能丢包;TCP保证数据顺序,UDP不保证。

1)TCP 端口分配

21 ftp 文件传输服务
22 ssh 安全远程连接服务
23 telnet 远程连接服务
25 smtp 电子邮件服务
53 DNS 域名解析服务,有tcp53也有用udp53端口传输
80 http web服务
443 https 安全web服务

 

三次握手和四次挥手

 

三次握手

首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-SENT——B同步收到状态SYN-RCVD——A、B连接已建立状态ESTABLISHED

B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。若有,则作出响应

1)第一次握手:A的TCP客户进程也是首先创建传输控制块TCB,然后向B发出连接请求报文段,(首部的同步位SYN=1初始序号seq=x),(SYN=1的报文段不能携带数据)但要消耗掉一个序号,此时TCP客户进程进入SYN-SENT(同步已发送)状态。

2)第二次握手:B收到连接请求报文段后,如同意建立连接,则向A发送确认,在确认报文段中(SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y),测试TCP服务器进程进入SYN-RCVD(同步收到)状态;

3)第三次握手:TCP客户进程收到B的确认后,要向B给出确认报文段(ACK=1,确认号ack=y+1,序号seq=x+1)(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。TCP连接已经建立,A进入ESTABLISHED(已建立连接)。

当B收到A的确认后,也进入ESTABLISHED状态。

四次挥手

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我Client端没有数据要发给你了”,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,”告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,”告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,”就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,”就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

linux网络相关的调试命令

一、桥接模式:配置桥接模式的虚拟机作为独立计算机存在

           1. 该模式下的虚拟机可以上外网

           2. 局域网之内的主机可以访问该虚拟机 (做共享服务器使用)

           3. 该虚拟机可以和宿主机进行通信

           4. 同一台主机相同模式下的虚拟机可以互相通信

           5. 桥接模式下的虚拟机获得IP地址或者自己设置的IP地址需要和宿主机的以太网保持同一网段

            缺陷:如果你的虚拟机设置成桥接模式,需要和宿主机的网段保持一致,这样就造成了一个问题,宿主机的网段在不同网段之下是不断变化的,所以需要实时的更改

二、nat模式:配置nat模式的虚拟机使用本机IP地址(地址转化)

 

             1. 该模式下的虚拟机可以上外网

             2. 局域网之内的主机不可以访问该虚拟机

             3. 该虚拟机可以和宿主机进行通信

             4. 同一台主机相同模式下的虚拟机可以互相通信

             5. nat模式下的虚拟机获得IP地址或者自己设置的IP地址需要和宿主机的Vmnet8保持同一网段

           

 


三、仅主机模式

           

               1. 该模式下的虚拟机不可以上外网

               2. 局域网之内的主机不可以访问该虚拟机

               3. 该虚拟机可以和宿主机进行通信

               4. 同一台主机相同模式下的虚拟机可以互相通信

               5. 仅主机模式下的虚拟机获得IP地址或者自己设置的IP地址需要和宿主机的Vmnet1保持同一网段

 

配置文件:vim /etc/sysconfig/network-scripts/ifcfg-eth0

动态配置必须项:

DEVICE="eth0"

ONBOOT=yes

BOOTPROTO=dhcp

TYPE=Ethernet

动态配置必须项:

DEVICE=“eth0”

ONBOOT=yes

BOOTPROTO=static

TYPE=Ethernet

IPADDR=192.168.239.5

NETMASK=255.255.255.0

GATEWAY=192.168.239.2

DNS1=8.8.8.8

DNS2=114.114.114.114

网卡配置完成后需要重新启动网络

systemctl restart network

 PC的IP地址

查看端口

ss

查看端口监听状态

ss 命令

常用选项:

-t: 显示tcp链接

-n: 以数字形式显示当前链接的端口

-l: 只显示监听的

-a:显示全部

-p: 显示PID

常用组合:ss -tnl

 

 xshell连接虚拟机

1. 关掉防火墙

setenforce 0 #临时关闭selinux

systemctl stop firewalld #立刻关掉firewalld

systemctl disable firewalld  #firewalld开机不自启

 

永久关闭selinux

vim /etc/sysconfig/selinux

在SELINUX=enforcing行把enforcing改为disable

 

2. 查看虚拟机IP

ip a 或者ip address show

 

3. 连接xshell,输入虚拟机IP,输入虚拟机用户密码,连接。

 进程管理

 

程序:二进制文件,静态 /bin/date,/usr/sbin/sshd 
进程:是程序运行的过程,动态,有生命周期及运行状态。

 

下图所示的是进程的生命周期:

 

描述如下:

父进程复制自己的地址空间(fork  [fɔ:k] 分叉)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。

centos5或6PID为1的进程是: init

centos7 PID为1的进程是:     systemd

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。

进程的属性

 

进程ID(PID):是唯一的数值,用来区分进程

进程状态:状态分为运行R、休眠S、僵尸Z

使用ps查看进程工具

 

1、ps查看进程工具

例1:常用的参数:

a: 显示跟当前终端关联的所有进程

u: 基于用户的格式显示(U: 显示某用户ID所有的进程)

x: 显示所有进程,不以终端机来区分

 

[root@ken ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125356  3876 ?        Ss   15:43   0:02 /usr/lib/systemd/systemd --switched-root --system --
root          2  0.0  0.0      0     0 ?        S    15:43   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    15:43   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   15:43   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    15:43   0:00 [migration/0]

 

注:最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。没有括起来的是用户态进程。

上面的参数输出每列含意:

USER: 启动这些进程的用户

PID: 进程的ID

%CPU 进程占用的CPU百分比; 
%MEM 占用内存的百分比;

VSZ:进程占用的虚拟内存大小(单位:KB) 
RSS:进程占用的物理内存大小(单位:KB)

STAT:该程序目前的状态,Linux进程有5种基本状态:

R :该程序目前正在运作,或者是可被运作;

S :该程序目前正在睡眠当中,但可被某些讯号(signal) 唤醒。

T :该程序目前正在侦测或者是停止了;

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

D  不可中断状态.

5个基本状态后,还可以加一些字母,比如:Ss、R+,如下图:

 

它们含意如下::

<: 表示进程运行在高优先级上

N: 表示进程运行在低优先级上

L: 表示进程有页面锁定在内存中

s: 表示进程是控制进程

l: 表示进程是多线程的

+: 表示当前进程运行在前台

START:该 process 被触发启动的时间;

TIME :该 process 实际使用 CPU 运作的时间。

COMMAND:该程序的实际指令

 

关掉httpd

方法一、systemctl stop httpd

方法二、kill -9 pid

方法三、pkill httpd

查看系统负载用top和uptime

系统负载越低越好

查看端口及占用的进程名

1. ss -tnl

2. lsof -i :端口

 

posted on 2019-05-16 16:21  师兄你好  阅读(130)  评论(0编辑  收藏  举报

导航