云计算 3月14号 (TCP三次握手和四次挥手)

1.TCP三次握手和四次挥手

1.TCP的传输过程:

复制代码
Seq   序列号   保障传输过程可靠。
ACK   (确认消息)
SYN   (在建立TCP连接的时候使用)
FIN   (在关闭TCP连接的时候使用)

3.TCP建立连接的过程:

三次握手

复制代码
1.)发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。
2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。
3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。
===================================
通俗的说法
1)Client:嘿,李四,是我,听到了吗?
2)Server:我听到了,你能听到我的吗?
3)Client:好的,我们互相都能听到对方的话,我们的通信可以开始了。

四次挥手

复制代码
原理:
 1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送。
 2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1
 3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送.
 4)第四次挥手:Client收到FIN后,接着发送一个ACK给Server,确认序号为收到序号+1.
======================
通俗的说法
1)Client:我所有东西都说完了
2)Server:我已经全部听到了,但是等等我,我还没说完
3)Server:好了,我已经说完了
4)Client:好的,那我们的通信结束
2.IP组成
复制代码
认识IP地址
IP地址是指互联网协议地址,IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。每个ip地址由两部分组成网络地址(NetID)和主机地址(HostID).网络地址表示其属于互联网中的哪一个网络,而主机地址则表示其属于该网络中的哪一台主机.
​
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”,在将2进制转换为十进制。IP地址通常用“点分十进制”表示的形式,其中都是十进制整数。
​
例如:
      192   .    168   .   223   .   3    /24
   11000000   10101000  11011111  00000011

进制转换

复制代码
一:十进制转换为二进制
        十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。        
(IP地址里面一共是32位,通常被分割为4个“8位二进制数”--将这8位列出来,2^0次方开始算,能用到的数落1不能用到的为0)
​
 
128  64  32  16  8  4  2  1 =255
​
  192     .    168   .   223   .    0     /24
11000000       10101000  11011111  00000000
​
128 64 32 16 8 4 2 1
​
   172    .    0   .    186    .     0     /24
10101100    00000000   10111010    00000000
​
二、二进制转十进制
​
128 64 32 16 8 4 2 1
​
 10.50.4.3
00001010.00110010.00000100.00000011
​
10101100.00000000.10111010.00000000
  172.0.186.0

IP分类

复制代码
公网ip地址--->合法的IP地址,可以在互联网上访问
===========================
A类:0.0.0.0 - 127.255.255.255/8   0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试回环用的。127.0.0.1,通常被称为本地回环地址。
B类:128.0.0.0 - 191.255.255.255/16
C类:192.0.0.0 - 223.255.255.255/24   目前我们用的ip地址
D类:范围从224-239,D类IP地址目前这一类地址用来一次寻址一组计算机。224.0.0.0-239.255.255.255 组播地址
E类:范围从240-254,为将来使用保留。 
​
全零(“0.0.0.0”)地址对应于当前主机。IP地址(“255.255.255.255”)是当前子网的广播地址。
私有地址

所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址

在A类地址中,10.0.0.0到10.255.255.255是私有地址

在B类地址中,172.16.0.0到172.31.255.255是私有地址。

在C类地址中,192.168.0.0到192.168.255.255是私有地址。

IP地址的组成

复制代码
子网掩码:用于区分IP地址中的网络部分和主机部分.计算子网掩码:网络位全1,主机位全0
网络部分(网络位):直接决定了可以分配的网络数
主机部分(主机位):则决定了网络中最大的主机数 计算方法:2^主机号位数-2
网络地址:用来表示一个网络。主机位取值全部为0,例如:192.168.1.0/24
复制代码
广播地址:用于在一个网络内一对所有的通信。主机部分全部换成1。
​
128   64   32    16    8    4   2    1
​
192.168.62.138/24
255.255.255.0  ---子网掩码地址
11000000.10101000.00111110.10001010 (主机位?2^8-2=254)
11000000.10101000.00111110.00000000 网络地址    192.168.62.0/24
11000000.10101000.00111110.11111111 广播地址    192.168.62.255
可用的主机范围从--->192.168.62.1-192.168.62.254
​
192.168.62.138/16-----255.255.0.0
11000000.10101000.00111110.10001010 
11000000.10101000.00000000.00000000 网络地址    192.168.0.0/16
11000000.10101000.11111111.11111111 广播地址    192.168.255.255
可用的主机范围是2^16-2
3.VLSM(可变长子网掩码Variable Length Subnet Mask)

