画图标准

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地址:

  1. 所有设备的MAC地址是全球唯一的

  2. MAC地址是16进制表示,长度为48bit,采用冒号分16进制表示 01010100 10101010

    10101111 11110000 2^48

  3. MAC地址前半部分被"OUI代码"厂商唯标志符,用于唯一标志一个企业/公司,例妙如思科、TP-LINK、华为;后半部分厂商自行分配

【补充】:以太网协议仅仅是链路层/局域网通信中的一种标准,还有其他链路层协议,令牌网、总线网、FDDI网

IP协议

定义

Internet

Protocol,互联网协议,用于实现数据的不可靠面向无连接的通信,实现三层数据封装与IP寻址(ip协议包含了ip地址)

原理



版本号 表示IP协议的版本
头部长度/总长度 头部长度(默认为20字节),总长度;区分IP头部和数据包,接收方根据长度字段知道从哪里解封装
DSCP/TOS QoS服务质量技术用于实现流量标记
标识符 用于标志分片的进程
标志符 MF更多位用于告知接收方是否还有分片,0表示没有,1表示有;DF不要分片位告知途径设备不要进行分片
分片偏移 用于告知接收方每个分片距离IP头部的位置,才能实现有序的重新组装
生存时间 TTL,最大为255,标志路径长短,防止环路
协议号 标志上层协议
头部校验和 验证数据包的完整性
源地址 标志发送方IP地址
目的地址 标志接收方IP地址

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、偏移量FO

MTU(最大传输单元)以太网1500bytes,大于1500将会被切分传输,网卡物理结构限制了大小

ID:当有多个数据传输时用ID来分辨每一个数据段属于哪个数据

Flags:MF/DF等等的标志位

FO:当一个数据分片时用来分辨数据段的顺序

ARP协议

如果要给TCP/IP协议栈选择个"最不安全的协议",那么我会毫不犹豫把票投给ARP协议。我们经常听到的这些术语,包括"网络扫描、内网渗透、中间人拦截"、"局域网流控"、"流量坎骗",基本都跟ARP脱不了干系。大量的安全工具,例如大名鼎鼎的cain、功能完备的Ettercap、操作傻瓜式的P2P终结者,底层都要基于ARP实现

①ARP( Address Resolution

Protocol)即地址解析协议,用于实现从IP地址到MAC地址的映射,即询向目标IP对应的MAC地址

②在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。

③一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。

1、原理

同个局域网里面,当PC1需要跟PC2进行通信时,此时PC1是如何处理的?

根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去这里以PC1

ping PC2的过程举例==>

PC1封装数据并且对外发送数据时,上图中出现了" failed",即数据封装失败了,为什么?

我们给PC1指令- ping

ip2",这就告知了目的IP,此时PC1便有了通信需要的源目IP地址,但是PC1仍然没有通信需要的目的MAC地址。这就好比我们要寄个快递,如果在快递单上仅仅写了收件人的姓名(IP),却没有写收件人的地址(MAC),那么这个快递就没法寄出,因为信息不完整

那么,现在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请求。在我们的

windows/macos系统下,可以通过命令行arp -a查看具体信息=>

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协议以及广播和单播的概念,我们来看一下用

Wireshark抓取到的真实网络中的ARP过程,通过数据包的方式来呈现,部分MAC信息隐去。(建议初学者用GNS3配合

Wireshark来抓取协议包进行分析,相比真实网络更加干净,方便分析)

主机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病毒,成为这个网络的攻击者(

hacker),接下来,PC3是如何攻击的?先不急,先来回顾下PC1和PC2是如何通信

  1. PC1需要跟PC2通信,通过ARP请求包询问PC2的MAC地址,由于采用广播形式,所以交换机将ARP请求包从接口P1广播到P2和PC3。(注:変换机收到广播/组播/末知帧都会向其他接口泛洪)

  2. PC2根据询可信息,返回ARP单播回应包;此时PC3作为攻击者,没有返回ARP包,但是处于'监听'状态,为后续攻击做准备

  3. PC1和PC2根据ARP问答,将各自的ARP映射信息(IP-MAC)存储在本地ARP缓存表,交换机根据其学习机制,记录MAC地址对应的接口信息,存储在CAM缓存表(也称为MAC地址表),交换机收到数据包时,会解封装数据包,根据目标MAC字段进行转发

