计算机网络
==============================================================
第一章 网络
网络的网络
互联网(Internet): 特指Internet ,起源于美国,现在已成为最大的计算机网络.
计算机网络:由若干结点
(node)和链接这些结点
的链路(link)组成
互联网(internetwork):将计算机网络连接成网络
互联网边缘部分两种链接方式
C/S 客户/服务器模式 客户端向指定IP发请求,服务器端响应请求 :浏览器开发者模式(F12) 可查看(请求和响应
p2p 没有明确的服务器端 例如 BT下载 单机游戏组队
######## 互联网的核心部分
路由器 是实现分组交换
的关键部件,其任务就是转发
收到的分组,这是网络核心部分的重要功能.
电路交换
N台需要N(N-1)/2 条电话线
为什么要两两
相连? 因为两台数据交换全部占用电话线,其他电话不可通过此电话线接入
电路交换模式
电路交换的特点
- 面向连接(两端电话必须接通才可能实现通信)
- 建立连接:建立专用物理通路,保证通话不会被占用
- 通信: 交换信息
- 释放连接: 释放刚才专用的物理资源(电话与交换机之间)
- 始终占用端到端的通信资源
优点:
①由于通信线路为通信双方用户专用,数据直达,所以传输数据的时延非常小。
②通信双方之间的物理通路一旦建立,双方可以随时通信,实时性强。
③双方通信时按发送顺序传送数据,不存在失序问题。
④电路交换既适用于传输模拟信号,也适用于传输数字信号。
⑤电路交换的交换设备(交换机等)及控制均较简单。
缺点:
①电路交换的平均连接建立时间对计算机通信来说嫌长。
②电路交换连接建立后,物理通路被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用低。
③电路交换时,数据直达,不同类型、不同规格、不同速率的终端很难相互进行通信,也难以在通信过程中进行差错控制。
计算机数据具有突发性(数据量没有规律)
- 如果使用电路交换,通信线路利用率很低(传输数据的时间很低)
分组交换的特点
- 采用
存储转发
技术 - 发送端,把较长的报文
划分成叫短的,固定长度的数据段
(packet)
路由器
对象时分组
实现方式是分组转发
输入和输出端口没有直接连接
处理过程
- 先存储缓存
- 查找转发表,找到目的地址要从哪个端口转发
- 转发
缺点:
- 存储转发 需要排队会造成时延
- 分组携带首部信息,造成一定开销
由此可见转发存储
并不是新技术
报文交换主要缺点就是时延太高
计算机网络的定义
较好的定义
计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
几种不同类别的网络
-
从网络的作用范围进行分类
-
广域网WAN
-
城域网MAN
-
局域网LAN
-
个人局域网PAN
-
多处理机系统不算计算机网络
-
从网络的使用这进行分类
- 公用网
- 专用网
-
用来把用户接入到互联网的网络
-
接入网AN 又称本地接入网,或者居民接入网
-
接入网是一类比较特殊的网络,用于接入用户
-
接入网本身不属于核心部分,也不属于边缘部分
-
桥梁作用
性能指标
速率
数据的传输速率 单位bit/s ,kbti/s , Mbit/s等,(不是Byte)带宽
指信道每单位网络中某信道所通过的最高数据率
类似 高速公路 不改变高速公路的宽度增加最高时速 使车流量变大- 吞吐量 单位时间通过某个网络(或信道,接口) 的数据量
- 时延(delay)
- 发送时延
- 传播时延
- 处理时延
- 排队时延
- 时延带宽积 ___________两者时间
- 往返时间RTT
- 利用率
- 信道利用率(一般建设时百分之30-40)
- 网络利用率
计算机网络体系结构
分层 TCP/IP
网络协议的三个要素:
- 语法:数据与控制信息的结构或者形式
- 语义:需要发出何种控制信息,完成什么动作
- 同步:事件实现顺序的详细说明
分层的好处和缺点
好处:
- 各个层之间独立
- 灵活性好
- 结构上可以分割开
- 方便维护
- 促进标准化工作
坏处:
- 降低效率
- 不同层次可能会有相同功能 出现了额外开销
多少层比较适合
层数少协议复杂 层数多 坏处强化
各层主要功能:
- 差错控制
- 流量控制
- 分段和重装
- 复用和分用
- 连接建立和释放
第二章 物理层
怎么样在能链接各种计算机在传输媒体上传输数据比特流,而不是指具体的传输媒体.
尽可能屏蔽掉不同媒体传输媒体和通讯手段的差异
物理层传输的是码元
主要任务:
- 机械特性: 指明形状尺寸如接口样子 RJ-45 双绞线
- 电气特性:指明各条线上出现的电压范围
- 功能特性:指明电压意义
- 过程特性:指明事件先后顺序
基带信号,由于频率较低甚至有直流信号无法在传输介质中传播 要通过调制
基带调制 只改频率 (编码),带通调制 转换成模拟信号
没有时钟--------无法判断 010 还是 001100 需要添加跳变 查分曼彻斯特 (基带调制)
最基本二元制调频方式
- 调幅(AM)
- 调频(FM)
- 调相()
信道的极限容量: 信号传输时有各种干扰
信道传输速度因素 :信道能通过的频率范围, 信噪比
香农公式
速度是有极限的 > 编码改变每个码元传输的比特量
导引型传播媒体
- 双绞线 价格便宜 技术成熟 安装方便(八根线,两根负责传输信号,其他可以实现供电等功能)综合功能优于同轴电缆
- 同轴电缆 带宽和扛干扰由于双绞线(一点点)
- 光纤 速度快(与头发丝相当粗细) 目前主要传输介质 需要光猫(将光电信号相互转换)
- 容量大
- 传输损耗小
- 抗干扰强
- 无串音干扰,保密性好
- 体积小
多模光纤能量损耗较高
非导引类型传播媒体
- 地面微波接力通信
- 卫星通信
信道复用技术
-
频分复用 占用不同频率(香农公式 w 越大可复用频率越宽)
-
时分复用 周期性轮流使用(由于计算机信号突发性,过时)
-
统计分时复用 升级版时分复用
-
波分复用 特指光的频分复用
-
码分复用 把发送一个bit的时间分为m个 ,成为码片(chip)
- 每个站指定唯一的码片序列
- 例如s站的8bit码片序列是00011011
- 发送1 时 发送00011011
- 发送 0 时发送11100100
每个站码片不同并且正交(规格化内积等于0) 通过特殊的计算(与码片序列求内积 1 和 -1 区分 1 0信号) 可区分各个站
- 每个站指定唯一的码片序列
规格化内积 m位对应相乘求和/m
第三章 数据链路层
-
点对点的信道
-
广播信道
除了物理线外,还需要通信协议控制数据传输
现在常用网络适配器(网卡)来实现这些协议
网络适配器实现了物理层和链路层
逻辑链路 = 物理链路 + 通信协议
数据链路层 传输的是帧
三个基本问题
-
封装成帧-------->添加帧首部,帧尾部 数据部分最大长度<=
MTU
- 用二进制代码表示开头结尾
SOF``EOF
,会出现数据部分与帧首尾部相同 ->传输失败->需要透明传输
- 用二进制代码表示开头结尾
-
透明传输
-
字符填充(异步) 如果发现0x7E ----》0x7D,0x5E 如果发现0x7D-------》0x7D,0x5D
-
零比特填充(同步) 发送发 只要连续五个1 就插入一个0 接受方发现五个1 时候删除后面的0
数据中重复部分添加转义字符
ESC
-
-
差错控制
- 循环冗余检验CRC的检错技术 在数据后面添加n位冗余码 能实现误比特差错的传输,单不是可靠传输
除数
p
是我们约定好的,n
比p
小一位
接收方 除P 余数是0 正确!
可靠传输 : 不重复不丢失不失序
本章的数据连路层协议都不是可靠传输 实现
无比特差错
PPP 协议点对点协议
如用户到LSP的链路使用PPP协议
需求
- 简单——这是首要要求
- 封装成帧
- 透明性
- 差错控制
- 最大单元
- 监测连接状态
- 地址协商
- 。。。
广播信道
在局域网LAN中的通信
网络接口板又称通信适配器(网卡)重要功能
- 进行串行/并行交换
- 数据缓存
- 在操作系统安装设备驱动程序
- 实现以太网协议
硬件地址 MAC地址
CSMA/CD
无连接的工作方式
以太网提供的服务
- 尽最大努力交付
- 差错纠正交给高层
- 高层发现丢失数据进行重传,但以太网并不知道这是一个重传的帧,而是当做一个新帧进行接收
以太网采取两种重要的措施
-
使用曼彻斯特编码 缺点 :所占频道比原本基带信号增大一倍
-
载波监听 碰撞检测
以太网只能进行双向交替通信所以进行碰撞检测
虽然现在不用CSMA/CD但 64字节成为最小帧长 收到帧后字节小于64直接扔
CSMA/CD协议总结 :
先听后发,边听边发,冲突停止,延迟重发
使用集线器的双绞线以太网
集线器:
复制一份全部转发
改变连接方式 接入更加简单
据统计,当以太网利用率达到30%时已经处于重载的情况
以太网的MAC地址
48位2进制 在一定范围不重复同一局域网MAC地址不一样24位厂商标识
大多数数据链路层设备都要检测帧长度
集线器级联 接入范围变大,冲突变多,发送失败几率更多 抛给链路层解决扩展问题
如何解决冲突?
从根本上大家不要共享总线
早期使用网桥
现在使用交换机
作用:检测帧是否错误;选择性的根据MAC地址有目的的进行转发
交换方式
- 存储转发
- 直通方式 根据MAC地址直接转发
交换机运行自学习算法维护交换表
每次收到帧在表中找发送方MAC地址如果不存在记录发送方的MAC地址和接口
如果表中找不到接收MAC地址对应的接口 则进行一次广播
过期自动删除
上述现象如果发生广播资源更加浪费 称作广播风暴
使用生成树协议 不断检测是否有环路,发现的话逻辑上断开某些接口
虚拟局域网VLAN
添加虚拟局域网地址VLAN标签 (广播风暴也因此限制)但引发下一个问题 不同VLAN标签下不能数据通信 向上抛
由于全双工方式 不再使用CSMA/CD协议
第四章 网络层
首先一个问题:保障可靠通信是靠网络还是端系统?
传输单位为IP数据报
首先用网络来保障可靠通信就要像电话那样形成虚电路
长期占用资源 ,两端保障数据尽最大努力不出错就能解放中间网络。但无法实现可靠传输。向上抛可靠传输问题
一个很重要的图 网络层向上解封 向下封装 只看网络层 实现异构网络互连
IP协议中的寻址方式IP地址
-
IPv4 32位 为了合理利用 将其分为5个类别
-
每一类地址都由
网络号
net-id,和主机号
host-id组成 -
主机号在他网络指明的范围内必须是唯一的
IP地址在整个范围内是唯一的
A类地址0 +net-id =8位 B类地址10 +net-id =16位 C类地址110 +net-id =24位 D类地址 1110 +多播地址 D类 1111保留
为了方便人类观看采用 点分十进制记法 每8位加一个.
每八位换成十进制 如 10000000 00001011 00000011 00011111 ==128.11.3.31
主机号 不能全零或全一 一般我们1表示关心 0表示不关心
255.255.255受限 企图对全世界进行广播 路由器不允许
重要特性
- 分等级的地址结构
- 每一个IP地址标志一个主机(或者路由器)和一条链路接口
- 用转发器或者桥连接起的若干个局域网 仍是同一个网络 因此他们的网络号
net-id
一样 - 所有分配到的网络号
net-id
无论范围都是平等的
IP地址和MAC地址区别
- 从层次角度看
- MAC地址是数据连路层和物理层用的地址
- IP地址是网络层用的地址,是一种逻辑上的地址(软件实现)
数据传输过程中MAC地址一直在变化推进,IP地址是不会变的 通信时两个地址都会用到
谁在帮我们寻找MAC地址???网络层和链路层如何交互???
不管网络层用的什么协议,实际上链路层传输数据帧的时候都要用MAC地址
地址解析协议ARP 从网络层IP地址解析出链路层使用的硬件地址 只能解决同一局域网上主机或者路由器IP地址硬件地址映射问题 但是可在局域网添加路由器
解决
- 当发送IP数据报成功时 ARP缓存记录接受方IP MAC 时间 接收方也会记录
- 发送的时候如果没有MAC地址 则本地局域网ARP请求广播,接受到ARP响应后将IP与MAC映射存入缓存
windows 命令行 arp -a 查看当前arp缓存
使用APR请求的四种经典情况
- 同一局域网 主机H1发询问,主机H2回答
- 主机发询问 路由器做回答
- 路由器发询问主机做回答
- 路由器发询问路由器做回答
为什么不直接用MAC地址通信???
类似与写信 地址写经纬度 。每次都要查询;网络的异构性 相互通信又复杂的地址转换(MAC–MAC 转换)几乎不可能完成
IP数据报的格式
IP由首部
和数据
两部分组成 ;首部长度20字节所有IP数据报必须有的 ;有一些可选功能会增加字节长度
首部长度 4位二进制 最大长度只能表示15个单位(一个单位为4个字节)所以IP首部最多60字节
IPv4 很难区分服务 ,一般不使用
总长度:黄色+蓝色部分 单位是字节 因此理论最大长度65535字节但总长度必须小于最大传输单元MUT 要用到分片
标识:计数器,用来产生IP数据报的标识 作用 分片后用来组成成原本数据报
标志:3位 目前只有前两位有效 表示是否分片 ,后面是否还有分片
片偏移:较长分片后某片所在原分组的相对位置 八个字节为一个单位
生存时间:占8位 网络中可以通过路由器的最大值,每经过一个路由器减一
协议:表示上层使用协议
首部校验和:占16位,之检验首部 反码求和
路由器尽最大努力
先找直连
如果特定规定了找特定路由
路由表记录目标网络号,和下一跳IP地址
如果找不到发送给默认路由
首部中没有标明下一跳IP地址 是交给路由器表的
划分子网和构造超网
IP地址中从主机号
中借若干位表示子网号
——————>IP地址变成三层结构 对于A类网络是必须的
对于路由器来说必须知道网络号+子网号才能转发——————>使用子网掩码可以表示网络号+子网号长度 做与运算的结果就是当前网络地址
子网号全零全一是不使用的
网络是平等的C类网络划分子网也有意义
IP协议中没有存放子网掩码的字段,如何获得掩码信息???
掩码放到路由表中 路由器先判断子网掩码是否一样,再判断与运算结果与目的网络地址是否一样
CIDR地址块
由于子网的出现显得ABCD类网络划分没有太大作用
现在多使用CIDR地址块直接划分指定位数的net-id 减少路由之间的信息交换
可以实现向上合并网络构成超网,虽然不使用子网了,但是仍要使用掩码
在路由表中才用最长前缀匹配
采用二叉树查找
网际控制报文协议ICMP
为了提高交付成功的几率 出现差错报告 有询问回答
接收方 丢弃报文 发送差错报告(不可到达,时间超过,参数问题,重定向),发送方 询问报文(问为什么抛弃)
不发送ICMP差错报告的情况
- 对ICMP差错报文不再发送ICMP差错报文
- 对于第一个分片数据报片的后去所有数据报片
- 多播地址不发送差错报告
- 特殊地址如127.0.0.0
ICMP询问报文的两种
- 回送请求和应答 ping
- 时间戳请求和回答报文
虚拟专用网络VPN
原本作用两个net-id地址不同的私有网络相互通信 中间通过隧道技术(将原本IP报文封装)
网络地址装换NAT
网络地址转换
第五章 传输层
要不要实现可靠传输???进程进程之间通信要不要解决???
- 有链接的TCP协议
- 无连接的UDP协议
TCP传送的数据单位协议是
TCP报文段
UDP传送的数据单位协议是
UDP报文
或用户数据报
UDP
- 提供无连接服务
- 传送数据前不需要建立连接
- 尽最大努力进行交付
- 面向报文的,即对应用层交下来的报文不合并不拆分直接交给IP层 大小问题抛给应用层
- 接收到UDP报文后不需要确认
- 效率高
- 支持一对一,一对多,多对多
TCP
- 提供面向连接服务
- 不是广播或多播服务,只提供点对点服务
- 提供全双工通信(双向的)
- 面向字节流
- 指流入或流出进程的字节序列
- TCP仅仅把数据看成一串无结构的字节流
- 提供可靠的面向连接的运输服务,增加了系统开销
将端口号作为进程标志符实现进程分用
端口 占16位,只有本地意义即为了标志本计算机应用层中的各进程
服务器端使用的端口号
熟知端口:数值一般为0~1023 如http 80 https 443 域名解析服务 FTP 21/22 shell 23
登记端口号:一般1024~49151 这个端口必须在IANA登记防止重用
客户端使用的端口号
又称短暂端口号 数值在 49151~65535 留给客户进程选择使用
利用端口号完成与应用层交互
UDP
伪首部只是用来求校验和,之后会被丢弃
TCP的连接
- TCP把连接作为最基本的抽象
- 每条TCP连接有两个端点
- TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口**TCP连接的端点叫做套接字(socket)或插口
- 端口号拼接到IP地址即构成了套接字(IP:端口)
连续协议ARQ协议 (在缓存中的滑动窗口)
发送窗口和接受窗口都是暂时存放功能 等待确认编号,然后交给上层或下层
TCP报文的首部格式
序号:发送的序号
确认号:希望下一个接受的序号 (因为TCP是全双工的所以发送数据时可以通过确认号通知对方已收到的数据编号)捎带确认
数据偏移:数据从哪开始
标志位
- URG与紧急指针配合
- ACK与确认号配合
- PSH交付给应用层的标志位默认0
- RST复位 连接出错,,重新连接
- SYN同步位 表示请求连接状态
- FIN 终止位 拜拜
窗口:16字节 ,我的接收窗口此刻大小
校验和:伪首部校验
可靠传输的实现
- 以字节为单位的滑动窗口
- 超时重传的选择
- 选择确认SACK
等确认信号,收到确认信号滑动窗口头部移动到对应序号 窗口可以扩大只能一点一点缩小
接收方只有有序才发向上交付,然后发送确认号
超时时间设置 太大太小都不好
加权平均往返时间,以往的时间权重高
选择确认 默认不使用本功能
接受到0窗口通知,启动计时器,计时器到期发送试探报文段(仅1字节)
拥塞控制的一般原理
原因 对资源的需求> 可用资源
全网络的拥塞控制
如果不进行控制,全网就会瘫痪,因为拥塞造成无法提交 无法提交造成重传 重传造成更加拥塞
分组丢失是网络发生拥塞的征兆,不是原因,可以断言 拥塞肯定是分组丢失的原因
TCP采用基于窗口的方法进行拥塞控制,该方法属于闭环控制方法
真正的发送窗口值=min(公告窗口,拥塞窗口)
拥塞判断
- 重传定时器超时
- 收到三个相同的ACK
超时之后,门限值减半,拥塞窗口重置
收到重复确认,直接跳到门限值
加法增大,除法减小
随机早期检测RED
路由器排队到达一定长度会随机丢弃一些报文
TCP的运输连接管理
三个问题
- 要使双方确定对方存在
- 允许协商一些参数(最大窗口值,是否使用窗口扩大选项等)
- 能够对运输实体资源进行分配
连接建立:三次握手
发送三个TCP报文
A 发送请求报文(请求建立连接) SYN=1 并且选择序号seq=x ,表明连接建立时第一个数据字节序号是X
B收到 B发送 SYN=1 ACK=1 确认号ack =x+1 自己选择的序号seq=y
A收到A发送 ACK =1 seq=x+1 ack =y+1
连接建立
连接的释放:四次挥手
释放端口 滑动窗口资源
A最后只要在2MSL时间没有收到B的重复报文就确定B收到了第四次握手信息
TCP可靠传输
建立连接:三次握手
发送数据:窗口(序号,发送窗口+接受窗口),确认机制,流量控制,拥塞控制(慢开始,拥塞避免,让拥塞来的越晚越好),超时重传。。。。
连接释放:四次挥手
第六章 应用层
域名系统DNS 名字到IP的解析交给域名服务器 … . 三级域名 . 二级域名 . 顶级域名 树形结构
13套与域名传输的MUT长度有关
ipv4 域名解析服务器中国没有 ipv6 共25套中国有4套
用户先访问本地域名服务器 本地没有ip后访问顶级域名解析服务器 。。。。之后保存到本地域名服务器的高速缓存
FTP 文本传输协议 21号端口建立连接 20号端口传输数据 如Xftp
远程终端协议TELNET 没有加密 23号端口 (ssh) 如Xshell(加过密)
TCP的运输连接管理
三个问题
- 要使双方确定对方存在
- 允许协商一些参数(最大窗口值,是否使用窗口扩大选项等)
- 能够对运输实体资源进行分配
连接建立:三次握手
发送三个TCP报文
A 发送请求报文(请求建立连接) SYN=1 并且选择序号seq=x ,表明连接建立时第一个数据字节序号是X
B收到 B发送 SYN=1 ACK=1 确认号ack =x+1 自己选择的序号seq=y
A收到A发送 ACK =1 seq=x+1 ack =y+1
连接建立
连接的释放:四次挥手
释放端口 滑动窗口资源
[外链图片转存中…(img-7X6bZkk6-1616655726022)]
A最后只要在2MSL时间没有收到B的重复报文就确定B收到了第四次握手信息
TCP可靠传输
建立连接:三次握手
发送数据:窗口(序号,发送窗口+接受窗口),确认机制,流量控制,拥塞控制(慢开始,拥塞避免,让拥塞来的越晚越好),超时重传。。。。
连接释放:四次挥手
第六章 应用层
域名系统DNS 名字到IP的解析交给域名服务器 … . 三级域名 . 二级域名 . 顶级域名 树形结构
[外链图片转存中…(img-vA8tf8kC-1616655726023)]
13套与域名传输的MUT长度有关
ipv4 域名解析服务器中国没有 ipv6 共25套中国有4套
用户先访问本地域名服务器 本地没有ip后访问顶级域名解析服务器 。。。。之后保存到本地域名服务器的高速缓存
FTP 文本传输协议 21号端口建立连接 20号端口传输数据 如Xftp
远程终端协议TELNET 没有加密 23号端口 (ssh) 如Xshell(加过密)
万维网(超大资源库) 统一资源定位符(url) 超文本传输协议(http) 超文本标记语言(html)