计算机网络1

概述

电脑指标

  • 内存:CPU使用的所有数据都来于内存,不论是软件程序还是文件数据,都必须存入内存后才能使用,内存除了频率/带宽的考虑外,容量也很重要,因为所有数据必须加载到内存中才能读取,如果内存容量不够大,会导致某些大容量的数据无法被完整的加载,此时内存中某些没有用到的数据需要暂时被释放掉,因此,越大内存的系统越快速,因为系统不用常常释放一些内存中的数据
  • 字长(word size):CPU每次能够处理的数据量称为字长,分为32位和64位,就是现在电脑的32位和64位

网络

  • 局域网:覆盖范围小,自己花钱买设备,带宽固定 10M 100M 1000M 最远100m
  • 广域网:距离远大于100m,花钱租带宽
  • internet
  • 数据的返回:网页上的数据是一块块发送给请求端的,成功接收后发送反馈信息,链路就可以清理掉缓存,数据都接受完毕后,会拼接恢复网页

OSI参考模型

  • 应用层(数据):所有能产生流量的程序,确定进程之间通信的性质以满足用户以及提供网络与用户应用
  • 表示层(数据):在传输之前是否进行加密或压缩处理,用二进制或ASCII码表示,解决用户信息的语法表示问题,加密解密
  • 会话层(数据):查看是否有木马,查看需求端和网站之间的连接,提供包括访问验证和会话管理
  • 传输层(段):可靠传输,流量控制,不可靠传输(一个数据包,不需要建立回话,例如像DNS查询网站的IP地址)
  • 网络层(包):负责选择最佳路径,规划IP地址(IPV4和IPV6的变化只影响网络层)
  • 数据链路层(帧):帧的开始和结束,透明传输,差错校验(只进行校验,校验通过接受,不通过拒收,纠错由传输层解决)
  • 物理层(比特流):定义网络设备接口标准,电气标准(电压),如何在物理链路上穿的更快

网络排错

  • 模型的每一层都为上一层提供服务,一旦某一层崩了,上面的所有层就崩了,所以排查要从最下层排查
  • 物理层排查:查看链路状态,发送和接受数据包是否正常
  • 数据链路层排查:当有两个相同的MAC地址访问造成MAC地址冲突,ASDL拨号欠费,发送接收双方的网口速率没有协商一致,计算机连接到其他VLAN中
  • 网络层排查:IP地址,子网掩码,网关配置错误,存在不可达的网关导致数据无法达到指定位置
  • 应用层(三层合并):应用程序配置有误,加上了不合适的代理访问

TCP/IP

参考模型 TCP/IP协议栈
应用层,表示层,会话层 -- HTTP FTP -DNS
传输层 -- TCP - UDP
网络层 -- ARP,IP,ICMP,IGMP
数据链路层,物理层 -- Ethernet/ATM/FRAME RELAY

TCP/IP包
MAC头部 IP头部 TCP头部 数据块
|------以太网包-------------|
       |-------IP包--------|
       
服务器S     路由器R1    集线器    客户端
 IP表       IP表       以太网表   IP表   
 IP         IP         以太网    IP
 以太网      以太网              以太网
    <-----       <-----     <-----
    R2 S 数据     R1 S 数据      R1 S 数据
IP协议根据IP地址找到包的传输方向,找到下一个路由器的位置,委托以太网协议将包传输过去,IP协议会查找下一个路由器的以太网地址(MAC地址),将地址写入MAC头部当包传到下一个路由器,又会继续查出下一个路由器的MAC地址,更新MAC头部。TCP/IP中IP和以太网的分工,以太网也可以换成无线局域网,ADSL,FTTP等,都可以替代以太网帮助IP协议来传包。这样将IP与负责传输的网络分开,可以更好的根据使用需要的各种通信技术。
IP协议负责寻找传输方向,以太网协议负责传输

数据传输过程

应用层,表示层,会话层 <-> 客户端发出上层数据
传输层 <-> TCP头 + 上层数据 (数据段或消息)
网络层 <-> IP头 + TCP + 上层数据 (数据包)
数据链路层 <-> MAC头 + IP + TCP + 上层数据 + FCS(差错校验) (数据帧)
物理层 <-> 010110101001000010 (二进制bit)
# 各数据组成
1.目标MAC地址源MAC地址(链路层) + 2.目标IP源IP地址(网络层) + 3.源端口目标端口(传输层) + 4.数据 + 5.FCS
数据帧:12345
数据包:234
数据段:34

性能指标

  • 速率:连接在计算机网络上的主机在数字信道上传送数据位数的速率,data rate,bit rate(比特率),单位b/s,kb/s,Mb/s,Gb/s
  • 带宽:数字信道能传送的最高数据率,单位b/s,kb/s,Mb/s,Gb/s。宽带10M就是带宽为10Mb/s, 而网速是以字节Byte为单位,所以需要带宽/8 ,在100KB/s左右, 20M/5M -> Mbit/s -> 每秒2.5MB/每秒625KB
数据容量使用二进制形式 1GB=1024*1024*1024 B
速度单位用十进制表示 1GHz=1000*1000*1000 Hz CPU频率为3.6GHz,表示这块CPU一秒内可以进行3.6*10E9工作
  • 吞吐量:在单位时间内某个网络总的数据量,b/s,Mb/s
  • 时延:包括发送延时,传播延时,处理延时,排队延时。发送延时等于数据块的长度(bit)除以信道带宽(bit/s),带宽越大,发送延时越小,信号波长越短,信道上的数据量就越大。
  • 传播延时:信道长度(介质长度米)/ 信号在信道上的传播速率(m/s由传输介质决定,网线,光纤)
  • 时延带宽积:传播时延 * 带宽,描述信道上一共有多少数据,带宽越大,相同的时间内数据量越多
  • 往返时间RRT(Round Trip Time):从发送方发送数据开始到接收方和接受导数据的时间 ping可以看
  • 信道利用率:有数据通过的时间/有+无数据通过的时间
  • 网络利用率:信道利用率的加权平均值 时延D=D0/(1-U) D0:空闲时的实验 U:信道利用率,当信道利用率接近于时,网络时延无限增大,也就是当带宽使用率接近于理论值时,延时会非常高。

命令

