CCNA初网基础笔记—网络通信基础
个人学习笔记记录
一、通信模型介绍
【协议】网络设备遵循这一系列“约定”对数据进行处理。
- 协议使不同厂商的设备,不同CPU,不同操作系统之间,只要遵循相同的协议就能实现通信。
- 不同协议用于定义不同网络的数据转发规则。
- 局域网与广域网
4.关注于逻辑数据关系的协议通常被称为上层协议。
关注于物理数据流的协议通常被称为低层协议。
二、分层模型-OSI
应用层 抽象语言---->编码
表示层 编码---->二进制
会话层 应用程序提供会话地址 类似:QQ号码
*上三层就是应用程序对信息进程加工处理,直到可以被传输(相当于OSI"工厂"生产货物的车间);
传输层 分段(受MTU限制)、提供端口号 TCP/UDP网络层 IPV4/IPV6; 主要用于逻辑寻址–IP地址
数据链路层 核心作用控制物理层工作; 以太网、PPP、HDLC、帧中继…
物理层
注:TCP除了提供分段、提供端号之外,还提供其他的,所以可靠,但是对带宽消耗大
UDP只提供分段和端号,不可靠,但是对带宽占用小
三、分层模型-TCP-IP
四、终端之间的通信
数据链路层控制数据帧在物理链路上传输
【数据帧】数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包叫数据帧。
&这其中封装的信息决定了数据如何传输
&数据帧的传输时有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定
&为了更好的传递信息,在组装报文时,在数据载荷的前面添加的信息段统称为报文的头部
五、帧
- 帧格式
【Type字段】标识以太网帧处理完成之后发送到哪个上层协议
.
数据帧传输:数据链路层基于MAC地址进行帧的传输。
-
局域网上的帧可以通过三种方式发送.
【单播】单一源端口发送目的端。
【广播】只有IPV4使用,在IPV6没有广播
缺点:产生大量流量,导致带宽利用率降低,进而影响网络的性能。
使用场景:当需要网络中的所有都能接收到相同信息并进行处理的情况。【组播】比广播更高效
【任意播】只有IPV6使用,使用一个源主机最近的一个目的主机的单播
- 数据帧的发送与接收
六、IP报文头部
头部信息:用于指导网络设备报文路由和分片,指导网络设备如何将报文从源设备发送到目的设备。
1、 VER(版本):用于区分不同IP版本。如IPv4、IPv5、IPv6,用4bit表示,IPV4=0100
2、 HLEN(头部长度):因为头部长度不固定(Option可选部分不固定),所以需要标识该分
组的头部长度多少,用4bit表示,以4byte为单位,取值范围:5-15,即20-40byte(其他字段也是类似的计算方式,因为bit位是不够表示该字段的值)
3、 Service type(Type of Service服务类型:TOS):用来指定特殊的报文处理方式,又划分为IP precedenc和D/T/R和reserve保留字段,RFC2474的ToS取消了IP precedence字段而使用了DSCP,QoS里有描述,给QoS用来打标签。TOS字段历史:
4、 Total Length(总长度):整个IP分组的长度,可用总长度减去头部长度获得实际报文数据的长度,取值范围0-65535byte,链路只允许1500byte,所以一般都需要MTU分片
5、 Identification(ID:标识符):Fragment ID,通常与标记字段和分片偏移字段一起用于IP报文的分片。
当原始报文大小超过MTU,那么就必须将原始数据进行分片。每个被分片的报文大小不得超过MTU,而这个字段还将在同一原始文件被分片的报文上打上相同的标记,一边接收设备可以识别出属于同一个报文的分片,“类似于进程号”,有时候电信会用他来识别流量是否是同一台主机。
6、 Flags(标记):
第1位没有被使用
第2位D是不分片位(DF),Do not fragment,顾名思义,不要分片,当DF位设置为1时,表示路由器不能对报文进行分片处理
第3位M表示还有后继分片(MF),More fragment,多分片,当路由器对报分进行分片时,除了最后一个分片的MF位设置为0外,其他所有分片的MF位均设置1,以便接收者直到收到MF位为0的分片为止
7、 Fragmentation offset(分片偏移):标识某个分片在分组中的位置.
数据为何要分片(MTU):任何一个物理网络都有一个最大的传输单元,物理介质传输的能力是有限制的,不可能一次可传无限的数据帧。
以太网最大的帧长为1518, IP报文1500byte + 帧头18byte = 1518byte
注意:Ethernet以太网跟802.3以太网有所区别,802.3是由IEEE指定的标准,比较复杂用的比较少,网卡一般两种都支持。
IP数据包的MTU值在各种物理线路环境下对应的MTU取值:(注意:不包含帧头和尾)
8、Time to live(TTL:生存时间):也就是跳数的大小,即数据包能传多少跳
如ping命令里的TTL,根据操作系统的不同TTL默认最大取值也会有所不同, linxu为
TTL=255,win98为TTL=128,win7为TTL=64这都是由应用程序*决定的。
注意:TTL并不是一个真正时间值,因为分组的往返所花的时间(包括线路、路由器处理的时间),到底要设置TTL为多少是非常的困难的,所以用跳数来表示,而实际的往返时间计算保存在ICMP所封装的数据里。
最后的接收者是不需要检查该包的TTL值是否为0,因为没再转发的必要。==当报文中的TTL值为0时,报文将被丢弃。 ==
注意:该显示的TTL值是响应方的TTL值(响应方发送的响应包的TTL值,通过中间减跳后的最终显示在发送者终端上),而不是你自己的TTL值,所以通过ping看TTL值可以简单判断对方是什么操作系统
同一网段的数据转发通过数据链路层即可实现。
跨网段的数据转发使用网络设备的路由。
【分片】将报文分割成多过片段的过程。
接收端通过标识符,标记,片偏移字段对分片报文进行重组。
终端设备收到数据帧会如何处理?