一、环境准备,软件包
-
ensp(先装下面三个)
-
virtualbox
-
winpcap
-
wireshark
二、数据通信的原理
从个方面说:
(1)IP地址:
(2)路由技术:
(3)DNS域名系统
1、IP地址
1)、IP的基本认识
IP 在 TCP/IP 参考模型中处于第三层
1️⃣:应用层,是一些协议(如:ftp文件传输,ssh远程登录,http网络请求)
2️⃣:传输层,tcp,udp协议(MAC地址+IP地址+端口号)他的功能就是端口到端口的通信(如:我们有了mac地址和ip地址,我们还需要一个参数,表示这个数据包到那个进程(程序使用),相比之下网络层就是建立主机到主机的通信)
3️⃣:网络层,IP协议(mac地址+IP地址)
4️⃣:网络接口层,(数据链路层+物理层)线路,无线电,光纤
2)、ip传输流程
-
计算机A主机传送表情包到计算机B,
这个数据包就像一个包裹,上面有,源ip地址,目标ip地址,下一跳ip地址,网关ip地址
数据包发送给网关路由器,路由器就会找目标的ip,然后根据路由找到下一个节点(也是一个路由,继续相同操作,直至发送到目标主机),,
3)、ip地址的格式
192.168.1.1
网络位+主机位(划分网段,方便管理)
网络位:是为了确定你属于那个网段
192.168.1.x
另一个地址是192.168.1.23,就和我在相同的网段,
172.16.1.1 不在相同网段
由什么来决定网络的长度?
由子网掩码来决定是三段还是两段(192.168.1.1 255.255.255.0 :三个255代表192.168.1是网络位,如果是两个255代表192.168.是网络位(一个网段))
主机位:
4)、DHCP作用
作用就是自动给电脑分配ip地址
4.1)、自动获取地址案例
1.给路由器配置一个ip
[Huawei]interface g 0/0/0
[Huawei-GigabitEthernet0/0/0]ip a 192.168.1.1 255.255.255.0
2.把路由器当成dhcp服务器让他去分发ip
[Huawei]dhcp enable //开启dhcp服务
[Huawei]interface g 0/0/0 //选择一个接口开通dhcp的功能
[Huawei-GigabitEthernet0/0/0]dhcp select interface //选择接口
3.pc1 pc2 pc3设置中开启dhcp配置即可,用ipconfig查看
5)、案例:配置接口ip
-
配置两台路由设备互联物理接口地址
ar2220
AR01
<Huawei>system-view ##系统视图
[Huawei]interface GigabitEthernet 0/0/0 #进入0/0/0接口
[Huawei-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 #给0/0/0配置IP地址
AR02
<Huawei>system-view ##系统视图
[Huawei]interface GigabitEthernet 0/0/0 #进入0/0/0接口
[Huawei-GigabitEthernet0/0/0]ip address 192.168.1.2 255.255.255.0 #给0/0/0配置IP地址
[Huawei-GigabitEthernet0/0/0]quit
[Huawei]ping 192.168.1.2
PING 192.168.1.2: 56 data bytes, press CTRL_C to break
Reply from 192.168.1.2: bytes=56 Sequence=1 ttl=255 time=20 ms
Reply from 192.168.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms
Reply from 192.168.1.2: bytes=56 Sequence=3 ttl=255 time=30 ms
Reply from 192.168.1.2: bytes=56 Sequence=4 ttl=255 time=20 ms
Reply from 192.168.1.2: bytes=56 Sequence=5 ttl=255 time=20 ms
--- 192.168.1.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/22/30 ms
6)、通过网址去访问(dns域名)
-
添加dns服务器
AR1
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 192.168.1.100
-
PC1
-
DNS-server
7)、网关讲解
作用:网关的作用是用于不同子网/网段之间的通信
7.1)、一个网关测试
如上图:100.100.100.100和192.168.1.200很明显不在同一网段,需要通过网关来实现通信,如何实现如下图
1、给AR1的0/0/1接口配置ip
[Huawei]int g 0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 100.100.100.1 255.255.255.0
2、给pc5配置网关,ip等信息
3、用pc2 ping pc5
PC>ping 100.100.100.100
Ping 100.100.100.100: 32 data bytes, Press Ctrl_C to break
From 100.100.100.100: bytes=32 seq=1 ttl=127 time=47 ms
From 100.100.100.100: bytes=32 seq=2 ttl=127 time=31 ms
From 100.100.100.100: bytes=32 seq=3 ttl=127 time=32 ms
From 100.100.100.100: bytes=32 seq=4 ttl=127 time=31 ms
From 100.100.100.100: bytes=32 seq=5 ttl=127 time=47 ms
路由器是如何判断该从那个口转发呢?(通过路由表)
[Huawei]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
100.100.100.0/24 Direct 0 0 D 100.100.100.1 GigabitEthernet 0/0/1
100.100.100.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/1
100.100.100.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 D 192.168.1.1 GigabitEthernet 0/0/0
192.168.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/0
192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
7.2)、多个网关
1、AR1配置
[Huawei]sysname RA
[RA]INT G0/0/0
[RA-GigabitEthernet0/0/0]ip add 192.168.1.10 255.255.255.0
[RA-GigabitEthernet0/0/0]int g 0/0/1
[RA-GigabitEthernet0/0/1]ip add 192.168.2.1 255.255.255.0
2、AR2配置
[Huawei]sysname RB
[RB]int g 0/0/0
[RB-GigabitEthernet0/0/0]ip add 192.168.2.10 255.255.255.0
[RB-GigabitEthernet0/0/0]int g 0/0/1
[RB-GigabitEthernet0/0/1]ip add 192.168.3.1 255.255.255.0
3、配置好pc端和server端的IP地址
4、配置完后发现pc端ping不通server端
原因是因为网关AR1并没有去server端的路由(查看路由)
<RA>display ip routing-table 192.168.3.10
<RA>为空值
***解决方法*******
添加一条去往AR2的静态路由
[RA]ip route-static 192.168.3.0 255.255.255.0 192.168.2.10
*********192.168.3网段的网络都去下一跳的地址192.168.2.10
查看路由表
[RA]display ip routing-table 192.168.3.10
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.3.0/24 Static 60 0 RD 192.168.2.10 GigabitEthernet
0/0/1
下一跳地址192.168.2.10
发现还是ping不通,pc端能server端但是回不来所以配置AR2到AR1的路由
5.AR2配置
[RB]dis ip routing-table 192.168.1.1
[RB]ip route-static 192.168.1.0 255.255.255.0 192.168.2.1
[RB]dis ip routing-table 192.168.1.1
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 Static 60 0 RD 192.168.2.1 GigabitEthernet
0/0/0
然后就能ping通了
PC>ping 192.168.3.10
Ping 192.168.3.10: 32 data bytes, Press Ctrl_C to break
From 192.168.3.10: bytes=32 seq=1 ttl=253 time=15 ms
2、TCP/UDP讲解
tcp/udp:都工作在传输层,用于程序之间的数据传输
两者的区别,在于连接和非链接
1)、TCP协议
tcp特点:传输可靠(不考虑时间因素)比如:一问一答
-
解决网络不可靠的连接
tcp的发起过程
-
三次握手
-
传输确认
-
四次挥手
1.1)、如何解决丢包和乱序问题?
TCP将要传输的每个字节都进行了
编号
,序号是本报文段发送的数据组的第一个
字节的编号,序号可以保证传输信息的有效性。比如:一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为401。
tcp协议中会携带序列号和长度,接收端收到数据后需要回复确认号,确认报文中的ack=序列号+长度=下一包的起始序列号。
TCP将每个字节的数据都进行了编号,即序列号:
1.2)、超时重传机制
超时重传有两种可能:数据报丢了或者ACK丢了
-
主机A给主机B发送数据之后可能因为种种原因,数据没有到达主机B
-
如果主机A在一定时间间隔内没有收到主机B发来的ACK,就会进行重发
如果是ACK丢了
主机A一直收不到主机B的ACK,就会进行重传, 那么主机B就会收到很多重复的数据,那么TCP协议需要能够识别出哪些包是重复的并且去掉,此时利用序列号和确认序号就可以达到去重的效果。
确认序号表示告诉发送方,前面的数据都已经正常接收了。比如主机A收到1001,就表示1-1000之间的数据已经成功传输。
1.3)、连接管理机制(重要,三次握手四次挥手)
正常情况下,TCP要要经过三次握手建立连接,四次挥手断开连接
上图可以这么理解: 客户端:咱建立连接吧!可好? 服务器:好啊好啊 客户端:行!
客户端和服务器开始传输数据
客户端:我这边没啥了,咱关闭连接吧 服务器:好,我看看我这边还有啥 服务器:我这边也没数据了,咱可以关闭连接了 客户端:好的
1.4)、滑动窗口
确认应答机制中,每发一次数据,都要等待一个ACK,发送方收到ACK之后,才可以发送下一个数据。这样做有一个缺点:性能差,耗时
那么可以一次发送多条数据,就会大大提高性能了。
-
窗口大小指的是无需等待确认应答就可以继续发送数据的最大值。上图的窗口大小是4000个字节
-
发送前四个段的时候,不需要等待任何ACK,直接发送
-
收到第一个ACK后,窗口向后移动,继续发送第五个段的数据
-
依次类推,窗口就像是在滑动一样向后移
-
操作系统内核为了维护这个滑动窗口,需要开辟发送缓冲区来记录当前还有哪些数据没有应答;只有确认应答过的数据,才能从缓冲区删掉
-
窗口越大,则网络的吞吐率就越高,性能就越好
情况一:ACK丢了
这种情况下,ACK丢失无所谓,可以通过后面的ACK进行确认。
情况二:数据包丢了
-
当某一段报文段丢失之后,发送端会一直收到 1001 这样的ACK,就像是在提醒发送端 “我想要的是 1001” 一样
-
如果发送端主机连续几次收到了同样一个 “1001” 这样的应答,就会将对应的数据 1001 - 2000 重新发送
-
这个时候接收端收到了 1001 之后,再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了,被放到了接收端操作系统内核的接收缓冲区中
2)、UDP协议
相当于寄信
-
无连接:只需要知道对方的IP和端口号,就可以直接发送数据,不需要建立连接
-
不可靠:没有确认机制和重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息
-
面向数据报:不能灵活的控制读写数据的次数和数量。应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并
-
有最大传输长度限制:UDP报文头部中有一个数据报长度字段,最大数字是65535字节,限制了一个完整 UDP报文的长度不能超过64k,不适合传输大数据
标签:255.255,ip,基础,网络,192.168,Huawei,了解,100.100,32 From: https://www.cnblogs.com/j-qingtian/p/18108627