/? 查看命令参数
ipconfig /all # 查看MAC地址
netstat -n # 查看建立的会话

数据链路层

基本概念

  • 数据链路层不关心物理层解决的问题,只关心帧头帧尾和数据校验
  • 数据链路层的信道类型:点对点信道,使用一对一的点对点通信方式。广播信道:使用一对多的广播通信方式,信道上连接的主机众多,需要使用专用的共享信道协议来协调主机的数据发送。
  • 链路(link):一条点对点的物理连线,中间没有其他交换节点
  • 数据链路(data link):处理物理线路,还有通信协议控制数据传输,把实现了这些协议的软硬件加到链路上,就构成了数据链路。--当前最常用的方式是使用适配器(网卡)来实现这些协议,包括数据链路层和网络层两层功能
  • 帧:网络层给数据包加上接收端和发送端的IP地址,链路层加上帧头帧尾,MAC地址和校验值
网络层  IP数据包  IP数据包
          装入     取出
链路层  帧【 】    帧【】
物理层  1010...0110  1010...0110
          |____________| 链路

链路层解决的问题

封装成帧(farming)
  • 在一段数据的前后加上头部尾部构成帧进行定界
        帧开始   IP数据报   帧结束
开始发送 帧首部 帧的数据部分  帧尾部
         |<------帧长----------->|
         帧开始符SOH:0000 0001    帧结束符EOT:0000 0100
透明传输
  • 当传输过程中出现SOH或EOT时会导致判断失误,接受错误,可以在SOH前插入一转义字符ESC(十六进制1B)
  • 字节填充法-接收端的链路层在将数据发往网络之前删除插入的转义字符,如果转义字符字符也在数据中,那在之前再插入转义字符
  原始数据:ESC EOT  ESC SOH  ESC ESC 

差错检测

  • 数据在传输的过程中可能产生比特差错:1变0,0变1,传输错误的比特占传输总比特数的比率为误码率BER,与信噪比关系很大,为了保证数据传输的可靠性,需要加入差错检测机制
  • 链路层对于传输的帧,采用CRC(Cyclic Redundancy Check循环冗余检测)技术
传输的数据 101001 冗余码 000
                 110101 Q 商
P 除数 1101 | 101001000 2^nM 被除数 异或
              1101
               1110
               1101
                0111
                0000
                 1110
                 1101
                  0110
                  0000
                   1100
                   1101
                    001 余数R 作为FCS 中间使用异或操作
最终发送的数据是 101001 001
  • 在数据后面加上冗余码称为帧检测序列FCS(FRAME CHECK SEQUENCE)
  • CRC是检错方法,FCS是添加在数据后面的冗余码
  • 在检测时用加上FCS的数据除以除数,如果余数为0说明没有差错,不为0说明出现差错,直接丢弃
  • CRC只能做到无差错接受,要做到可靠传输,需要加上确认和重传机制,它不是一种无传输差错的检测机制

使用点对点的链路层

  • 用户拨号电话线接入上网时,用的是PPP协议,点对点协议(Point-to-Point Protocol)
  • PPP协议应该满足简单,封装成帧,透明,差错检测,网络层地址协商,数据压缩协商等,不需要满足纠错,流量控制,半双工或单工链路
  • PPP称为因特网的正式标准【RFC 1661】
OSI
PPP有三个组成部分:网络控制协议(NCP),允许点到点使用多种网络层协议
链路控制协议(LCP):建立并维护数据链路连接
高级数据链路控制协议(HDLC):异步或同步串行介质
  • PPP协议帧格式
     <--首部----->  IP数据报  尾部
     F  A  C  协议  信息部分  FCS Flag
     7E FF 03                    7E
字节  1  1  1   2  不超过1500  2  1
标志字段Flag=0X7E 十六进制 01111110
地址字段Address=0XFF 不起作用 
控制字段Ctrl=0X03 所有PPP帧的长度都是整数字节 固定的,因为就一个设备,配不配地址无所谓
# 字节填充
当信息部分中出现了标志字段,就用字节填充 0X7E->0X7D,0X5E  0X7D->0X7D,0X5D
# 零比特填充
PPP用在SONET/SDH时,使用同步传输,一连串连续的比特,采用令比特传输发实现透明传输
发送端发现有5个连续的1,就填入一个0,接收端在扫描中发现有5个连续的1就把后一个0删除
010 01111110 001010 中间会被认为标志字段F
010 011111010 001010 填充0
  • PPP网络的工作状态:当用户拨号进入ISP时,路由器的调制解调器对拨号做出确认,建立一条物理连接。PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。这些分组及其响应选择一些PPP参数和进行网络层配置,NCP给新接入的PC机分配一个临时IP,是PC机称为因特网中的一个主机,通信完毕后,NCP释放网络连接,收回IP地址,然后LCP释放数据链路层连接,最后后释放物理层连接。

使用广播信道的链路层

  • 局域网的拓扑
     pc                     pc   pc
     |                      |    |
PC-集线器-pc 星形网  总线网 ————————————  环形网  树形网
  • 局域网的特点:网络为一个单位拥有,地理范围和站点数有限。优点:具有广播功能,一个站点可以方便访问全网,局域网上主机共享局域网上的硬软件资源,便于系统的扩展演变,设备位置可灵活调整改变,提高了系统可靠性可用性和生存性
  • 以太网:最初的以太网是将许多计算机都练到一根总线上
---------------------- 。匹配电阻
  |  |  |  |  |  |
  A  B  C  D  E  F
总线上每一台计算机都能检测到B发送的信号,但由于只有D的地址与数据帧的首部地址一样,D才会接受这个数据帧,其他的检测到不是给自己发送的,就会丢弃掉这个数据帧,这样就实现了一对一通信
  • CSMA/CD(CARRIER SENSE MULTIPLE ACCESS WITH COLLISION DETECTION) 载波监听多点接入/碰撞检测协议
