| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络 -- TCP/IP -> 正文阅读 |
|
[网络协议]计算机网络 -- TCP/IP |
画图标准OSI七层模型7、应用层作用:为用户提供软件/接口/界面 interface 协议:OICQ、HTTP、HTTPS、BT/P2P 6、表示层作用:用于对用户数据进行数据呈现。(数据格式、数据加密) 5、会话层作用:用于实现会话管理(建立、维特、关闭、区分) 4、传输层作用:用于实现数据的可靠戓不可靠传输 协议:TCP、UDP TCP:传输过程中会确认传输的情况,在传输大文件时可靠,但小文件时确认次数太多占用带宽 3、网络层作用:提供三层寻址/IP地址和三层通信(路由器)功能 协议:IP协议 2、链路层作用:提供二层寻址/MAC地址和二层通信(交换机)功能。 协议:以太网 Ethernet 局域网:mac地址、交焕机判断、链路层 广域网:ip地址、路由器判断、网络层 1、物理层作用:提供通信介质和接口标准 举例:RJ11、RJ45、802.11ac、802.11n OSI实现过程(封装和解封)
封装:简单理解应用层发送一个data数据; 到了传输层,从数据的基础加一个头部信息port,构造一个segment段; 到了IP层,加一个IP地址形成一个package包;(面向路由器) 到了数据链路层,加上一个mac地址,构造一个frame帧;(面向交换机) 到了物理层,转成二进制数据进行01传输。 封装:反向进行,则一层一层的校验、分解(校验、寻址)。 总结 1、OSI封装是一个为数据包加入寻址信息的过程(打包过程,类似快递) 2、端口号(Port)用于标志不同的应用程序,面向最终用户 3、IP地址用于唯标志通信设备,面向路由器 4、MAC地址用于唯标志局域网设备,面向交换机 TCP/IP协议栈TCP/IP四层模型4. 应用层 协议:HTTP、HTTPS、FTP、DNS、DHCP 3. 传输层 协议:TCP、UDP、SCTP 2. 网络层 协议:IP、ICMP、ARP 1. 数据链路层 协议:Ethernet Ethernet(以太网)协议以太网不等于局域网 以太网:一种链路层协议 局域网:一种小型网络结构 局域网是用以太网技术来组建 1、定义 Ethernet以太网协议,用于实现链路层的数据传输和地址封装(MAC) DIX联盟( Digital、Intel、 Xerox)开发 2、封装 三个字段: Destination/目的字段:标识目的通信方的MAC地址 Source/源字段:标识发送端的MAC地址 Type/类型值:标志上层协议(告诉解包时以什么格式解包) MAC地址:
【补充】:以太网协议仅仅是链路层/局域网通信中的一种标准,还有其他链路层协议,令牌网、总线网、FDDI网 IP协议定义Internet 原理
1、长度头部/总长度IP头部标准20字节,最大60字节 用来区分数据包和IP头部的大小,便于解包 2、DSCP/TOS:区分服务符/服务质量3、TTL生存时间IP数据包每经过一“跳”TTL减去一;当路由器收到一个TTL=0的数据包时,则宣告此数据包死亡并丢弃。TTL的本质是为了IP数据包的“环路”问题 4、协议号小结:类型值、协议号、端口号都是用于标志上层协议,方便接收方实现数据的解封装。此功能称为协议之间的“分用 5、头部校验和通过校验和(奇偶校验)可以让接收方验证此数据包是否完整/篡改。 以太网协议会在数包后面加FCS 5、源目IP地址7、ip分片原理-标志ID、标识Flags、偏移量FOMTU(最大传输单元)以太网1500bytes,大于1500将会被切分传输,网卡物理结构限制了大小 ID:当有多个数据传输时用ID来分辨每一个数据段属于哪个数据 Flags:MF/DF等等的标志位 FO:当一个数据分片时用来分辨数据段的顺序 ARP协议如果要给TCP/IP协议栈选择个"最不安全的协议",那么我会毫不犹豫把票投给ARP协议。我们经常听到的这些术语,包括"网络扫描、内网渗透、中间人拦截"、“局域网流控”、“流量坎骗”,基本都跟ARP脱不了干系。大量的安全工具,例如大名鼎鼎的cain、功能完备的Ettercap、操作傻瓜式的P2P终结者,底层都要基于ARP实现 ①ARP( Address Resolution ②在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。 ③一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。 1、原理同个局域网里面,当PC1需要跟PC2进行通信时,此时PC1是如何处理的? 根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去这里以PC1 PC1封装数据并且对外发送数据时,上图中出现了" failed",即数据封装失败了,为什么? 我们给PC1指令- ping 那么,现在PC1已经有了PC2的地址信息,如问获取到PC2的MAC地址呢?此时,ARP协议就派上用场了。我们接着上面这张图,继续==> 通过第三和第四步骤,我们看到PC1和PC2进行了ー一次ARP请求和回复过程,通过这个交互工程,PC1具备了PC2的MAC地址信息。接下来PC1会怎么做呢?在真正进行通信之前,PC1还会将PC2的MAC信息放入本地的[ARP缓存表],表里面放置了IP和MAC地址的映射信息,例如IP2<->MAC2接下来,PC1再次进行数据封装,正式进入PING通信,如下==、 小结:经过上面6个步骤的处理,PC1终于把数据包发送出去了,之后便可以进行正常的通信了。看到了吧,ARP的功能和实现过程是如此的简单:它在发送方需要目标MAC地址的时及时出手,通过一问答"的方式获取到待IP对应的MAC地址,然后存储到本地[ARP缓存表],后续需要的话,就到这里查找。既然是"缓存表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求。在我们的 ARP原理之广播请求单播回应上面的图解过程看上去简单又纯粹,好像我们就已经把这个协议的精髓全部get到,但其实,我们只是刚揭开了它的面纱,接下来我们才真正进入正题。例如,上面的图解过程中,整个局域网(LAN)只有PC1和PC2两个主机,所以这个问答过程非常的顺畅。实际网络中,这个LAN可能有几十上百的主机,那么请问,PC1如问将这个【ARP请求包】顺利的交给PC2,而PC2又如何顺利的把【ARP回应包】返回给PC1?我们看下面的图: 为了营造出几十上百"的效果,这里多派加了2个主机进来,并目増加了有线和无线的环境。那么,在多主机环境下,PC1现在发出的ARP请求包,怎么交到PC2手里? 这时,ARP协议就需要采用以太网的广播功能:将请求包以广播的形式发送,交换机或WFi设备(无线路由器)收到广播包时,会将此数据发给同一局域网的其他所有主机。 注明:什么是广播?对于初学者而言,我们只需要知道,大部分的广播包,它们有一个共同 特征:二层封装时目的MAC是全f(ffff.ffff.ffff)或三层封装时目的IP是全1(255.255.255.255)。可以这样更方便的记住:目的地址最大的,就是广播 接下来我们来看下这个ARP广播请求包接下来是如何工作的? 根据上图我们看到,PC1发送的请求广播包同时被其他主机收到,然后PC3和PC4收到之后(发现不是问自己)则丢弃。而PC2收到之后,根据请求包里面的信息(有自己的IP地址),判断是给自己的,所以不会做丢弃动作,而是返回ARP回应包(单播回应) ARP请求是通过广播方式来实现的,那么,PC2返回ARP回应包,是否也需要通过广播来实现呢?答案是否定的。大部分网络协议在设计的时候,都需要保持极度克制,不需要的交互就砍掉,能合并的信息就合持,能不用广播就用单播,以此让带宽变得更多让网络变得更快。那么,ARP回应包是如何处理的?这里需要特别关注ARP请求包的内容,在上面的图解里面,ARP请求包的完整信息是:我的IP地址是IP1,MAC地址是MAC1,请问谁是PC2,你的IP2对应的MAC地址是多少?简单来说,ARP请求首先有"自我介绍"然后オ是询向。这样的话,PC2在收到请求之后,就可以将PC1的IP和MAC映射信息存储在本地的[ARP缓存表],既然如道PC1在哪里,就可以返回ARP单播回应包。 这张图我们需要得到两个信息: ①被询向者PC2先生成了ARP映射信息,然后才是询问者PC1; ②PC3和PC4等其他主机,无法收到这个ARP回应包,因为是单播形式。 小结:ARP协议通过"一问一答"实现交互,但是"问"和"答"都有讲究,"问"是通过广播形式实现,"答"是通过单播形式。 ARP数据包解读为了让大家更好的理解ARP协议以及广播和单播的概念,我们来看一下用 主机1<–>主机2 主机1:IP1 10.1.20.64 MAC1:00:08:ca:xx:xx:xx 主机2:IP2 10.1.20.109 MAC2:44:6d:57:xx:xx:xx 请求包 回应包 ARP协议字段解读Hardware type:硬件类型,标识链路层协议 Protocol type:协议类型,标识网络层协议 Hardware size:硬件地址大小,标识MAC地址长度,这里是6个字节(48bti) Protocol size:协议地址大小,标识IP地址长度,这里是4个字节(32bit) Opcode:操作代码,标识ARP数据包类型,1表示请求,2表示回应 Sender MAC address:发送者MAC Sender IP address:发送者IP Target MAC address:目标MAC吗,此处全0表示在请求 Target IP address:目标lP ARP攻击ARP攻击概述在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答、数据包结构以及分层标准,今天我们继续讨论大家最感兴题的话题:ARP攻击原理是什么?通过ARP攻击可以做什么,账号是否可以取?有些常见的ARP渗透(攻击)工具可以用来练手?ARP扫描和攻击有什么区别,底层数据包特征是怎样的? 接下来,我们通过图解的方式来深入了解ARP攻击是如问实现的 ARP攻击原理但凡局域网存在ARP攻击,都说明网络存在“中间人”,我们可以用下图来解释 在这个局域网里面,PC1、PC2、PC3三台主机共同连接到交换机SW1上面,对应3个接口port1/2/3。假设PC3这台主机安装了ARP攻击软件或遭受ARP病毒,成为这个网络的攻击者(
关于上面的图解,我们要记住这些关键知识(敲黑板!)
注:ARP表:ip<-> mac CAM表:mac<->port( Route表:route<->port)
注:这里是”被动监听“,跟后面要谈到的”主动扫描“原理上有分别 接下来是重点,我们来看看PC3( Hacker)是如何发起ARP攻击的=> 正常情况下,若收到的ARP请求不是给自己的,则直接丢弃;而这里PC3( PC1收到两个ARP回应包,内容分别如下
PC1脸懵:咋回事?还有这操作?不管了,我选最新的!(后到优先) 这里给大家便普及下网络协议里各种表在处理缓存信息的方式 要么”先到先得”要么后到优先,上面提到的ARP和CAM表,就是遵循后到优先原则,而后面章节我们会讲到的DHCP表,则循’先到先得”原则 那么问题来了,上面两个ARP回应包到底郡个先到郡个后到呢? 作为初学者,可能还在纠结前后这种 naive的问题;而作为 无论如何,当PC1和PC2这种”小白用户遇到PC3( hacker)时,最终的结果一定是这样的 根据数据封装规则,当PC1要跟PC2进行通信时,无论是发生PING包还是发送其他数据首先要查找ARP表,然后在网络层打上源目IP,在链路层打了上源目MAC,然后将数包发送给交换机。交换机收到之后对数据进行解封装,井目査看CAM表(基于目的MAC转发), 由于目标MAC3对应Port3,所以交換机自然而然将其转发给PC3就这样,PC1本来要发给PC2的数据包,落到了PC3( 反过来,如果PC2将数据包发送PC1,PC3仍然可以以同样的ARP欺骗现攻击,这就有了下面这张图(PC3既欺编了PC1,也欺编了PC2)
给PC2的数据在PC3这里可以直接丢弃,而如果这里的PC2是台出口路由器(无线路由器),那就意味着
如,在宿含上网突然很慢,在网吧上网突然不开网页,如果这个网络没有安全防御,那么很有可能有”内
向:受ARP取击之后,些账号可能取? 答:任何基于明文传输的应用,都可以被窃取,例如,如果个网站不是HTPS协议,而是基于HTP明文传输,那么当你登录这个网站时,你的密码就会被取。除了http(web应用),常见的还有 ARP渗透工具底层原理分析这里我通过wireshark给大家还原真实网络中常见的ARP归描和欺骗攻击 在这张图里面, 不用这么着急,咋们至少要先了解下这个网络,进行基本的扫描和踩点。这个时候通过ARP工具对这个WiFi网络进行ARP扫描,具体的数据包图如下: 其实,这就是典型的盲扫或者’暴力扫描":反正我不道网络到底有多少主机,那我就尝试一下把整个网段全部问遍得了 那么,这个实际网络里面,到底谁’举手了呢?我们来看 Wireshark抓包情况 接下来,如何进行ARP欺攻击呢?这里将最重点的数据包截取出来> 根据之前的信息,我们知道00:08:ca:86:f8:0f其实就是hacker的mac地址,并且对应的真正的IP地址应该是10.1.20.253。而这里很明显是 依此类推,Hackers会告诉局域网所有主机:自己就是网关,井且后续可数据都丢给我,我来转发到互联网 ARP攻击总结
ARP防御在讲解ARP防御之前,我们先回顾下ARP攻击最经典的一幕=> 也就是说,ARP攻击的罪首便是这种”欺编包”,若针对欺骗包的处理是不相信或不接收的话,则不会出现问题。处理这种欺行为我们去提前在黑客端做手脚,因为"敌在暗处我在明处。这样的话,我们就剩下两个解决方法
目前网络安全行业现有的ARP防御方案,基本都是上面两个方法的具体实现。我们来看看这张防御图:
简单来说,ARP防御可以在网设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。接下来,我们先来了解下网络设备(例如这里的交换机)的防御技术 上面这张图,展现的是交?换机的ARP防御能力,当PC2发送ARP回应包时,交换机将其转发给PC1,而当PC3发送ARP回应包(欺骗)时,交换机直接丢弃 但是,人家PC3上脸上又没有写着"
数据包井对接口进行惩罚 我们知道,PC3是在交换机的Port3、MAC地址是MAC3,IP地址是IP3,所以本地DAI表项内容是<port3-mac3-ip3>。当交换机从接口Port3收到ARP回应包,内容却是P2和MAC3映射,即<port3-mac3-ip2>,经判断,这个包就是虚假的骗包,交换机马上丢弃这个包,并且可以时接口做惩罚(不同设备的惩罚方式有所不同,可以直接将接口软关闭”,直接将攻击者断网;也可以’静默处理",仅丢弃欺骗包,其他通信正常) 上面这个动态ARP监测技术,可以说是目前防御ARP攻击最有效的方法之一。但是,作为初者,大家可能还会有疑问:
大部能支持这种动态ARP监测技术的交換机成者无线路由器,都基本是企级的产品。所以,简单的交换机不具备动态ARP监技术,即便市面上有带安全防御的网络产品,企业、学校、医院等大量网络,仍然在早期采购的时侯,用的是比较基础版本的交换机 另外,交换机能识别IP地址信息吗? 从现在的网络技术来看,分层界限越来越模糊,融合式的网络设备才是主流,现在的接入交换机基本能被 最后一个向题,DA检测表是如问生成的? 在上面图解中,我们看到交换机查看的表已经不是原来的CAM表了,内容也不太一样,CAM表的内容主要是MAC和Port的映射,而DAI检测表则表则是Port、MAC、IP三个信息映射。目前这张表支持两种方式来生成:第一种方式就是手工静态绑定:即用户接入网络之后,管理员根据此用户电脑的MAC和P地址,然后在接口上绑死,缺点就是用户数太多的话,手工绑定管不过来;第二种方式就是目前最主流的做法,即在交換机上开启DHCP侦听技术,当用户第一次通过DHCP获取到地址的时候,交换机就把用户电脑的IP、MAC、Port信息记录在DHCP侦听表,后面ARP检则直接调用这张DHCP侦听表即可。 ICMP协议定义互联网信息控制协议, Internet Control Message ping的原理Ping的原理(探测目的主机是否有问题,探测本地到目的的延迟等) Echo request 回显请求 Echo reply 回显应答 类型值|代码值:8 | 0请求0 | 0回复=>区分数据包类型 校验和:实现数据包完整性校验 标识符:用于标志不同的Ping进程 序列号:表示在此进程下的第几个包 DDos攻击DOS Deny of service拒绝服务式攻击 DDOS Distributed deny of service分布式拒绝服务式攻击 使用ICMP协议原理,向目标服务器发送大量请求,迫使服务器发送大量回复,消耗服务器带宽 链路追踪在命令行输入命令:traceroute www.baidu.com Tracert/Traceroute的原理(探测本地到目的路径,“踩点",利用TTL超时来实现)(1) Windows链路追踪的实现原理不断发送ICMP请求,然而每一个请求的TTL值不一样 第一个包的TTL值为:1,当它遇到第一个路由设备时TTL就会被-1=0,然后第一个路由设备就会回复主机宣告包的死亡,同时回复中携带着自己的IP地址,以此获得设备的IP 第二个的ICMP数据包TTL为:2,当他被第一个路由转发后就会-1=1,然后传给第二个路由,到第二个路由时TTL就会又-1=0,然后宣告包已死亡并且回复自己的IP地址,以此类推,就可以获取访问www.baidu.com网站数据途径的所有使用IP协议设备的IP地址 追踪过程中带*的数据有两种情况
(2)Linux/Unix链路追踪原理和Windows区别在于Windows全都是ICMP包,而Linux/Unix是UDP包+ICMP包 同时,这些包的结构也不一样,在ICMP层里面还包含着原来的IP层,目的是告诉用户错误的包的内容 UDP协议大文件一般用TCP协议传输,而一般实时传输或者是小文件用UDP协议传输 定义用户数据报协议, user datagram 特征数据包结构非常简洁 处理速度快 实时交互(社交软件、视频流、实时交互协议) 协议(基于UDP开发的应用、协议)DHCP、DNS、QICQ、TFTP 源端口 目标端口 数据包长度 校验和 拓展: 1、(端口范围1-65535)通信过程中,源端口般属于随机高端口,目的端口属于固定知名端口 2、1-1023为知名端口号范围,已经被占用的。 3、DHCP的源目端口都固定,客户嫦端口为68、服务端为67。 4、DNS域名解析协议基于UDP端口号53;通过DNS请求和回复过程,获取域名对应IP DHCP协议定义动态主机配置协议, Dynamic Host Configuration 原理ipconfig/release //释放IP地址(抓到 DHCP Releasef包) ipconfig/renew //重新获取IP地址(抓到DHCP完整交互包) Linux/Unix Windows 0.0.0.0:没设置地址 255.255.255.255(ff:ff:ff:ff):广播 在Windows/macos则会以单播来提供/确认,目的是减少广播对其他用户的影响,同时节约带宽 小结数据包的功能: 发现包用于广播发现局域网的DHCP服务器;提供包用于预回复客户端,告知其即将给的P地址;请求包正式对感兴趣的服务器/IP地址发起请求;确认包对客户端进行最终的正式确认(这个时候服务器会将此分配出去的IP地址移开本地地址池)。 DHCP初始请求过程中,客户端本地是没有IP地址的,那么如向对外发送发现和请求包呢?: 将自己的地址设置为0.0.0.0 为什么发现/请求包需要使用广播的方式,有一些情况下,提供/确认包也需要使用广播的方式?: 当局域网配置多个DHCP服务器时,当地址池里的一个地址被分配出去时,若其他DHCP服务器不知情,则可 DHCP的交互过程都是广播包形式来实现的,目的IP采用255.255.255.255 DHCP交互过程中,服务端为67,客户端为68 为什么需要4个包来获取地址,而不是2个包?: 2个包无法解决多服务器环境下,地址浪费/冲突的问题。 同时,DHCP是不可靠协议,当提供的步骤提供地址时丢失或者被拦截,则会导致用户得不到地址但是DHCP服务器将地址清除,增加多两个确认包可以增加协议的稳定性 为什么有的时候会抓到多个提供包,若收到多个提供包该如何选择?: 有可能多个提供包是由多个DHCP服务器提供的,DHCP协议采用先到先得原则,若收到多个IP地址则选择第一个,但由于请求包只会发出一个,所以只有一个IP地址会从地址池消除 DHCP发现包: DHCP回复包: TCP协议定义Transmission Control 基于TCP的应用层协议 HTTP:80 HTTPS:443 FTP:20/21 SSH: 22 TELNET: 23 SMTP/POP: 25/110 功能面向连接(三次握手、四次挥手) 可靠传输(经典重传、超时重传、快速重传/选择性重传) 流量控制(滑动窗口、拥塞管理) 多路复用(套接字) 原理面向连接(三次握手、四次挥手;SYN/ACK/FIN位)三次握手: 四次挥手: 可靠传输(序列号SEQ+确认号ACK+重传算法)经典重传超时重传
小结: 1、正常不丢包情况下,ACK(n+1)=SEQ(n)+Len(n),即下一次的确认号等于上一次的序列号加数据包长度值;若丢包情况下,则ACK(n+1) 2、下一次的序列号等于上一次的确认号 Seq(n+1) = ACK(n) 流量控制(窗口大小) 当窗口大小为0时意思为暂时没有空间来储存?告诉服务器不要继续传输 多路复用(端口号Port、套接字socket、会话session、五元组) 注明:TCP通过端口号(port)或套接字(ip+port)实现多路复用 源目IP+源目Port+协议号=唯一的五元组 Telnet协议定义远程登录协议,用于对设备进行远程管理,基于明文,目前不建议使用,建议采用SSH协议 采用TCP23号端口 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:41:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |