计算机网络学习(二):数据链路层和网络层
第三章 数据链路层
数据链路层基本概念及基本问题
基本概念
三个基本问题
封装成帧
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。
为了提高帧的传输效率,应当使帧的数据部分长度尽量大于首部和尾部的长度。最大传输单元MTU(Maximum Transfer Unit):帧数据部分长度上限。
MTU:
透明传输
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。
发送端的数据链路层如果在数据中出现控制字符SOH (start of heading)或EOT,那么会在前面插入一个转义字符ESC(ascii编码是1B),如果数据中出现了转义字符,那么会在转义字符前面插入一个转义字符
字节填充或字符填充---接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
差错检测
比较常用的是循环冗余检测(CRC)
通过模2运算来计算。模2运算是一种二进制算法,也包括模2加法,减乘除,与四则运算不同的是模2运算不考虑进位与借位。
CRC采用模2除法来计算,实际上就是异或(相同为0,不同为1)。
如图,要传的数据是101001,加上三个0,,除以一个数,这个数是4位,除数的位数是加上0的个数再多一位,余数就作为FCS(添加到数据后面的冗余码)
接收方收到后,将数据和FCS拼起来,这里即101001001,同样对1101做模2除法,如果余数不是0,那么数据就错误,丢掉。
发送方和接收方会提前商议出一个多项式,这个多项式作为CRC的除数。
特点:
1. 这种检测方法并不能确定究竟哪些比特出现了差错
2. 只有经过严格的挑选,并使用位数足够多的除数P,检测的准确度才会很高。
MAC帧格式
目的地址和源地址是MAC地址,类型用来指明上层所使用的协议,IPV4( 0x0800 ),ARP:0x0806,IPV6: 0x86DD等
以太网帧最短是64个字节,除数据报的字节外,其余占了18个字节,所以数据报至少46个字节。如果小于46字节,则应在数据字段后面加入整数字节的填充字段,以保证MAC帧大于或等于64字节
MAC地址的是48位二进制,其中前24位是IEEE的注册管理机构RA向厂家分配的地址字段,后24位厂家自行指派。CMD命令查看: ipconfig /all
无效的MAC帧
出现以下情况会丢弃MAC帧
1. 帧的长度不是整数个字节
2. 用收到的帧检验序列FCS查出有差错
3. 数据字段的长度不在46到1500字节之间
4. 受限的MAC帧长度为64到1518字节之间
帧间最小间隔为9.6us,这是为了使刚刚接收的数据帧的接受缓存来得及清理,做好接收下一帧的准备。
两种情况下的数据链路层
使用点对点信道的数据链路层 PPP
使用广播信道的数据链路层 CSMA/CD
以太局域网
扩展以太网
高速以太网
以太网 集线器 网桥 交换机
第四章 网络层
负责在不同网络之间 尽力转发数据包,基于数据包的IP地址转发
不负责丢失重传,不负责顺序。
网关一般使用第一个IP地址,
计算机通信过程
发送端
- 应用层:应用程序准备要传输的文件
- 传输层:将文件分段,并编号
- 网络层:添加目标的IP地址和源IP地址
- 数据链路层:使用自己的子网掩码,判断自己在哪个网段,目标地址在哪个网段,然后有两种情况
- 如果在一个网段,通过arp协议广播解析目标IP地址的MAC
- 如果不在一个网段
ARP协议
将IP地址通过广播 目标MAC地址是FF-FF-FF-FF-FF-FF 解析目标IP地址的MAC地址。
交换机决定了下一条给谁,IP才决定了数据的起点和终点,路由器根据IP转发
arp -a 查看arp的mac缓存, 如果是动态的就表示一会不用了就会删除,arp只能解析本网段。
相关软件:
局域网扫描器,可以扫描mac地址。
arp欺骗:告诉发广播的计算机,自己的mac就是对方希望请求的mac
网络执法官: 控制本网段计算机之间的连通,告诉源目标假的mac地址
P2P终结者:控制本网段计算机访问网络的流量和网站,利用arp欺骗,告诉源目标地址网关是自己。
添加静态mac命令: arp -a ip mac
在本地连接点修复,可以清除arp静态缓存
ICMP协议
网际控制报文协议,用来测试网络层是否畅通,检测故障,如ping,pathping,tracert
ping命令
ttl: 生存周期,过一个路由器减少1,到0就不转发了,防止出现数据包循环
不同的操作系统ttl的初始值也不同,可以以此来猜测对方是什么系统
linux: 64
windows:128
unix:255
常用参数:
ping ip -t 一直ping
ping ip -l 200 指定数据包大小
ping ip -i 1 指定ttl长度
更改数据包ttl时间,跟踪数据包途径的路由器
pathping 跟踪数据包路径,计算丢包的情况
请求超时和目标主机不可到达
去的时候没接受,出现目标主机不可到达
去的时候能接收,回来的时候找不到目标地址,会出现超时
tracert ip ,traceroute ip 在路由器上跟踪数据包路径的命令
tracert和traceroute虽然都是路由跟踪,但是两者探测方法及探测的数据类型不同。默认情况下,traceroute是向目的地址的某个端口(大于30000)发送UDP数据报,tracert是向目的地址发出ICMP请求回显数据包。
共同点:都是通过设置发送包的TTL的值从1开始、逐次增1的方法来探测。
IGMP
点到点
广播:只能在同一网段
组播:也叫多播
IP数据包
一个IP数据包由首部和数据两部分组成
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须有的
- 在首部的固定部分的后面是一些可选字段,其长度是可变的(大多数是没有的 )
一行四个字节,固定部分五行,20个字节。
版本: 标识TCP/IP协议版本, IPV4, IPV6 ,4就是v4,6就是v6
首部长度:加上可变部分
区分服务:给数据包加标记,默认是0x00
总长度:用来表示整个数据包的长度最大是2的16次方减一,65536字节
网络层 数据包 65535字节
数据链路层 数据最大1500字节 最大传输单元MTU,所以需要分片
数据包如果不分段,去掉首部,则最大只能为1480个字节
数据包分片:将大数据包分成多个小数据包,每个都写上ip地址,单独选择路径,接收端将多个数据包合并成一个然后给网络层
泪滴攻击:向目标计算机发送重叠或过大的数据包
标识:给每个分片的数据包标号,标识一个完整的数据包,同一个号同一个包
标志:标记数据包是分片的还是完整的,占三位,目前只有前两位有意义,最低位是MF(More Fragment),为1表示后面还有分片,为0表示是最后一个分片,中间一位是DF(Don‘t Fragment),当DF=0时才允许分片,一般的数据包不分片
片偏移:每个数据包的偏移量记录了分片第一个字节占整个数据包的第多少个字节
偏移单位是8的原因:RFC的规定,IP的规定
它总长度(16bit)”和“偏移(13bit)”两个字段所决定的,总长度定义了IP包的最大长度为2^16=64KB,偏移说明了IP分片时它最多能表示2^13个偏移单位,这样偏移单位就是2^16/2^13=2^3,即为8B了,如果偏移单位不是8B,如选4B,则13bit的"偏移"就不能表示出IP的最大长度了
生存时间:TTL,应对环路
协议: 指出应将数据部分交给哪一个进程,比如TCP交给运输层,ICMP交给网络层
协议号:
ICMP 1
IGMP 2
TCP 6
UDP 17
IPV6 41
OSPF 89
首部检验和:只检验首部
IPV6已取消可变部分
静态路由:管理员告诉路由器所有没有直连的网络下一条给谁
缺点:适用于小规模网络,不能够自动调整路由
动态路由:路由器自己学习路由表,RIP,OSPF协议
RIP: 周期性广播路由表,跳数,30秒更新一下路由信息,最大跳数 15跳
使用抓包工具排除网络故障
wireshark抓包,查看有没有广播多播一直占用网络
frame整个帧
ethernet 以太网帧 数据链路层
internet 网络层
transmission 传输层
smb里面的数据