多点接入:许多计算机以多点接入的方式连接在一根总线上
载波监听:每一个站在发送数据之前要先检测一下总线上是否有其他计算机发送数据,如果有就暂时不发送数据,以免发生碰撞
碰撞检测:计算机边发送数据边检测信道上信号电压的大小,当几个站同时发送信号时,信号电压会相互叠加,当一个站检测到信号电压超过一定门限值时,就认为至少有两个站在同时发送数据,产生了碰撞,也叫做冲突检测
当检测到碰撞后,数据需要立即停止发送,免得浪费网络资源,等待一段时间后继续发送
# 电磁波在总线上的有限速率的影响
当某个站检测到总线空闲时,可能并非真正空闲,A向B发出的信息,要经过一段时间才能达到B,如果B在检测到A到B的信息之前就发出了自己的帧,必然在某个时间会和A发出的真产生碰撞
# 特性
使用CSMA/CD协议的以太网不能进行全双工通信(同时发信号)而只能进行双向交替通信(半双工通信)
每个站在发出数据后的一小段时间内,存在着碰撞的可能性,这种可能性使得以太网的平均速率远小于最高速率(带宽)
# 争用期
发出数据的站,最多经过2t(两倍的端到端往返时间)就知道是否发生了碰撞
争用期:2t,或碰撞窗口,通常取51.2us,对于10Mb/s的以太网,在争用期内可发送512bit,64字节
所以认为发送数据的前64字节不放声冲突,就不会再发生冲突了
最短有效帧长:64字节,凡是长度小于64字节的帧都是由于冲突而异常种终止的帧
# 二进制指数类型的退避算法
在发生碰撞停止发送数据后,要推迟一个随机事件才能在发送数据
k=min[重传次数,10],从[0...2^k-1]随机取一个数记为r,则重传时延就是r*基本退避时间(2t)
当重传达到16次就丢弃该帧,向高层报告

以太局域网

  • 两个标准:可以将符合802.3的局域网成为以太网,严格来讲是符合DIX ETHERNET V2标准的局域网
  • 以太网与数据链路层的两个子层:逻辑链路控制层(LLC), 媒体接入控制MAC层(MEDIUM ACCESS CONTROL),与传输媒体有关的内容都放在MAC层,TCP/IP中经销航使用的局域网是DIX ETHERNET V2而不是802.3,因此802委员会指定的LLC作用已经不大了
  • 提供的服务:以太网提供的服务是不可靠的交付,如果高层发现丢失了一些数据就进行重传,但以太网不知道这是一个重传的帧,而是当做一个新的数据帧来发送
  • 星形拓扑:在星星的中心增加了一种可靠性非常高的设备,集线器(hub),使用集线器的以太网仍是一个总线网,工作站还是使用CSMA/CD协议,并共享逻辑上的总线
  • 10BASE-T这种双绞线通信距离不超过100m,达到10Mb/s的速率,降低了成本,提高了可靠性,他为以太网在局域网中的统治地位奠定了基础
局域网结构
客户端
 |----集线器 - 交换机 - 路由器 - 互联网接入路由器 - 接入网 ---》 互联网
 集线器将信号发送给所有链接在他下面的线路
 # 交换机
        |- 。。。。                     - 集线器              
 交换电路|-内存 - MAC - PHY(MAU)* RJ45 - 端口2 00-60-97-A5-43-3C
        |                              - 端口7
 。。。。
 MAC地址表
    MAC地址  端口  控制信息
    00-      2     。。
 信号达到网线由PHY模块接受,会将网线中的信号转化为通用格式,传递给MAC模块,MAC将信号转换为数字信息,通过包末尾FCS检验,没问题放入缓冲区,和网卡相同,网线接口和后面的电路部分一起成为一个端口,交换机的一个端口相当于一张网卡,和网卡只接受特定MAC地址的包不同,交换机会将所有包放入缓冲区,因此交换机端口不具有MAC地址,再查询这个包的接收方MAC地址是否在MAC地址表中,将包通过交换电路发送到对应的端口上,例如包可以从2号端口到7号端口
信道利用率
争用期长度2t,帧长L(bit),数据发送速率C(b/s),帧的发送时间为L/c=t0(s)

|-------争用期-------------------|----占用期------------|
                                |----发送成功--|
<---2t---><---2t--->...<---2t---><-----t0-----><--t---> 发送一帧所需要的总时间
# 以太网的信道利用率
a=t/t0 
a->0 表示一旦发生碰撞马上就能检测出来,并立即停止发送,信道利用率很高
a越大,表示争用期所占的比例越大,每一次碰撞都会浪费许多新导资源,利用率明显降低
# 参数要求
当速率一定,以太网联线长度不能太大,否则t会很大
以太网帧长不能太短,否则T0会太小
# 最大值
理想情况下,无任何碰撞基线信道利用率
Smax=t0/(t0+t)=1/(1+a)
MAC地址
Media Access Control
局域网中硬件地址又称为MAC地址,物理地址
IEEE的注册管理机构RA负责向各厂家分配地址字段的前三个字节(高24位),后三个字节(低24位)由厂家自行制定,称为扩展标识符,要保证适配器无重复地址
一个地址块可以生成2^24个不同地址,这种48位地址称为MAC-48,EUI-48
MAC地址实际上就是适配器地址或适配器标识读EUI-48
# 适配器检查MAC地址
适配器从网上收到一个MAC帧后会用硬件检查MAC帧中的MAC地址,如果是本站的帧就接受,否则就丢弃
包括:单播帧(unicast)一对一 
广播(broadcast)帧:一对全体
多波帧(multicast):一对多
# MAC帧格式
字节
8             6        6     2       数据长度:46~1500     4          IP层
插入字节  | 目的地址  源地址  以太类型   数据(IP数据报)    FCS         MAC层
         |           MAC帧                                 |        物理层

以太类型:标志上一层用的是什么协议,以便把收到的MAC帧的数据交给上一层的这个协议
    TCP/IP中只使用0800和0806两种 十六进制
    0000-05DC:IEEE 802.3
    0800:IP协议
    0806:ARP协议
    86DD:IPv6