关于上面的图解,我们要记住这些关键知识(敲黑板!)

  • 主机通信需要查找ARP表,而交換机通信需要查找CAM表(路由则查找 Route表)

注:ARP表:ip<-> mac CAM表:mac<->port( Route表:route<->port)

  • 交换机基于源MAC地址学习,基于目的MAC地址转发

  • 同一局域内,攻击者可以根据主机的ARP广播请求监听其IP和MAC信息

注:这里是”被动监听“,跟后面要谈到的”主动扫描“原理上有分别

接下来是重点,我们来看看PC3( Hacker)是如何发起ARP攻击的=>

正常情况下,若收到的ARP请求不是给自己的,则直接丢弃;而这里PC3(

Hacker)在监听之后,发起了ARP回应包:我就是PC2(IP2-MAC3)。从拓扑可以出现,PC3明明是IP3对应MAC3,很显然这就是一个ARP欺骗行为。于此同时,PC2正常的ARP回应包也交到了PC1手中,我们来看PC1接下来如何处理的

PC1收到两个ARP回应包,内容分别如下

  • 我是PC2,我的IP地址是IP2,我的MAC地址是MAC2

  • 我是PC2,我的IP地址是IP2,我的MAC地址是MAC3

PC1脸懵:咋回事?还有这操作?不管了,我选最新的!(后到优先)

这里给大家便普及下网络协议里各种表在处理缓存信息的方式

要么”先到先得”要么后到优先,上面提到的ARP和CAM表,就是遵循后到优先原则,而后面章节我们会讲到的DHCP表,则循'先到先得”原则

那么问题来了,上面两个ARP回应包到底郡个先到郡个后到呢?

作为初学者,可能还在纠结前后这种 naive的问题;而作为

hacker,只要持续不停发出ARP欺骗包,就一定能够覆盖掉正常的ARP回应包。稳健的ARP嗅探/渗透工具,能在短时间内高并发做网络扫描(例如1秒钟成干上百的数据包),能够持对外发送欺骗包

无论如何,当PC1和PC2这种”小白用户遇到PC3( hacker)时,最终的结果一定是这样的



小白vs黑客,很明显的较量,PC1最终记录的是虚假的ARP映射:IP2<->MAC3,得到错误信息的PC1,接下来会发生什么情兄呢?(我们以PC1

ping PC2为例)

根据数据封装规则,当PC1要跟PC2进行通信时,无论是发生PING包还是发送其他数据首先要查找ARP表,然后在网络层打上源目IP,在链路层打了上源目MAC,然后将数包发送给交换机。交换机收到之后对数据进行解封装,井目査看CAM表(基于目的MAC转发),

由于目标MAC3对应Port3,所以交換机自然而然将其转发给PC3就这样,PC1本来要发给PC2的数据包,落到了PC3(

Hacker)手里,这就完成了一次完整的ARP攻击。

反过来,如果PC2将数据包发送PC1,PC3仍然可以以同样的ARP欺骗现攻击,这就有了下面这张图(PC3既欺编了PC1,也欺编了PC2)



此时,PC1和PC2的通信数据流PC3拦截,形成了典型的中间人攻击。那么,一旦被攻击井拦截,攻击者能做什么,普通用户又会受什么提失?这里给大家举几个常见的例子=

  • 攻击者既然操控了数据流,那么直接断开通信是轻而易举的,即"断网攻击”,例如,PC1

给PC2的数据在PC3这里可以直接丢弃,而如果这里的PC2是台出口路由器(无线路由器),那就意味着

