ARP的应用,TCP与UDP,数据包转发流程(2017年11月12日 23:12:46)
95%以上网络连接使用的是以太网协议。
主机之间的通讯,更加关注的是通信目的地的IP地址。
任何应用程序在发送数据的时候要经二层封装。
一、ARP表:地址解析协议表。
静态配置ARP表项的情况:当受到ARP攻击之后,可以静态配置关于网关、关于服务器的ARP表项。
(接下里就要找到攻击源,把攻击源隔离)。
通过ARP协议自动学习。跟邻居自动学习ARP信息。
只会在基于IPV4的以太网环境中使用。
(解析IPV6到MA地址映射的协议是NDP协议中的NS与NA的组合报文。)
Ethernet2 | ARP | FCS
当不知道地址是多少的时候,就用全0表示(FFFFFF.FFFFFF.FFFFFF.FFFFFF)
show arp
display arp
---------------------------------------
ARP应答是谁后到谁生效。
假如:PCA---PCC---PCB (PCA与PCB通信的时候插入了一个伪装者PCB)
当A发送ARP请求来解析B的MAC的时候,B与C都做出回应,这时候如果C回应得慢一些,那么A收到C的应答之后,会把C的应答覆盖B的。所以PCA会把PCB的IP映射到PCC的MAC。
与此同时,PCB在给PCA发送ARP请求的时候,PCC也会给PCB做一个ARP回应,PCC的应答者IP会设置为PCA的IP,MAC会使用PCC自己的MAC。但是会后到PCB,所以PCB会认为PCA的IP映射到PCC的MAC。
这时候A跟B通信,他们的目的MAC都设置的是C的MAC。
交换机不关心IP地址,关心的是MAC地址。所以交换机在收到目的MAC为C的报文,都会把包发送给C。C又会分别把A到B或者B到A的流量分别做转发。AB之间隔了C,AB只要通信能成功,那么就不会发现有C,这时候只要C开一个抓包软件(例如:wireshark、sinnf),就能抓去AB直接所有的通信流量。
---------------------
代理ARP (Proxy ARP),能使没有指网关的PC成功访问互联网。但是访问效率低。
使用情况:1、请求者IP与被请求者IP属于不同的IP子网段。2、对于被请求这而言,路由器必须拥有去往被请求者的路由条目(被请求者可达)。3、接收ARP请求的代理ARP功能要开启。
代价太大,不建议使用。。。。
----------------------
DHCP:动态主机配置协议。能给主机自动分配地址。
冲突检测,会先ping两次。
(Windows防火墙有一个禁ping功能)
Client ARP请求 无故ARP(免费ARP)。请求的是自己的IP所对应的MAC地址。最后一个字段的值就是我所拿到的IP地址。
没有人在用这个IP,那就收不到应答。如果收到,那说明这个IP在用,就需要跟服务器重新获取。
能更新IP到MAC的映射。
P2P终结者。通过发送ARP应答来进行攻击。PC会上不了网,当发生此类攻击的时候:
1、第一时间看ARP映射,看关于网关的MAC映射,如果不对,就必须把网关的IP与MAC做静态绑定(静态绑定的优先级高于动态绑定);保证网关的条目是正确的。
2、根据攻击者的MAC或IP找到对应的主机,隔离起来。
3、比较终极的方法就是在交换机上启用 Dynamic ARP Inspection ,通过这个技术我们能动态监听,会立即报日志,会立即把攻击者隔离起来。------------DAI
-------------------------
现在常用的端口地址都是16bit,取值范围是0-65535。
1-1023:知名端口号。对应的是知名应用程序。如HTTP\TCP 80 FTP 20 21 SMTP 25 POP3 110
1024-65535:非知名端口号。对应的是非知名应用程序。如QQ... 随机对应的关系。
---------------------------------------------------------
都能提供数据切片的作用,都能提供源目端口的协议标识作用。
TCP:一般称为面向连接协议。 能保证传输的可靠性,保证流量能到,到大的流量不会出现乱序,不会出现篡改,不会丢包,不会出现问题。
流控功能:Windows 窗口字段 Byte 每次一发送,窗口大小都会变化,所以叫滑动窗口。65535字节;第一次发送数据为0字节,接下来都是2的N-1次方
防止传输乱序:可靠传输:1、通过窗口。 2、通过一个叫做序列号的字段来实现(Sequence)。(比如一个数据包分成4段进行传输,接收者接收并不一定会按照顺序接收,所以必须要靠TCP报头中携带的序列号字段来分辨)。
传输是否出现丢包:确认号字段(Acknowledgement)ACK,字段+1.
重传能力:TCP内部所实现的机制,
完整性检查:通过checksummary校验和 。
UDP:一般称无连接协议。 尽力而为的传输。只提供协议的标识与源目端口。不能提供任何的传输保障机制。例如:QQ......
区别是:TCP的报头很大,长度在20-60字节;UDP只有8个字节。带宽用来传输我们的数据载荷,报头越小,载荷对于带宽的利用率就会越高。UDP抢占带宽很强。
TCP传输机制非常复杂,TCP的带宽利用率非常低。
TCP基于三次握手来创建会话,这之中可以发起DOS拒绝服务攻击。来浪费资源,没法给正常服务提供资源。(TCP SYN Flooding Attack: TCP同步泛洪攻击);UDP不需要建立三次握手
TCP是一个点到点协议,只支持单播报文的发送,不支持组播与广播。
TCP最大的好处:重传
三次握手:客户端Client给服务器Server发送一个 SYN(同步)报文(SYN为1);服务器会返还一个SYN+ACK(同步+确认)(SYN&ACK都为1)报文;PC收到这个报文之后会,最终返还一个ACK为1的报文做确认。
VOIP:Layer2 | IPV4 | UDP | RTP | VOIP | FCS 语音视频类流量传输模式,由于RTP拥有序列号字段,所以能保证传输的顺序性。RTP:实时传输协议。
TCP、UDP公用65535端口。
------------------
数据转发过程
EG:访问www.google.com的过程:
1、浏览器输入www.google.com
2、基于HTTP的数据封装:Layer2 | ipv4 | tcp | HTTP | FCS。
当在访问一下服务器的知名的应用的时候,目的端口为知名端口,源端口是随机端口。
3、由于google服务器的地址未知 :所以PC发送基于UDP封装的DNS请求:
Layer2 | IPV4 | UDP | DNS |FCS
询问查找A记录,DNA的A记录就是域名的映射。帧头的SMAC为PC,MMAC为网关(查找ARP表)。
4、三次握手建立TCP请求,发送HTTP报文,经过边界路由器进行PAT进行地址转换,回向则查找NAT表,返回HTTP报文。
5、浏览器显示www.google.com
----------------------------
三层地址能保证源目
二层地址每跨越一层就会变化。
----------------
Urgent Pointer:紧急指针,当多个TCP会话都在打开的时候,需要优先处理的字段,紧急指针置位,告诉服务器这股连接更重要一些。
----------------------------------
UDP:
UDP不能提供可靠传输能力,但是应用程序本身可以提供。
源端口,目的端口
长度,校验核
例如Voip语音流量的封装:
Layer2 | IPV4 | UDP | rtp | Voip | FCS -------- 实时传输协议 。 UDP没有提供序列号字段,但是RTP有。所以能保证传输的顺序性。-----------语音视频等流量的传输模式
TCP、UDP共用65535端口。
DNS 既能基于TCP的53,又能基于UDP的53
LDP既使用TCP的711,又使用UDP的711
除了个别特例,TCP使用的端口UDP不会再使用。这样就不会端口冲突。
-----------------------------------