数据字段:MAC客户端数据字段,数据字段最小长度=最小长度64字节-18(首+尾)= 46,当数据字段不足46时,应在其后加上证书字节的填充字段,保证MAC镇长度不小于64字节
插入字节:插入字节的前7个字节是前同步码,用来迅速实现MAC帧的比特同步,最后一个字节是帧的开始定界符,表明后面的信息就是MAC帧
# 无效的MAC帧
帧的长度不是整数字节,帧检测序列FCS查出错误
数据字段不在46-1500之间
有效MAC帧长度不在64-1518之间,无效帧就直接丢弃,以太网不负责重传
# 最小间隔
帧的最小间隔是9.6us,相当于96bit的发送时间,一个站在检测到总线空闲时,再等待最小时间才能再次发送,为了让刚刚收到的接受缓存来得及清理,做好接受下一帧的准备
网卡概述
                      应用程序
                      协议栈
                      网卡驱动
                      扩展总线接口
                         |\
                  缓冲区  用于临时保存要收发的包的内存空间
ROM 存放MAC地址    MAC   控制碰撞检测,重发等以太网收发操作的部分
                  PHY(MAU)发收和接受信号的电路
                  RJ-45接口   连接网络的插座
                          |/  LAN网线
网卡的ROM保存了全世界唯一的MAC地址,在生产网卡时写入
网卡中保存的MAC地址会由网卡驱动程序读取并分配给MAC模块
# 网卡发出去的包
报头和起始帧分界符 + MAC头 + IP头 + TCP头 + 数据 + FCS
     1               2       3      4     5      6
   16 网卡负责的部分
   23 IP负责的部分
   4 TCP负责的部分
   5 应用程序生成
  报头(56bit):10101010比特序列,发送方将数据信号 + 时钟信号 发送,报头就是要加上用来测量时钟信号的特殊信号
  起始帧分界符(8bit SDF):表示包起始位置的标记
  56+8=64 最小64bit
  # 将包发送出去有两种方式
  集线器的半双工:某一时刻只能进行发送或接受中的一种操作
  交换机的全双工:发送和接收同时进行的方式
  半双工需要判断网线中是否有其他信号再进行传输,有的话需要等待,MAC模块从报头开始将数字信号按每个比特转换成电信号,再有PHY或叫MAU的信号收发模块通过网线发送出去,数字信号转换成电信号的速率就叫做网络的传输速率,10Mbit/s.
  以太网的规格是不超过100米,发生错误TCP会搞定,因此不必进行错误检测,当半双工模式发生碰撞,为了通知其他设备当前线路出现了碰撞,会发送一段时间的阻塞信号,然后所有的发送操作会全部终止。等待时间是根据MAC地址生成的随机数,重试再次发生碰撞就将等待时间延长一倍,最多重试10次就会发送错误
  交换机只将特定的包转发到特定MAC地址的设备连接的端口,其他空闲的端口可以传输其他包,而集线器会将输入信号广播到所有端口,可能会发生碰撞,无法同时传输多路信号,从设备整体转发能力看,交换机高于集线器
网卡接收包流程
使用集线器的半双工模式以太网,一台设备发送的信号会达到集线器上所有设备,信号开头是报头,通过报头波形时钟同步,遇到起始帧分界符将后面的信号转换为数字信息。
PHY-》转成通用格式给MAC模块,将信号转成数字信号,放到缓冲区,末尾还要检查FCS,接下来看MAC头部中接收方MAC地址与网卡在初始化时分配给自己MAC地址是否相同,不是就丢弃,是就放入缓冲区。通知计算机的操作是中断,网卡向扩展总线的中断信号发送信号,该信号通过中断控制器连接到CPU,当产生中断信号,CPU会挂起正在处理的任务,切换到OS的中断处理程序,调用网卡驱动,控制网卡执行接受操作。
网卡驱动被中断调用后,从网卡缓冲区中取出收到的包,通过MAC头部的以太网类型判断协议的类型,0800代表IP协议,交给TCP/IP协议栈,809B表示AppleTalk协议,交给AppleTalk协议栈。
IP模块检查IP头部是否是网卡的ip,不是说明发生了错误,不负责转发,正确就接受。,如果接受到的包是分片的,IP模块还要把包还原成原始包。交给TCP模块
TCP模块根据IP头部的接收方和发送方IP,以及端口号来查找对应的套接字,再根据套接字记录的通信状态,执行相应的操作。如果包的内容是应用程序数据,返回确认接手的包,并将数据放入缓冲区,等待应用程序读取,如果是建立或断开连接的控制包,返回相应的响应控制包,告知应用程序建立和断开连接的操作状态。

扩展以太网

  • 距离扩展:主机使用光纤对光纤调制解调器连接到集线器
  • 数量扩展:集线器级联,扩大了局域网的覆盖范围,但是碰撞域增加了,总吞吐量没有提高
  • 数据链路层上扩展:使用网桥
网桥工作在数据链路层,根据MAC帧的目的地址对收到的帧进行转发,网桥具有过滤功能,当收到一个帧时,并不是向所有接口进行转发,而是先检查此帧的目的MAC地址,再确定将该帧转发到那一个接口
网桥内部会维护一个站表(MAC表),保存了站MAC地址与接口的对应关系
优点: 过滤了通信量,扩大了物理范围,提高了可靠性,可以互联不同的物理层,不同速率的局域网
缺点:转发增加了时延,MAC子层无流量控制功能,具有不同MAC子层的网段桥接在一起时延更大,只适用于用户不太多的情况,否则会因为船舶过多的广播信息而产生网络组赛,广播风暴
# 透明网桥
透明是指局域网上的站点并不知道所发送的帧经过那几个网桥,网桥对各站来说是不可见的

高速以太网

  • 速率达到或超过100Mb/s的以太网称为高速以太网

  • 在双绞线上传送100Mb/s基带信号的星型拓扑以太网,使用CSMA/CD协议,100BASE-T以太网称为快速以太网

  特点:在全双工方式下无冲突产生 不适用CSMA/CD协议
  MAC帧格式仍是802.3标准
  保持最短帧长度不变,将网段的最大线缆长度减小到100m
  帧间间隔时间由9.6改为0.96us
  • 吉比特以太网:1000BASE-T 1Gb/s下全双工和半双工两种方式工作
  • 全双工可以同时进行发送和接受操作,使用双绞线,发送接收各自独立,信号不会发生碰撞,比半双工模式更快
  • 10吉比特以太网:使用光纤作为传输介质,制工作在全双工当时,不用CSMA/CD协议