VLSM(可变长子网掩码Variable Length Subnet Mask) 最有效的利用现有地址空间。

复制代码
子网掩码:用于区分IP地址中的网络部分和主机部分。点分十进制(网络位全部为1)
​
128   64   32    16    8    4   2   1
​
10.1.12.133/24-255.255.255.0
00001010.00000001.00001100.10000101  →0000000-->网络地址是将主机位变为0=10.1.12.0/24
广播地址将主机位10000101→1111111 --->广播地址=10.1.12.255
掩码将网络位全部为1---->255.255.255.0                                          
===========================================================
10.1.12.1/24  ---计算掩码
00001010.00000001.00001100.00000001
11111111.11111111.11111111.00000000=255.255.255.0
=================================================================
复制代码
子网划分:
a.这个被选用的子网可以产生多少的子网?   2的x次方=?   x表示借的主机位
b.这个子网中又会有多少个合法的主机号?   2的y次方-2=? y表示主机位
c.每个子网的广播地址是什么?           这个子网中最后一个IP地址
​
假如有120台电脑分配地址--主机位?
​
192.168.1.0/24        11000000.10101000.00000001.00000000
​
128 64 32 16 8 4 2 1 
  
例如:计算主机位?2的多少次方-2大于等于120?--2^7次方-2=126
192.162.1.0/25        11000000.10101000.00000001.0    0000000 #1/0两个子网---(0,1)
​
当为0时:192.168.1.0/25 ---网络地址
192.168.1.127---广播
可用主机范围2^7-2=有126个
192.168.1.1-192.168.1.126
​
当为1时:192.168.1.128/25 ---网络地址
192.168.1.255---广播
可用主机范围有126个
192.168.1.129-192.168.1.254
                                          
30台--主机位?2的多少次方-2大于等于30?--2^5-2=30 
11000000.10101000.00000001.000    00000  借走的子网【000、001、010、100、111、110、101、011】
192.168.1.0/27
255.255.255.224 子网掩码
网络位192.168.1.0---192.168.1.31--广播
可用主机范围:192.168.1.1---192.168.1.30
​
11000000.10101000.00000001.001   00000
192.168.1.0/27
网络地址--192.168.1.32----192.168.1.63---广播地址
可用主机范围:192.168.1.33---192.168.1.62
​
128 64 32 16 8 4 2 1
4.虚拟局域网

虚拟局域网

复制代码
vlan作用:把一个大的局域网隔离成多个虚拟子网。
如果广播数量过大会占用带宽,降低设备的性能,如何解决?
通过二层交换机使用vlan隔离广播,减小广播域范围。
优点:
1.有效控制广播域范围
2.增强局域网的安全性
复制代码
trunk作用:让不同交换机端口能够传送vlan数据

练习题

复制代码
1.将下面的十进制转换为二进制
172.14.23.4
192.168.33.45
2.将二进制转换为十进制
00001010.00000001.00000001.00010100
11000000.10101000.00010100.01010100
Linux网络管理
复制代码
天行健,君子以自强不息。地势坤,君子以厚德载物。
1.网络管理概念
复制代码
网络接口和名称 :网卡
ip地址
网关
主机名称
路由
2.管理工具
复制代码
net-tools:     #安装包
ifconfig  netstat  准备要废掉了。
​
iproute:    #安装包
ip  #提供ip命令
3.认识网卡
复制代码
lo网卡 :本地回环网卡,本机上的服务自己访问自己时用的
#网卡里面信息
ip 地址
子网掩码
广播地址
mac地址

查看网卡

复制代码
[root@linux-server ~]# ip a   #方式一
[root@linux-server ~]# ifconfig  #方式二

临时设置ip

方式如下

复制代码
[root@linux-server ~]# ip a a 192.168.246.161/24 dev ens33

删除设置的临时ip

复制代码
[root@linux-server ~]# ip a d 192.168.246.161/24 dev ens33
​
add------添加
del------删除

启动关闭网卡

