网络总结

网络总结

对TCP/IP这块挺喜欢的,认真把这方面学习了,现在总结一下

首先得从链路层说起了

链路层

首先是链路层的两种封装格式:

ieee封装和以太网封装

关于ieee封装就不过多叙述,毕竟用的很少

以太网封装格式:

源mac地址(6字节) 目的mac地址(6字节) 还有类型(2字节) 最后还有4字节的校验和(这个4字节在数据的最后面)

目的mac地址一般是网关的mac地址或路由器的mac地址,链路层的mac地址是每一跳都会变的,IP是什么时候都不变的(NAT和可选项除外)

类型在链路层和IP层都存在,为了区分下一层的协议。

试想,如果不知道下一层的协议,如何判断之后的数据呢?所以这个类型很重要

以太网的容量是46-1500(除过它本身),多了分片少了补充。比如ARP就是少于46字节的,后面就会补0

 

下面说说IP层

(图片来源于网络,侵删)

版本:IPV4和IPV6,但其实中间还有很多小版本(使用概率极低)

上面的图是针对IPV4的图,IPV6还请自行研究

首部长度:IP头部的长度,一个B代表15字节,4个就是60字节,所以说,这个规定限制了IP的首部长度最多为60字节

而固定部分有20字节,所以,可选项最多40字节。

区分服务:这块已经基本不用了,本来是优先级,时延,吞吐量等等。既然不用了,就不细述

总长度:是IP包的报头+IP数据段,总长度最大为65535

下面这一行主要是为IP分片准备的

标识:标识是哪个包,这个相当于一个ID号,无论怎么分片,这个ID号不会变的

标志:第一个标志bf,表示不分片,如果需要分片就丢弃此包,并回送ICMP差错报文,MTU路径探索就是基于这一原理的

下面标志是mf,表示是不是最后一片,最后一个B未使用

片偏移:这个就不多说了,通过偏移量找到位置

生存时间:本来设计的初衷是设计成时间,但是发现这样很麻烦,就改成了每经过一个路由器,TTL-1,如果为0或者1就丢弃

并返回ICMP报文,这个选项是为了防止某些报文在路由器中游荡,或者环路。当然traceroute也是根据生存时间做出来的

之后也会详细叙述

协议:和上文的以太网头的类型一样,是下一层的类型

首部校验和:和以太网的4字节一样,计算头部的校验和,如果到达对端,发现校验和不对,丢弃

 

下面说说IP层的几大协议

1.ARP

ARP也是一个特别大的协议,而且不安全

ARP是一个广播,在局域网下的所有主机都会收到这个包,如果发现是自己的就返回ARP应答包,否则就丢弃。

顺带提一句,ARP应答包是单播,只有ARP请求包是广播

注意,因为并不知道目的mac是多少,所以,以太网的目的mac是ff:ff:ff:ff:ff:ff

ARP包中的目的地址是00:00:00:00:00:00

ARP封包格式很简单,就不过多叙述了,而且,ARP包前面的那些东西都是固定好的,比如那个6&&4

ip封包后,要得到mac,就起查看路由表,看是不是一个网中的,若是,直接ARP得到mac地址并发送,若不是,则发送给默认网关(所以刚刚为什么说一般是路由器的mac地址)

系统一般都有优化,有一个ARP缓存,这个缓存可以在一定时间内,不用查询路由表,直接找到mac并发送。

这个ARP表在Linux系统下通过arp -a可以查看,如果本机收到别的ARP请求包,不论是不是发给自己的,这个主机都会把这个包的IP以及对应的mac缓存起来。

而且,这个表是没什么安全措施的,所以,容易被攻击,比如把别人的数据发送给你,然后通过你,引入到路由器。

这个就是代理了(iptables开启转发),但是是在别人不知道的情况下,当然,ARP攻击也是这个原理

 

ARP代理

当主机a想要获得www.baiidu.com的mac的时候,主机a  ping www.baidu.com,这个时候网管替www.baidu.com做出应答,并给a说,我就是你想要的mac,并把自己的mac给a,这样,主机a就认为网关就是www.baidu.com,当网关收到a发给www.baidu.com的消息时,就把这个转发给百度,这就是ARP代理

https://www.cnblogs.com/flyingzl/articles/2095008.html

当然,ARP代理还有些问题,比如根部不能上网,详情请自行百度

免费ARP

免费ARP就是在主机刚刚获取IP等基本信息后,发送一个IP为自己的ARP包,看看有没有主机回复,如果有主机回复,则说明IP冲突,就要换IP,如果没有冲突,也能把自己的IP和mac缓存到其他所有主机中

一般来说,现在的IP都是DHCP服务器(小型局域网一般路由器上有这个功能,大型的网就有专门的DHCP服务器)分配的,不存在IP冲突这种问题

 

2.ICMP协议

ICMP协议是IP层的,但是数据是放在IP层的后面