以太网从10Mb/s - 10Gb/s证明以太网是可扩展的,灵活的(多种传输媒体,全/半双工,共享/交换),易于安装,灵活性好
覆盖的地理范围扩展到了城域网和广域网,正尝试将以太网作为宽带接入
以太网提供了双向的宽带通信,用户可以根据对宽带的需求进行宽带升级,中间不再进行帧格式转换,提高了传输效率和传输成本

网络层

网络层提供的服务

  • 网络层负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接受顺序,类似于寄快递,一个人往其他地方寄快递,每个快递有不同的路线,可能后发先到了,也可能丢件了,但网络层只管发快递
  • 数据包在internet中传输时,既有局域网,又有广域网,还有光纤,铜线,无线,还有不同的协议,这就是internet的复杂之处
  • 路由器是三层设备:能看到网络层的IP地址来选择路径进行包的转发

网络设备

  • 互联网中互联的中间设备称为中间系统或中继(relay)系统
  • 物理层中的中间设备:转发器(repeater);类似于集线器
  • 链路层:网桥或桥接器(bridge)
  • 集线器:在子网中的以太协议将包传输到下一个路由
  • 网络层:路由器(router),根据路由地址将网络包传输到下一个路由
  • 传输层/应用层:网关器(gateway),网关就是路由器接口的地址,一般是本网段的第一个地址,计算机如果不配网关,他不知道怎么往外走,路由器不配网关,路由器不知道怎么转发

网络设备与OSI模型的关系

     10.0.0.0       10.0.0.1      11.0.0.1    11.0.0.2   12.0.0.1         12.0.0.0                  
     255.0.0.0      255.0.0.0     255.0.0.0   255.0.0.0  255.255.0.0      255.255.0.0                 
                    MAC2                                  MAC3
hub1------switch1——————————router0  ————————————  router1  ——————————  switch2————————pc3
 |         |      \                 ppp协议连接                         /                            
 pc4       pc0    pc1                                                 pc2
 10.0.0.2  10.0.0.3  10.0.0.4                                      12.0.0.2      12.0.0.3
 255.0.0.0  255.0.0.0 255.0.0.0                                   255.255.0.0    255.255.0.0
 10.0.0.1   10.0.0.1 10.0.0.1 网关                                 12.0.0.1       12.0.0.1
 MAC1                                                                               MAC4
 # router0 配置路由表
 ip route 12.0.0.0 255.255.0.0 11.0.0.2 # 通过网关11.0.0.2转发到下一跳12.0.0.0这个网段
 # router1 配置路由表
 ip route 10.0.0.0 255.0.0.0 11.0.0.1
 # 从PC4到PC3的数据传输流程
 
从上往下                                                                                     从上往下
应用层 |                                                                                 |    应用层
表示层 |-> 文件                                                                   文件  <-|    表示层
会话层 |                                                                                 |    会话层
传输层  数据段 3 2 1                                                                      1    传输层
网络层  数据包 【1+ip4+ip3】 =>  1+ip4+ip3 =>         路由器 1+ip4+ip3=>        路由器  1+ip+ip3>网络层
               第一个数据包 源IP+目标IP                                                         链路层
链路层  数据帧 【FCS+1+IP4+IP3+MAC1+MAC2】 =>         |    |1+ip4+ip3+FF(PPP协议)| |1+ip4+ip3+M3+M4>链
                 加上源MAC,目标MAC
物理层  比特流 _|-|_ => 集线器 => _|-|_ 交换机 _|-|_=> |    |  _|-|_=>            | | _|-|_=>   物理层
                    原样发送      存储转发到路由器的对应网关上
# 发送端(封装)
1.应用层准备要传输的数据
2.传输层把文件进行分段并编号(数据段)
3.网络层把传输层的每一个数据包都加源IP地址和目标IP地址(数据包)
4.数据链路层把每个数据加上MAC地址(数据帧)使用自己的子网掩码判断自己和目标地址分别在哪个网段
4.1 在同一个网段 ,通过ARP协议广播的方式得到目标IP地址的MAC地址,然后封装出一个数据帧
4.2 不在同一个网段 (与运算),通过ARP协议广播得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2,由于M2和M3是点对点通信,无其他主机,因此他们之间的MAC地址就是FF
5.物理层把接收到的数据帧变成比特流
# 接收端(解封)
1.交换机switch1接收到比特流,根据数据的MAC地址对其进行转发
2.路由器0获取到交换机的数据包,能够识别其中的IP地址,根据路由表选择出口,但无法识别数据的内容
3.路由器0与1是点对点通信,PPP协议
4.pc3收到bit流后,链路层发现MAC地址是自己,就去掉MAC地址给网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来组成传递的源文件
# 路由器/交换机/集线器是否会中毒
不会,路由器无法识别数据内容,只负责传递信息,但是病毒会占用网络流量,影响网络设备

TCP/ IP协议栈

应用程序            网络应用程序(浏览器,邮件客户端,web服务端,邮件服务器)
                 Socket库           解析器
                 ------------------------------------
   OS             协议栈
                TCP          udp
                ICMP   IP(传送网络包,确定路由) ARP
                ------------------------------------
  驱动程序          网卡驱动程序(控制网卡)
                 -----------------------------
   硬件                   网卡
   从上到下逐级委派工作
   浏览器,邮件等一般应用程序收发数据时用TCP
   DNS查询等收发较短的控制数据时用UDP
.
/|\ ICMP+IGMP
 |  IP
 |  ARP
IP协议:把数据包从一个网段传到另一个网段,选路,控制网络包收发操作的部分
ICMP用于告知网络包传输过程中产生的错误以及各种控制消息
arp根据ip地址查询相应的以太网MAC地址
arp协议为IP提供服务,IP协议为ICMP/ICMG 提供服务
arp 协议
  • Address Resolution Protocol

  • 将IP地址通过广播(本网段,不通过路由器),目标地址FF-FF-FF-FF-FF-FF,解析目标IP的MAC地址,可以通过arp -a 进行查看缓存的MAC地址

  • arp协议解决同一个局域网上主机或路由器的IP地址与MAC地址的映射关系,如果寻找的主机不在同一个局域网上,就要通过ARP找位于本局域网某个路由器的MAC地址,把分组发给这个路由器,由这个路由器发给下一个网络

  • IP到MAC地址的解析是自动的,用户对解析过程不感知

  • 只要主机或路由器要和本网路上另一个已知IP的主机或路由器进行通信,ARP就会自动将该IP地址解析为链路层需要的MAC地址