复制代码
启动:
#ifconfig 网卡名  up  #方式一
#ifup  网卡名  #方式二
复制代码
关闭网卡            
# ifconfig 网卡名 down  #方式一
# ifdown 网卡名   #方式二
4.网关
复制代码
网关:网络的关卡:是为了访问其他网络。
静态路由和动态路由

路由器在转发数据时,需要先在路由表中查找相应的路由,有三种途径

(1)直连路由:路由器自动添加和自己直连的路由

(2)静态路由:管理员手动添加的路由

(3)动态路由:由路由协议动态建立的路由

静态路由

缺点 不能动态的反映网络拓扑,当网络发生变化的时候,管理员必须手动的改变路由

优点 不会占用路由器太多的cpu和RAM资源,也不会占用太多带宽。

默认路由

(1) 实际上默认路由是一种特殊的静态路由,指的是当 路由表中与包的目的地址之间没有匹配的表项时,路由器能够做出选择。如果没有默认路由,那么目的地址在路由表中没有匹配表项的包将被丢弃。

(2)默认路由(Default route),如果IP数据包中的目的地址找不到存在的其它路由时,路由器会默认的选择的路由。

默认路由为0.0.0.0

动态路由

动态路由是与静态路由相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。

Linux路由操作
复制代码
查看路由表:
[root@linux-server ~]# ip r #r:route。查看路由和网关
default via 192.168.246.2 dev ens33 proto static metric 100 
192.168.246.0/24 dev ens33 proto kernel scope link src 192.168.246.160 metric 100
​
#via:通过的意思,相当于下一跳

添加静态路由删除静态路由

复制代码
[root@linux-server ~]# ip r add 192.168.223.0/24 via 192.168.246.2  #添加路由
[root@linux-server ~]# ip r del 192.168.223.0/24 #删除路由
#via  表示通过的意思,下一跳
5.设置永久静态ip
复制代码
[root@linux-server ~]# cd /etc/sysconfig/network-scripts/  #网卡配置文件存放路径
[root@linux-server network-scripts]# cp ifcfg-ens33 ifcfg-ens33.bak #将源文件备份
[root@linux-server network-scripts]# vi ifcfg-ens33 #编辑网卡配置文件
TYPE="Ethernet"         #网络类型:以太网类型
PROXY_METHOD="none"   
BROWSER_ONLY="no"
BOOTPROTO="static"    #默认值none或static 这两种属于静态获取ip地址,dhcp自动获取ip
IPADDR=192.168.246.134 #设置静态ip地址
GATEWAY=192.168.246.2 #设置网关,nat模式网关是2,桥接为1.
NETMASK=255.255.255.0  #设置掩码或者
#PREFIX=24
DEFROUTE="yes"  #是否设置默认路由,yes表示该配置
NAME="ens33"    #网卡名称,可以不存在
DEVICE="ens33"   #设备名称
ONBOOT="yes"    #开机启动
DNS1=114.114.114.114 #dns全国通用地址,dns最多可以设置三个
DNS2=8.8.8.8 #谷歌的dns
DNS3=202.106.0.20 #北京的DNS。
[root@linux-server ~]# cd /etc/sysconfig/network-scripts/  #网卡配置文件存放路径
[root@linux-server network-scripts]# cp ifcfg-ens33 ifcfg-ens33.bak #将源文件备份
[root@linux-server network-scripts]# vi ifcfg-ens33 #编辑网卡配置文件
TYPE="Ethernet"         #网络类型:以太网类型
PROXY_METHOD="none"   
BROWSER_ONLY="no"
BOOTPROTO="static"    #默认值none或static 这两种属于静态获取ip地址,dhcp自动获取ip
IPADDR=192.168.246.134 #设置静态ip地址
GATEWAY=192.168.246.2 #设置网关,nat模式网关是2,桥接为1.
NETMASK=255.255.255.0  #设置掩码或者
#PREFIX=24
DEFROUTE="yes"  #是否设置默认路由,yes表示该配置
NAME="ens33"    #网卡名称,可以不存在
DEVICE="ens33"   #设备名称
ONBOOT="yes"    #开机启动
DNS1=114.114.114.114 #dns全国通用地址,dns最多可以设置三个
DNS2=8.8.8.8 #谷歌的dns
DNS3=202.106.0.20 #北京的DNS。