ICMPæ¥å¤´æ ¼å¼

(图片来源于网络,侵删)

ICMP协议有两种形式:

1.ICMP差错报文

2.ICMP查询报文

类型为3的都是差错报文,网上有详细的图,请自行搜索

当发送一份ICMP差错报文时,报文后始终包含IP头部和IP数据报的前8个字节

示例:TYPE 3  CODE 3表示端口不可达

然后就会在下面写上上次发送的IP和IP数据报的前8个字节

这8个字节其实是看端口的,是看是哪个端口的,看是哪个进程发的

(所以,这里可以加一句,如果不是IP分片的第一片,如果丢失或者怎样,是不会回送ICMP报文的,因为都不知道端口,回送没有意义)

以下情况不会产生差错报文:

1.ICMP差错报文,如果本来都是差错报文了,则不会产生,但是ICMP查询报文会产生差错报文

2.目的地址是广播或者多播(很多都是为了防止网络风暴)

3.不是IP分片的第一片,看上述示例

下面说说ping程序

每个主机中,其实系统都有一个ping的服务器

这个时候就要用到标识符和序号这两个东西了

Linux操作系统的实现是标识符是进程号,序号是从1开始的。选项数据里边有时间戳

当服务器收到后,会原封不动的把数据返回

并且,如果IP中有选项,比如df等等,也会原封不动的封装返回*

这个时候,就会有有意思的事情发送,比如你在这边发送过去,一直回不来,可能对方服务器已经收到了,但是因为df位为1,在发不过来,然后给对面服务器回送ICMP报文。因为MTU是单向的,客户端到服务器和服务器到客户端的MTU很可能不一样!想想一个入口,一个出口,都是看出口的,肯定不一样

Windows实现ping就比较玄学了,但是也可以,可能是程序员偷懒了吧

Windows中的标识符是一样的,序号是统一排的。并且选项数据是随机的,不是时间戳,应该在发送过去的时候,Windows这边记录的,回来的时候计算

 

下面就来介绍一下IP可选项

简单科普,因为大部分防火墙为了安全考虑,将TCP IP的可选项统统关闭

1.IP记录路由选项

在可选项中开启IPRR选项,这个选项可以把每一次经过的节点记录下来

Windows中ping程序的-R参数有这个功能,但是我的Linux系统没有,大家可以多测试一下

这个功能基本上已经废除了,因为首先,多出来的就40字节,而一个IPv4就4个字节,所以除过可选项本身部分,最多可以存9个IP

现在一般使用traceroute

这个东西是通过上面说的TTL实现的,Linux使用的是UDP高端口实现,Windows直接使用ICMP实现(ICMP request)

2.IP源站选路的操作机制

这个操作就比较牛了,能改变IP地址,就是一开始在可选项中放入几个地址,然后可以变换地址

其中这个选路分为严格源站和宽松源站,严格源站要保证每一跳的IP地址就是到达主机的这个,而宽松源站没有那个保证

详细的自行百度

3.时间戳

这个没看到用过,就是记录时间的

下面说说IP选路

1.先选明细策略路由

2.明细路由

3.策略默认路由

4.默认路由

还有一个注意,选路时,找的是最匹配的,比如两个IP一样,但是一个是/24,另一个是/32,那当然选/32

ICMP重定向差错也会更新主机的路由表

这个就是说,本来你走的一个路由,但是这个路由发现有更好的,就会回ICMP重定向差错

 

UDP

UDP报文格式

(图片来源于网络,侵删)

源端口:发送方的端口号,一般这个是由操作系统决定的

目的端口:一般就是80,443等知名端口,当然也有别的

UDP长度:最多65535

校验和:这个就是UDP头部+数据的校验和

注意:这个校验和也是首部+数据

而且,这个校验和还会计算伪首部,这个东西中有源地址,目的地址,等等,只是为计算是否真的到达目的地(IP层和以太网层也会进行计算是否到达目的地)

 

UDP是无连接的,正因为这个特性,UDP的传输速率快

UDP三大典型应用:

1.查询类,DNS

2.数据传输(这个一般上层会封装自定义协议,为了保证可靠传输),eg:TFTP

3.语音和视频

这里说一下IP分片

为什么要在这里说呢?因为,TCP几乎不分片,TCP有mss和MTU,几乎能保证部分片,因为分片后丢包导致重传,哪怕是丢一片,都会重传,代价是很大的,而且,重传是上层负责的,所以要避免分片

分片只在出口处,入口处不会分片,重组只在接收方。分片和重组对上层透明

其实关于UDP这块还有很多,比如不建议使用UDP广播,上层应用自定义协议(因为TCP确实有点慢)等等,感兴趣的自己了解一下

总结:先写这么多,本来准备把TCP也总结一下,但是感觉写前面的量也挺大,下次总结TCP吧~

如果有什么疑惑,欢迎留言

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值