arp -a # 查看arp协议静态或动态缓存的MAC地址表
ARP缓存会记录IP与MAC的映射关系记录,减少网络中的ARP包
Interface:10.10.1.16 --- 0x2
Interface Address  Physical Address   Type
10.10.1.43       00-80-c8-2d-82-ea    dynamic

为了防止ARP缓存里的记录和现实中有差异,几分钟缓存的记录就会被清理一次
arp -s 192.168.80.100 00-0c-29-f9-98-0c # 静态绑定IP与MAC地址,不在动态获取,防止arp欺骗
# 使用ARP的几种情况
1. 发送方式主机,要把IP数据包发送给本网段的一个主机,由ARP找到目标主机的MAC地址
2. 发送方式主机,要把IP数据包发给另一个网络的主机,由ARP找到本网络上一个路由器的MAC地址,剩下的有路由器来完成
3. 发送方是路由器,IP数据包发给一个主机,用ARP找到该主机的MAC地址
4. 发送方是路由器,要把IP数据包发给另一个网络的主机,由ARP找到本网络上一个路由器的MAC地址,剩下的有路由器来完成
# ARP欺骗
如果将arp缓存的ip对应的MAC地址改为错误的地址,那这两台主机将无法通信,可以通过arp -s来静态绑定MAC地址,防止arp欺骗
# arp数据包不带网络层的首部,因为他是给IP层提供支持的,IP层才有首部
ICMP 协议
  • 网际控制报文协议(INTERNET CONTROL MESSAGE PROTOCOL):为了提高IP数据报交付成功的机会,网络层使用了ICMP,允许主机和路由器报告差错情况和提供异常的有关报告
  • ICMP为IP数据报加上首部,组成ICMP数据包发出去
ping TTL 生存时间:每过一个路由器就减一,防止数据包无限循环 64->63->62 
  初始值: linux:64 windows:128 unix:255 
  参数:-t 一直ping 
  -l 200:发大包,指定发数据包的大小
ping 8.8.8.8 -i 1 # 设置ttl初始值为1,那么在经过第一个路由器时,就会TTL耗尽减到0返回 replay from     
  211.90.16.113:TTL expired in transit  # 211.90.16.113 是第一个经过的路由器
# PING命令排除网络故障:局域网中多台主机 ping -t 如果同一时间丢包,说明电信网问题
请求超时: 包到目的地了,但回来的路由器不知道怎么转发
目标主机不可到达: 去的路上的路由器不知道怎么转发
# QQ能登上,但网页打不开,说明网络层没问题,是域名解析出现了问题
pathping 能提供数据包的路径,能发现在哪一个路由器上出现了问题
traceret 10.7.1.53 # 用tracerert 也能跟踪数据包的发送路径
IGMP 协议
  • 分为点到点通信,广播通信:目标IP地址全是255,目标MAC地址全是F,也就是全发1.广播不能跨越路由器
  • 组播=多播,分组广播,一般用于直播,网络会议,节省带宽,例如教语文的老师发送多播给学语文的20同学,教数学的发送多播给学数学的20个学生,既不用一个一个发,也不用广播全发一样的
  • IGMP协议会周期性的扫描本网段中的主机有没有在访问多播数据包,如果都不访问了,会通知上层路由器不再发包
IP协议
包收发过程
                TCP头部      数据块    TCP模块
                   |/ 1发送    |\ 4接受
MAC头部  IP头部   TCP头部     数据块
                   |/ 2发送    |\ 3接收
  |-|_|---|_|---                      网卡(以太网)
起点是TCP模块委托IP模块发送包,在数据前加上TCP头部发给 ip模块,IP模块收到委托,在前面加上控制头部信息的头部,即IP头部,MAC头部,交给网络硬件即网卡,0和1的数字信息,网卡将数字信息转换成电信号或光信号,通过网线(光纤)传出去,再达到集线器,路由器,发送到接收方。接收方的网卡将光电信号转成数字信号,给IP模块,将TCP头部后加上数据块就交给TCP模块。
IP模块的职责是将委托的东西打包送到对方手里,不关心内容
# IP地址
IP地址实际上不是分配给计算机的,而是分配给计算机上的网卡
# MAC地址
将MAC地址查出放在IP头部之前是有IP模块完成,虽然MAC头部是以太网需要的部分,不属于IP模块的职责,但是如果在网卡收到包之前,IP模块完成了整个打包工作,那么网卡只需要将打好的包发出去就可以了,同一块网卡就可以支持各种类型的包。
b5bdd270e415d2b4c1bb_1273x700.png@900-0-90-f.png
IP 数据包
  • 一个IP数据包由首部和数据构成,首部的前一部分是固定长度,共20个字节,是必须具有的。在首部的固定部分后面是一些可选字段,长度可变
首部 + 数据部分 -> IP数据报
0     4         8        16    19    24    31    每行32bit,4字节,5行20字节
版本  |首部长度  | 服务类型 |  总长度           |    /|\ 
        标识              |标志   | 片偏移    |     |
生存时间         | 协议号   | 首部检验和        |    首部
                   原地址                    |     |
                   目的地址                  |     |
        可选字段(长度可变)              | 填充 |    \|/
                 数据部份                    |   
版本:用来表示TCP/IP协议的版本 v4或v6 IP协议的版本号
首部长度:首部长度 = 首部(20字节)+ 可变部分(一般为0)
服务类型:表示包传输的优先级,流量缓急的标记位 着急的包马上传 不着急的排队传 默认0
总长度:整个数据包长度最大有 2^16-1=65535 个字节 而数据链路层最大支持1500字节的数据包 因此数据部分最大是1480字节 如果超过就需要分片
标识(ID号):数据包分片以后能根据标识组装成一个完整的数据包,包的序列号,如果一个包被IP分片,所有分片都有相同的ID
标志:占3位,只有两位有意义,最低位MF(MORE FRAGMENT):1表示还有分片 0表示最后一个分片。中间以为DF(do not fragment) 为0时才允许分片 ,如果不分片都是010,000表示最后一个分片包
生存时间:TTL 包的生存时间,每经过一个路由器会减1,减到0时包会被丢弃,防止网络出现回环时永远在网络中打转。
协议号:协议的类型,指出应将数据部分交给哪一个进程
  传输层           TCP(6) UDP (17 0x11 域名服务器DNS用的协议)
  网络层  协议号 ICMP(1) IGMP(2) OSPF(89)IPV6(41)
