计算机网络 -- 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地址:
所有设备的MAC地址是全球唯一的
MAC地址是16进制表示,长度为48bit,采用冒号分16进制表示 01010100 10101010
10101111 11110000 2^48MAC地址前半部分被"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是如何通信
PC1需要跟PC2通信,通过ARP请求包询问PC2的MAC地址,由于采用广播形式,所以交换机将ARP请求包从接口P1广播到P2和PC3。(注:変换机收到广播/组播/末知帧都会向其他接口泛洪)
PC2根据询可信息,返回ARP单播回应包;此时PC3作为攻击者,没有返回ARP包,但是处于'监听'状态,为后续攻击做准备
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攻击总结
ARP缓存表基于后到优先原则,IP与MAC的映射信息能被覆盖
ARP攻击基于伪造的ARP回应包,黑客通过构造'错位”的IP和MAC映射,覆盖主机的ARP表(也被称为ARP毒化),最终截取用户的数据流
一遭受ARP攻击,账号密码都可能取(如果通信协议不是加密的)
通过 Wireshark数据包分析,我们掌握了真实网络中ARP底层攻击原理及数据包组成。
ARP防御
在讲解ARP防御之前,我们先回顾下ARP攻击最经典的一幕=>
当PC1询问PC2的MAC地址时,攻击者PC3返回ARP欺回应包:我的IP地址是IP2,MAC地址是MAC3。-且PC1记录了错误的ARP映射,则发给与PC2的数据,都会落到PC3手里
也就是说,ARP攻击的罪首便是这种”欺编包”,若针对欺骗包的处理是不相信或不接收的话,则不会出现问题。处理这种欺行为我们去提前在黑客端做手脚,因为"敌在暗处我在明处。这样的话,我们就剩下两个解决方法
保证电脑不接收欺包
保证电脑收到包之后不相信
目前网络安全行业现有的ARP防御方案,基本都是上面两个方法的具体实现。我们来看看这张防御图:
当黑客发起ARP欺骗包时,会途径局域网里面的交换机或无线路由器等网络设备;
如果网络设备能够识别別种欺骗包,井且提前丢弃掉,则电脑手机端就不会被欺骗;
如果网络设备没有拦截这种欺编包,则电脑/手机端需要做安全防御,然后再丢弃。
简单来说,ARP防御可以在网设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。接下来,我们先来了解下网络设备(例如这里的交换机)的防御技术
上面这张图,展现的是交처换机的ARP防御能力,当PC2发送ARP回应包时,交换机将其转发给PC1,而当PC3发送ARP回应包(欺骗)时,交换机直接丢弃
但是,人家PC3上脸上又没有写着"
hacker,凭什么交机要丢弃它的ARP回应包?凭什么判断它的包就是”欺骗的呢?接下来,我就要给大家个绍下局城网安全里比较常用的防御技术,这种防御技术被称为DAI(
Dynamic ARP Inspection)动态ARP检测,原理可以用两句话简单概括:
交换机记录每个接口对应的IP地址和MAC,即port->mac<->ip,生成DAI检测表
交换机检测每个接口发送过来的ARP回应包,根据DAI表判断是否违规,若违视则丢弃此
数据包井对接口进行惩罚
我们知道,PC3是在交换机的Port3、MAC地址是MAC3,IP地址是IP3,所以本地DAI表项内容是<port3-mac3-ip3>。当交换机从接口Port3收到ARP回应包,内容却是P2和MAC3映射,即<port3-mac3-ip2>,经判断,这个包就是虚假的骗包,交换机马上丢弃这个包,并且可以时接口做惩罚(不同设备的惩罚方式有所不同,可以直接将接口软关闭”,直接将攻击者断网;也可以'静默处理",仅丢弃欺骗包,其他通信正常)
上面这个动态ARP监测技术,可以说是目前防御ARP攻击最有效的方法之一。但是,作为初者,大家可能还会有疑问:
一般的交换机或网络设备能部署动态ARP监技术吗?
连接用户的交换机,怎么能识别IP地址信息呢?
上面这张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地址
追踪过程中带*的数据有两种情况
路由器离得太远,回应时间太长导致超时
设备是类似防火墙或带有反追踪功能的设备
(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-7 java 网络编程基本知识点 计算机网络 TCP/IP协议栈 通信必备 tcp udp
计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 ...
- 计算机网络——TCP/IP协议族详解
一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...
- WIZnet通过启动在线培训活动:计算机网络TCP/IP协议而事实上,现在的方法
为了给大家营造更好的学习环境.WIZnet特此举办第一期培训活动,由WIZnet一线project师为你分享最最前沿和有用的网络技术知识,帮你解答开发过程中的疑问.欢迎前来交流.名额有限(20名满), ...
- 计算机网络-TCP/IP HTTP Conclusion
1.1OSI 与 TCP/IP 各层的结构 1.2 三次握手和四次挥手,TCP为什么三次握手,四次挥手 在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B:第二次消息B使用ack对A的 ...
- [计算机网络]TCP/IP协议-运输层
TCP/IP体系结构 TCP/IP四层协议 五层协议 协议 作用 应用层 应用层 HTTP超文本传输协议.FTP文件传输协议 - 运输层 运输层 TCP(面向连接的,可靠的).UDP(无连接的,不保证 ...
- 计算机网络 - TCP/IP模型
图片来自网上资料
- 计算机网络及TCP/IP知识点(全面,慢慢看)
TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是网络的网络. 2.分类: 根据作用范围分类: 广域网 WAN (Wide Area Networ ...
- TCP/IP(一)之初识计算机网络
前言 在一段时间里,都很想知道一台电脑怎么跟另一台电脑通信的,我发送一个qq给女朋友,怎么准确的发送过去的,又是怎么接受消息的. 接下来一段时间给大家慢慢分享关于计算机网络的相关知识. 一.局域网.广 ...
- 计算机网络三:域名、IP地址和TCP/IP协议
一.域名 域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...
随机推荐
- kubernetes/k8s CRI分析-kubelet删除pod分析
关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...
- connect()函数阻塞问题
方法一:采用select 在学习嵌入式Linux网络编程中,很多同学都发现了一个问题,那就是调用connect函数时,如果服务端关闭,客户 端调用connect()函数时,发现阻塞在那里,而且利用ct ...
- [08 Go语言基础-for循环]
[08 Go语言基础-for循环] 循环 循环语句是用来重复执行某一段代码. for 是 Go 语言唯一的循环语句.Go 语言中并没有其他语言比如 C 语言中的 while 和 do while 循环 ...
- CVE-2020-17523:Apache Shiro身份认证绕过漏洞分析
0x01 Apache Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 0x02 漏洞简介 2021年2月1日,Apache Shiro官 ...
- 快速解决flutter中package包版本冲突问题
当你的项目需要安装的依赖包越多,遇到包冲突可能性就越大,尤其是当依赖的包有重大更新时.比如下图: 上面可以看到是xml跟intl_translation两个包有冲突,因为他们依赖两个不同的petitp ...
- C# volatile 的使用
class Program { private static volatile bool bChanged; static void Main(string[] args) { Thread t1 = ...
- (转)致Java程序员:你离架构师还差多远?
转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...
- linux————mysql————修改密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('输入新密码');
- Object 的wait()方法
The java.lang.Object.wait() causes current thread to wait until another thread invokes the notify() ...
- NIO中的File
package nio; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files ...