PC1直接无法连上互联网

  • "断网攻击"显然容易被发现,而目比较残忍”,所以就有了更加常见的应用-“限速”。例

如,在宿含上网突然很慢,在网吧上网突然不开网页,如果这个网络没有安全防御,那么很有可能有”内

鬼。

  • 其实无论是断网攻击还是限速”,整体还是比较”善良”,因为这里流量里面的核心数据还没有被”提取”出来。如果攻击者是一名真正的黑客,他的目的定不会这么无聊,因为内网流量对于黑客是没有太大价值的,而只有"用户隐私”,例如常见网贴的登录账号码,这些才是最有价值的

向:受ARP取击之后,些账号可能取?

答:任何基于明文传输的应用,都可以被窃取,例如,如果个网站不是HTPS协议,而是基于HTP明文传输,那么当你登录这个网站时,你的密码就会被取。除了http(web应用),常见的还有

telnet.、ftp、pop3/ smtp/imap(邮箱)等应用,都很容易泄密码

ARP渗透工具底层原理分析

这里我通过wireshark给大家还原真实网络中常见的ARP归描和欺骗攻击

在这张图里面,

Hacker(就是我)接入了个WFi网络,这个10.1.20.0/24便是所在的网段。刚进来一个陌生网络,

Hacker只知道自己的IP信息,例妙如P地址是10.1.20.253,网关地址是10.1.20.254,而这个局域网的其他设备是什么?有多少台?地址分布是多少?Hacker都不知道,接下来怎么呢?是不是要直接发动ARP攻击了?

不用这么着急,咋们至少要先了解下这个网络,进行基本的扫描和踩点。这个时候通过ARP工具对这个WiFi网络进行ARP扫描,具体的数据包图如下:



其实,这就是典型的盲扫或者'暴力扫描":反正我不道网络到底有多少主机,那我就尝试一下把整个网段全部问遍得了

那么,这个实际网络里面,到底谁'举手了呢?我们来看 Wireshark抓包情况



扫描后得到以下图片

接下来,如何进行ARP欺攻击呢?这里将最重点的数据包截取出来>

根据之前的信息,我们知道00:08:ca:86:f8:0f其实就是hacker的mac地址,并且对应的真正的IP地址应该是10.1.20.253。而这里很明显是

hacker在欺骗局域网其他主机,它对外声称:自己就是"所有人”。尤其是上面标红的主机,我们已经知道是小米思科苹果等设备,但是

hacker?都声明是自己!这样的意义在于覆盖掉其他主机的ARP缓存表信息,井生成错误的ARP映射,最终将通信流量交给

hacker。当然,还有另外一种



依此类推,Hackers会告诉局域网所有主机:自己就是网关,井且后续可数据都丢给我,我来转发到互联网

ARP攻击总结

  1. ARP缓存表基于后到优先原则,IP与MAC的映射信息能被覆盖

  2. ARP攻击基于伪造的ARP回应包,黑客通过构造'错位”的IP和MAC映射,覆盖主机的ARP表(也被称为ARP毒化),最终截取用户的数据流

  3. 一遭受ARP攻击,账号密码都可能取(如果通信协议不是加密的)

  4. 通过 Wireshark数据包分析,我们掌握了真实网络中ARP底层攻击原理及数据包组成。

ARP防御

在讲解ARP防御之前,我们先回顾下ARP攻击最经典的一幕=>



当PC1询问PC2的MAC地址时,攻击者PC3返回ARP欺回应包:我的IP地址是IP2,MAC地址是MAC3。-且PC1记录了错误的ARP映射,则发给与PC2的数据,都会落到PC3手里

也就是说,ARP攻击的罪首便是这种”欺编包”,若针对欺骗包的处理是不相信或不接收的话,则不会出现问题。处理这种欺行为我们去提前在黑客端做手脚,因为"敌在暗处我在明处。这样的话,我们就剩下两个解决方法

  1. 保证电脑不接收欺包

  2. 保证电脑收到包之后不相信