首部检验和:发送端将数据报首部按16位去分,将分好的数据相加取反码得到检验和存入首部检验和,接收端将检验和和各16位的数据相加再取反码,如果结果是0就保留,否则就丢弃
原地址,目标地址:32位二进制 255.255.255.255 2^8-1=255 最大十进制255
可选字段:很少使用,填充是可变部分不够32字节就去填充
# 数据包分片
网络层的数据包超过1500字节,链路层就会把数据包进行分片,接受方的网络层再把这些子包合成完整的大包
泪滴攻击:传送大包又把某个子包干掉,让接收端一直等待接受包,占用网络资源
需要分片的数据包: 首部+3800字节
首部1+字节0-字节1399  +      首部2+字节1400-2799   +   首部3+2800-3799
报片1 片偏移=0/8=0           报片2 偏移=1400/8=175     报片3 偏移=2800/8=350
# 多个ip包形成一个ICMP包
路由器
包转发模块           端口模块
              ADSL ------------------- 互联网
路由表        FTTH
             通信线路
             无线局域网
             以太网 -------------------  集线器
                                       |   |   |
                                      pc  pc   pc
 端口模块: 不同的路由器端口模块有所不同,录入支持ADSL的路由器,支持FTTP的路由器,支持专线等                    包转发模块:根据路由表中的记录判断包的转发目标        
 以太网端口与计算机的网卡差不多,也是由RJ-45接口,MAU(PHY),MAC和内存组成。
路由器的转发模块想象成IP模块,端口模块想象成网卡,转发模块根据IP头部的IP地址,将包转移到对应端口,委托端口模块将包发送出去
路由表
route print
目标地址                子网掩码        网关           端口            跃点数
1Network destination    2Netmask      3Gatewany     4Interface    5 Metric
192.168.1.0          255.255.255.0    10.10.1.2     10.10.1.16        2
0.0.0.0              0.0.0.0
默认网关 其他行都匹配不到,默认匹配这一行
1,2 表示网络包的最终目的地
3 转发路由器的IP地址,如果与右边的接口一致,表示不通过路由器转发,直接向目的IP发送包
4 发送包的网络接口,匹配到本条路由时,使用改IP地址对应的网络接口向网管的路由器发包
5 通过这条路由传输包的成本,越小说明距离越近
这一行表示要向192.168.1.0地址发包,可以将包发送给10.10.1.2的路由器进行转发,是由10.10.16这个端口发出的
# 网关在TCP/IP中就是路由器的意思
网络号 + 主机号,路由器会忽略主机号部分,只匹配网络号,相当于路由器在转发包的时候只看接收方属于哪个区,A区发往这一边,B区发往另一边
子网掩码是255.255.255.255,这样,主机号全部为0可以表示一个子网,主机号部分不全部为0可以表示某一台计算机
  • 动态路由:路由器使用IP协议(RIP,OSPF)自己学习该怎么走
  • RIP协议:路由器会周期性的向外广播告诉下一个路由器该怎么跳来更新路由表,最终路由器会选择到目标地址跳数少的路径,每经过一个路由器就是一跳,30s更新一次,最大15跳,OSP协议也是用来选路,不过是以带宽作为选路依据
router rip # 开启rip协议
network 192.168.1.0
network 192.168.2.0
network 192.168.7.0
network 192.168.0.0
  • 静态路由:管理员告诉他怎么走,静态路由器需要管理员告诉路由器所有没有直连的网络下一跳给谁,缺点是只适用于小网络,不能自动调整路由
  • 网络畅通的条件
数据包有来有回
# ping 不通的两个现象
目标地址不可达:传送过程中的某个路由器不知道下一跳怎么走
请求超时:数据包到了,沿途的路由器不知道怎么走
     192.168.0.0/24    172.16.0.0/24  172.16.1.0/24     172.16.2.0/24  192.168.1.0/24
                       1        2     1           2     1            2
pc0———switch0————router0————————router1———————————router2————————————router3——————switch1——————pc1
          192.168.0.1      172.16.0.2        172.16.1.2          172.16.2.2   
                                  172.16.0.1       172.16.1.1           172.16.2.1
有两个局域网 PC0和PC1要相互连通,他们要配网关,并且沿途的每个路由器都要知道下一跳该怎么走
计算机如果没配网关,ping路由器可以ping通,说明他们在一个网段,但是发包时计算机就不知道怎么去路由器了
tracert 192.168.1.2
  192.168.0.1 pc0的网关,也就是rt0的左端口地址 
  172.16.0.2 rt0到rt2需要知道下一跳是rt1左端口 
    ip route 192.168.1.0 255.255.255.0 172.16.0.2 rt1左
    ip route 192.168.0.0 255.255.255.0 172.16.0.1 rt1右
  172.16.1.2  rt1到rt3需要知道下一跳是rt2左端口 
    去:ip route 192.168.1.0 255.255.255.0 172.16.1.2 rt2左
    回:ip route 192.168.0.0 255.255.255.0 172.16.1.1 rt2右
  172.16.2.2  rt2到sw1需要知道下一跳是rt3左端口 
    去:ip route 192.168.1.0 255.255.255.0 172.16.2.2 rt3左
    回:ip route 192.168.0.0 255.255.255.0 172.16.2.1 rt3右
  192.168.1.2 到达pc1
# 静态路由器需要管理员告诉路由器所有没有直连的网络下一跳给谁,路由器两端的ip可以互通
ip route 172.16.2.1 255.255.255.0 172.16.0.2 # router0因为没有和router2直连,所有pc0要ping通router2,需要在router0上配置路由表,告诉他到router2的地址的下一跳是让rt1左,172.16.0.2,不然就算pc0能ping通pc1,也无法ping通路径上的路由器2
子网掩码
  • 帮助路由器判断对应主机是否在同一个网段中
  • 网络地址唯一指定了每个网络,同一个网络中的计算机共享网络路径