重启网络---修改完配置文件一定要重启网络
# systemctl restart network   #rhel7
# /etc/init.d/network restart  红帽5、6里面的。
复制代码
重启网络---修改完配置文件一定要重启网络
# systemctl restart network   #rhel7
# /etc/init.d/network restart  红帽5、6里面的。

编辑DNS配置文件设置DNS

复制代码
[root@linux-server ~]# vi /etc/resolv.conf   #添加如下内容
nameserver 114.114.114.114    #指定dns地址

设置动态ip

[root@linux-server ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"   #只需要将这里修改为dhcp。
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
​
重启网络
[root@linux-server ~]# systemctl restart network
6.查看mac地址
复制代码
[root@soso666 ~]# ifconfig
arp协议:地址解析协议。
​
查看某个IP的MAC地址
[root@soso666 ~]# arping -I ens33 192.168.246.135  #要查看的ip地址
-I:指定使用那快网卡ping
7.开启路由转发
复制代码
临时设置
[root@linux-server ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #默认是零,没有开路由。1表示开启
永久设置 
# vim  /etc/sysctl.conf---添加如下内容
net.ipv4.ip_forward = 1
# sysctl  -p    #立即生效
8.修改主机名
方式一
[root@linux-server ~]# hostname #查看主机名
[root@linux-server ~]# hostnamectl set-hostname linux-server  #主机名
方式二
[root@linux-server ~]# vi /etc/hostname   ---编辑配置文件
soso666
[root@linux-server ~]# reboot 
[root@soso666 ~]#
9.配置本地解析
复制代码
写法:ip   主机名
[root@soso666 ~]# vi /etc/hosts    ---添加如下内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.130 soso666 soso   #添加解析

10.修改网卡

将CentOS7修改网卡为eth0

复制代码
1.修改网卡配置文件
[root@linux-server ~]# cd /etc/sysconfig/network-scripts/
[root@linux-server network-scripts]# mv ifcfg-ens33 ifcfg-eth0  #改名
[root@linux-server network-scripts]# vim ifcfg-eth0  #只需要修改配置文件中的名称
NAME="eth0"
DEVICE="eth0"
2.GRUB添加kernel参数
[root@linux-server ~]# vim /etc/sysconfig/grub   #在文件中最后一行添加
GRUB_CMDLINE_LINUX="...... net.ifnames=0" #告诉系统关闭原来命名功能
3.执行命令生效---#加载配置文件
[root@linux-server ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
4.重启机器
1.修改网卡配置文件
[root@linux-server ~]# cd /etc/sysconfig/network-scripts/
[root@linux-server network-scripts]# mv ifcfg-ens33 ifcfg-eth0  #改名
[root@linux-server network-scripts]# vim ifcfg-eth0  #只需要修改配置文件中的名称
NAME="eth0"
DEVICE="eth0"
2.GRUB添加kernel参数
[root@linux-server ~]# vim /etc/sysconfig/grub   #在文件中最后一行添加
GRUB_CMDLINE_LINUX="...... net.ifnames=0" #告诉系统关闭原来命名功能
3.执行命令生效---#加载配置文件
[root@linux-server ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
4.重启机器
 # reboot
[root@linux-server ~]# cd /etc/sysconfig/network-scripts/
复制代码
tcpdump抓包
复制代码
大鹏一日同风起,扶摇直上九万里。

tcpdump是一款强大的网络抓包工具,运行在Linux平台上。熟悉tcpdump的使用能够帮助我们分析、调试网络数据。

在实际工作中,需要以root权限去执行该命令。

一、常用命令选项

复制代码
-i #指定监听网络接口
-nn #进行ip和端口名称的转换,一个n不要ip解析到域名,将协议转换为端口
-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕
-r #从指定的文件中读取数据,一般是-w保存的文件
-v #输出稍微详细的信息
-vv#输出详细的报文信息

二、安装tcpdump工具

复制代码
[root@tcpdump-server ~]# yum install -y tcpdump

实验环境

复制代码
1.准备两台机器
192.168.80.128 ----tcpdump-server
192.168.80.129 ----test-server
2.两台机器均关闭防火墙和selinux

六个标记

复制代码
SYN(synchronous建立联机) 
ACK(acknowledgement 确认) 用.表示
PSH(push传送)
FIN(finish结束) 
RST(reset重置) 
URG(urgent紧急)
==========
Sequence number(顺序号码)

监听网卡端口为80的应用发出和接收的所有http协议包

复制代码
[root@tcpdump-server ~]# tcpdump -i ens33  port 80 -vv -nn
[root@test-server ~]# curl http://192.168.80.128   #测试

监视ens33网卡上源地址192.168.80.129的所有网络包

复制代码
[root@tcpdump-server ~]# tcpdump -i ens33 src 192.168.80.129
[root@test-server ~]# ssh 192.168.80.128 #测试

监视ens33网卡上目的地址是192.168.80.129的所有网络包

复制代码
[root@tcpdump-server ~]# tcpdump -i ens33 dst 192.168.80.129

两台机器同时操作

复制代码
[root@tcpdump-server ~]# ip a  #查看自己网卡
#抓来自192.168.80.129这台机器的imcp协议的包
复制代码
[root@test-server ~]# ping -c 1 192.168.80.128 #ping tcpdump的机器一次
PING 192.168.80.128 (192.168.80.128) 56(84) bytes of data.
64 bytes from 192.168.80.128: icmp_seq=1 ttl=64 time=0.751 ms
​
--- 192.168.80.128 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.751/0.751/0.751/0.000 ms
复制代码
[root@tcpdump-server ~]# tcpdump -i ens33 icmp -vv -nn
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
00:55:58.756161 IP (tos 0x0, ttl 64, id 33221, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.80.129 > 192.168.80.128: ICMP echo request, id 1139, seq 1, length 64
00:55:58.756254 IP (tos 0x0, ttl 64, id 11681, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.80.128 > 192.168.80.129: ICMP echo reply, id 1139, seq 1, length 64
​
echo request :请求包
echo reply:回复包

实验二抓一个tcp的包--全部在文本模式下操作

复制代码
[root@tcpdump-server ~]# yum install -y epel*
[root@tcpdump-server ~]# yum install -y nginx
[root@tcpdump-server ~]# systemctl start nginx
复制代码
[root@test-server ~]# curl -I http://192.168.80.128/  #测试访问
复制代码
[root@tcpdump-server ~]# tcpdump -i ens33 tcp -vv -nn -w tcp.txt  #抓包tcp--在文本模式下
​
#测试
[root@test-server ~]# curl -I http://192.168.80.128/  --访问
复制代码
[root@tcpdump-server ~]# ls
anaconda-ks.cfg  tcp.txt   ---抓包生成的文件,不能用vim查看
[root@tcpdump-server ~]# tcpdump -r tcp.txt  #读生成的文件
复制代码
[root@tcpdump-server ~]# tcpdump -i ens33 tcp -vv -nn
[root@test-server ~]# curl -I http://192.168.80.128/  --访问,文本模式下

按shift键加pu键可以上翻。pd键可以下翻

=======导入wireshark

1.需要重新抓包一次并保存。

复制代码
[root@tcpdump-server ~]# rm -rf tcp.txt #将原来的删除
复制代码
[root@linux-server ~]# curl -I http://192.168.80.120
复制代码
2.用客户端工具连接tcpdump-server的机器将产生的文件导入wireshark中
[root@tcpdump-server ~]# ls
tcp.txt
[root@tcpdump-server ~]# sz tcp.txt #下载到桌面
相关推荐
枫叶丹42 小时前
【在Linux世界中追寻伟大的One Piece】进程信号
linux·运维·服务器
网络研究院2 小时前
如何安全地大规模部署 GenAI 应用程序
网络·人工智能·安全·ai·部署·观点
limengshi1383922 小时前
通信工程学习:什么是RIP路由信息协议
网络·网络协议·学习·智能路由器·信息与通信
灯火不休ᝰ3 小时前
[win7] win7系统的下载及在虚拟机中详细安装过程(附有下载文件)
linux·运维·服务器
数云界6 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
limengshi1383926 小时前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
叫我龙翔8 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·计算机网络
麻辣韭菜8 小时前
网络基础 【HTTP】
网络·c++·http
S hh9 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
萧鼎10 小时前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python