目前网络安全行业现有的ARP防御方案,基本都是上面两个方法的具体实现。我们来看看这张防御图:

  1. 当黑客发起ARP欺骗包时,会途径局域网里面的交换机或无线路由器等网络设备;

  2. 如果网络设备能够识别別种欺骗包,井且提前丢弃掉,则电脑手机端就不会被欺骗;

  3. 如果网络设备没有拦截这种欺编包,则电脑/手机端需要做安全防御,然后再丢弃。

简单来说,ARP防御可以在网设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。接下来,我们先来了解下网络设备(例如这里的交换机)的防御技术

上面这张图,展现的是交처换机的ARP防御能力,当PC2发送ARP回应包时,交换机将其转发给PC1,而当PC3发送ARP回应包(欺骗)时,交换机直接丢弃

但是,人家PC3上脸上又没有写着"

hacker,凭什么交机要丢弃它的ARP回应包?凭什么判断它的包就是”欺骗的呢?接下来,我就要给大家个绍下局城网安全里比较常用的防御技术,这种防御技术被称为DAI(

Dynamic ARP Inspection)动态ARP检测,原理可以用两句话简单概括:

  1. 交换机记录每个接口对应的IP地址和MAC,即port->mac<->ip,生成DAI检测表

  2. 交换机检测每个接口发送过来的ARP回应包,根据DAI表判断是否违规,若违视则丢弃此

数据包井对接口进行惩罚