# 子网掩码将一个IP地址划分为网络地址和主机地址 网络号+主机号
主机号全为0表示整个子网
主机号全为1表示向子网上所有设备发包,广播
172.16.122.204/255.255.0.0 -> 网段是172.16.0.0
计算机和其他计算机通信时,先利用子网掩码和IP地址判断目标地址是否和自己在同一网段,如果在同一网段,就是用目标地址MAC地址封装成数据帧,并发给目标地址。如果不在同一网段,就是用网关的MAC地址封装成数据帧,并发给路由器即网关。
# A类 255.0.0.0 B类 255.255.0.0 C类 255.255.255.0 D类 多播地址 E 类 保留
# 特殊地质
主机号
127.0.0.1 本地环回地址
169.254.0.0
10.0.0.0 172.16.0.0-172.31.0.0 192.168.0.0-192.168.255.0 保留的私有地址
子网划分
两个部门 每个部门100台,通过交换机连接,组成局域网。通过路由器连接internet,使用192.168.0.0 C类网络
# 一个网段
                  192.168.0.1                         192.168.0.2
                  255.255.255.0                       255.255.255.0
                                                      192.168.0.1
internet——————————router————————————————————switch————————pc    192.168.0.0 255.255.255.0
路由器可以使用该网段任何可用的地址,但为了避免计算机和路由器冲突,一般将路由器设置为该网段的第一个可用地址或最后一个可用地址
# 两个网段
A        192  168 0                   0|0000000
B        192  168 0                   1|0000000
子网掩码 11111111  11111111  11111111  1|0000000 (1表示该位可用,0表示该位不可用)
子网掩码  255        255       255        128
0——127 A子网第8位为0 128--255 B子网第8位为1,每个子网是原来的1/2,子网掩码往后退一位

                192.168.0.1         192.168.0.129           192.168.0.130
                255.255.255.128     255.255.255.128         255.255.255.128
                                                            192.168.0.129 网关
internet————router1——————A——————router2——————————————————B————pc
                       192.168.0.0                  192.168.0.128  网段
                       255.255.255.128              255.255.255.128
# 4个子网
公司有4个部门 每个50台
A  192 168 0 00|000000
B  192 168 0 01|000000
C  192 168 0 11|000000
D  192 168 0 11|000000
子网掩码 255 255 255 11|00000
        255 255 255 192
0-64 A 64-128 B 128-192 C 192-255 D 全1是广播 所以63,127,191,254不选
# 8个子网
A  192 168 0 000|00000
B            001
C            010
D            011
E            100
F            101
G            110
子网掩码 255 255 255 111|00000
        255 255 255 224
0-32-64-96-128-160-192-224-255
每个子网是原来的1/2*1/2*1/2,子网掩码往后移3位,乘几次1/2,就往右移动几位
路由器接受包流程
信号达到网线接口,PHY(MAU)和MAC模块将信号转为数字信息,通过包末尾FCS进行奇偶校验,没问题再检查MAC头和接收方MAC地址,看是不是给自己的包,是就放入缓冲区,否就丢弃这个包。
# 查询路由表确定输出端口
接受包完成以后,路由器会丢弃MAC头部,因为作用已经完成,再根据IP头部进行包转发,如果多行在路由表中被匹配到,按照最长匹配原则进行筛选,长度也相同,按跃点低的进行选择
# 默认路由
互联网中的转发目标超过20万个,全部配置在路由表中不现实,子网掩码为0.0.0.0这一列天上默认路由,优先级最低,并且肯定能匹配到
# 包分片
路由表找到转发目标后,在将包交给输出端口前还有工作要完成。首先要更新IP头部中的TTL,进行减一,防止宝进入死循环
路由器的端口并不止一种,当输出端口的最大包长度小于输入端口的最大包长度时,会使用IP协议的分片功能,与TCP协议的分片不同,TCP的拆分操作时在数据装到报之前进行的,但是IP的分片是对一个完整的包再次进行拆分的过程
输出端口的 MTu =最大长度-头部长度,当MTU小于宝长度就要进行分片
            MAC头 + IP头 + TCP头 + 数据
                         /     /  \   \
             MAC头+IP头+ TCP头+数据 Mac头+IP+数据
两种情况不允许分片:1.发送方应用程序设置不允许分片 2.包已经是分片后的包
# 发送
路由器判断下一个转发目标的方法
    如果路由表的网关列内容为IP地址,则该地址是下一个转发目标
                        空,则IP头中的接收方IP就是下一个转发目标
# 路由器和交换机的区别
给IP包加上MAC头部,本质上是将IP包装进以太网的数据部分中,IP协议本身没有传输报的功能,因此包的实际传输要委托以太网进行,路由器基于IP设计,交换机基于以太网设计
IP(路由器)负责将包报送给通信对象这一过程
以太网(交换机)负责将包传输到下一个路由器这一过程
附加功能
# 地址转换
将共有地址没分配的一部分拿出来规定只在内网使用,和其他公司重复也没关系
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
地址端口对应表
  公有地址     端口号   私有地址    端口号
  192.18.8.31  5436   10.10.1.1   1025
  192.18.8.31  5437   10.10.1.2   1025
  192.18.8.31  5438   10.10.1.3   2538
  
  服务器  192.0.2.79 《----------------》  10.10.1.1/2/3 私有地址
                     路由器  198.18.8.31
            接收方地址:端口号           发送方地址:端口号
            192.0.2.79:80             10.10.1.1:1025    数据   《-----客户端
                                       |/
 发往服务器 <-- 192.0.2.79:80          198.18.8.31:5436
 
 来自服务器 --》192.0.2.79:80          198.18.8.31:5436     
                                      |/
                                      10.10.1.1:1025  ---> 发往客户端
对外只能使用一个公有地址的情况下,可以用不同的端口号区别内网中的不同终端
从互联网的一端看,实际的通信对象是地址转换设备(路由器)
端口号是一个16比特的数值,总共可以分配几万个端口,因此如果用公有地址加上端口对应一个私有地址,一个公有地址能有几万个地有地址,提高利用率
# 互联网访问内网
之所以没法从互联网访问内网,因为表里没有对应的记录,只需要事先手动添加公私地址的记录就可以了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容