我们知道,PC3是在交换机的Port3、MAC地址是MAC3,IP地址是IP3,所以本地DAI表项内容是<port3-mac3-ip3>。当交换机从接口Port3收到ARP回应包,内容却是P2和MAC3映射,即<port3-mac3-ip2>,经判断,这个包就是虚假的骗包,交换机马上丢弃这个包,并且可以时接口做惩罚(不同设备的惩罚方式有所不同,可以直接将接口软关闭”,直接将攻击者断网;也可以'静默处理",仅丢弃欺骗包,其他通信正常)

上面这个动态ARP监测技术,可以说是目前防御ARP攻击最有效的方法之一。但是,作为初者,大家可能还会有疑问:

  1. 一般的交换机或网络设备能部署动态ARP监技术吗?

  2. 连接用户的交换机,怎么能识别IP地址信息呢?

  3. 上面这张DAI表是如何生成的?是不是像CAM表一样能自动识别?

大部能支持这种动态ARP监测技术的交換机成者无线路由器,都基本是企级的产品。所以,简单的交换机不具备动态ARP监技术,即便市面上有带安全防御的网络产品,企业、学校、医院等大量网络,仍然在早期采购的时侯,用的是比较基础版本的交换机

另外,交换机能识别IP地址信息吗?

从现在的网络技术来看,分层界限越来越模糊,融合式的网络设备才是主流,现在的接入交换机基本能被

Telnet/

SSH/Web管理,更专业的交换机同时支持动态ARP监测(dai)、IP源防护(ipsg)、DHCP侦听(

dhcp

snooping)、端口安全、AAA、802.1x等局域网安全技术,已经超越了原有二层交换机的定义所以,交换机能读三层甚至七层的数据包已经不是什么新鲜事了,不要被"交换机就是一层设备"给束缚了,这只是纸面上的定义

最后一个向题,DA检测表是如问生成的?

在上面图解中,我们看到交换机查看的表已经不是原来的CAM表了,内容也不太一样,CAM表的内容主要是MAC和Port的映射,而DAI检测表则表则是Port、MAC、IP三个信息映射。目前这张表支持两种方式来生成:第一种方式就是手工静态绑定:即用户接入网络之后,管理员根据此用户电脑的MAC和P地址,然后在接口上绑死,缺点就是用户数太多的话,手工绑定管不过来;第二种方式就是目前最主流的做法,即在交換机上开启DHCP侦听技术,当用户第一次通过DHCP获取到地址的时候,交换机就把用户电脑的IP、MAC、Port信息记录在DHCP侦听表,后面ARP检则直接调用这张DHCP侦听表即可。

ICMP协议

定义

互联网信息控制协议, Internet Control Message

Protocol用于实现链路连通性测试和链路踪,可以实现链路差错报告。ICMP云行存在传输层协议、服条于IP协议

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



显示数据传输途径的所有使用IP协议设备的地址

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地址

追踪过程中带*的数据有两种情况

  1. 路由器离得太远,回应时间太长导致超时

  2. 设备是类似防火墙或带有反追踪功能的设备

(2)Linux/Unix链路追踪原理

和Windows区别在于Windows全都是ICMP包,而Linux/Unix是UDP包+ICMP包





当UDP高端口包发送到百度时,百度没有开启对应的端口服务,因此会回复一个“端口不可达”包

同时,这些包的结构也不一样,在ICMP层里面还包含着原来的IP层,目的是告诉用户错误的包的内容

UDP协议

大文件一般用TCP协议传输,而一般实时传输或者是小文件用UDP协议传输

定义

用户数据报协议, user datagram

protocol,用于实现面向无连接的不可靠协议,传输层协议

特征

数据包结构非常简洁

处理速度快

实时交互(社交软件、视频流、实时交互协议)

协议(基于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

Protocol,用于实现对终设备的动态IP信息分配(IP地址、网关地址、DNS服务器、WINS服务。。)

原理

ipconfig/release //释放IP地址(抓到 DHCP Releasef包)

ipconfig/renew //重新获取IP地址(抓到DHCP完整交互包)

Linux/Unix

Windows

0.0.0.0:没设置地址

255.255.255.255(ff:ff:ff:ff):广播



在Linux环境下,无论是发现/提供/请求/确认包,目标地址都为255.255.255.255,即都为广播,原因是当配置有多个DHCP服务器时,当其中一个DHCP服务器的地址池被分配出去时其他的服务器能收到广播,不会使地址再次使用;

在Windows/macos则会以单播来提供/确认,目的是减少广播对其他用户的影响,同时节约带宽

小结

数据包的功能:

发现包用于广播发现局域网的DHCP服务器;提供包用于预回复客户端,告知其即将给的P地址;请求包正式对感兴趣的服务器/IP地址发起请求;确认包对客户端进行最终的正式确认(这个时候服务器会将此分配出去的IP地址移开本地地址池)。

DHCP初始请求过程中,客户端本地是没有IP地址的,那么如向对外发送发现和请求包呢?:

将自己的地址设置为0.0.0.0

为什么发现/请求包需要使用广播的方式,有一些情况下,提供/确认包也需要使用广播的方式?:

当局域网配置多个DHCP服务器时,当地址池里的一个地址被分配出去时,若其他DHCP服务器不知情,则可

能导致一个IP地址被多次公用

DHCP的交互过程都是广播包形式来实现的,目的IP采用255.255.255.255

DHCP交互过程中,服务端为67,客户端为68

为什么需要4个包来获取地址,而不是2个包?:

2个包无法解决多服务器环境下,地址浪费/冲突的问题。

同时,DHCP是不可靠协议,当提供的步骤提供地址时丢失或者被拦截,则会导致用户得不到地址但是DHCP服务器将地址清除,增加多两个确认包可以增加协议的稳定性

为什么有的时候会抓到多个提供包,若收到多个提供包该如何选择?:

有可能多个提供包是由多个DHCP服务器提供的,DHCP协议采用先到先得原则,若收到多个IP地址则选择第一个,但由于请求包只会发出一个,所以只有一个IP地址会从地址池消除

DHCP发现包:





DHCP提供包:



DHCP请求包:

DHCP回复包:

TCP协议

定义

Transmission Control

Protocol,传输控制协议,是TCP/IP协议栈中算法最多,功能最繁杂的协议

基于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)

< SEQ( n ) + Len(n)

2、下一次的序列号等于上一次的确认号 Seq(n+1) = ACK(n)

流量控制(窗口大小)



当窗口大小为0时意思为暂时没有空间来储存?告诉服务器不要继续传输

多路复用(端口号Port、套接字socket、会话session、五元组)



注明:TCP通过端口号(port)或套接字(ip+port)实现多路复用

源目IP+源目Port+协议号=唯一的五元组

Telnet协议

定义

远程登录协议,用于对设备进行远程管理,基于明文,目前不建议使用,建议采用SSH协议

采用TCP23号端口

计算机网络 -- TCP/IP的更多相关文章

  1. -1-7 java 网络编程基本知识点 计算机网络 TCP/IP协议栈 通信必备 tcp udp

    计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 ...

  2. 计算机网络——TCP/IP协议族详解

    一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...

  3. WIZnet通过启动在线培训活动:计算机网络TCP/IP协议而事实上,现在的方法

    为了给大家营造更好的学习环境.WIZnet特此举办第一期培训活动,由WIZnet一线project师为你分享最最前沿和有用的网络技术知识,帮你解答开发过程中的疑问.欢迎前来交流.名额有限(20名满), ...

  4. 计算机网络-TCP/IP HTTP Conclusion

    1.1OSI 与 TCP/IP 各层的结构 1.2 三次握手和四次挥手,TCP为什么三次握手,四次挥手 在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B:第二次消息B使用ack对A的 ...

  5. [计算机网络]TCP/IP协议-运输层

    TCP/IP体系结构 TCP/IP四层协议 五层协议 协议 作用 应用层 应用层 HTTP超文本传输协议.FTP文件传输协议 - 运输层 运输层 TCP(面向连接的,可靠的).UDP(无连接的,不保证 ...

  6. 计算机网络 - TCP/IP模型

    图片来自网上资料

  7. 计算机网络及TCP/IP知识点(全面,慢慢看)

    TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是网络的网络. 2.分类: 根据作用范围分类: 广域网 WAN (Wide Area Networ ...

  8. TCP/IP(一)之初识计算机网络

    前言 在一段时间里,都很想知道一台电脑怎么跟另一台电脑通信的,我发送一个qq给女朋友,怎么准确的发送过去的,又是怎么接受消息的. 接下来一段时间给大家慢慢分享关于计算机网络的相关知识. 一.局域网.广 ...

  9. 计算机网络三:域名、IP地址和TCP/IP协议

    一.域名        域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...

随机推荐

  1. kubernetes/k8s CRI分析-kubelet删除pod分析

    关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...

  2. connect()函数阻塞问题

    方法一:采用select 在学习嵌入式Linux网络编程中,很多同学都发现了一个问题,那就是调用connect函数时,如果服务端关闭,客户 端调用connect()函数时,发现阻塞在那里,而且利用ct ...

  3. [08 Go语言基础-for循环]

    [08 Go语言基础-for循环] 循环 循环语句是用来重复执行某一段代码. for 是 Go 语言唯一的循环语句.Go 语言中并没有其他语言比如 C 语言中的 while 和 do while 循环 ...

  4. CVE-2020-17523:Apache Shiro身份认证绕过漏洞分析

    0x01 Apache Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 0x02 漏洞简介 2021年2月1日,Apache Shiro官 ...

  5. 快速解决flutter中package包版本冲突问题

    当你的项目需要安装的依赖包越多,遇到包冲突可能性就越大,尤其是当依赖的包有重大更新时.比如下图: 上面可以看到是xml跟intl_translation两个包有冲突,因为他们依赖两个不同的petitp ...

  6. C# volatile 的使用

    class Program { private static volatile bool bChanged; static void Main(string[] args) { Thread t1 = ...

  7. (转)致Java程序员:你离架构师还差多远?

    转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...

  8. linux————mysql————修改密码

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('输入新密码');

  9. Object 的wait()方法

    The java.lang.Object.wait() causes current thread to wait until another thread invokes the notify() ...

  10. NIO中的File

    package nio; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files ...