基本概念
- 计算机网络协议:语法,语义,时序
- 语法:描述实体间信息交换格式
- 语义:控制信息的具体含义
- 时序:交换信息的顺序以及速度配合
- 功能:硬件,软件,信息
- 分类:覆盖范围,拓扑结构,交换方式,用户属性
- 电话拨号
- 数字线ADSL,使用电话的物理线路,但不同信道传输
- 混合光纤同轴电缆HFC
- 局域网
- 移动接入网络(移动设备)
网络核心
- 网络核心是交换节点和传输介质的集合,实现网络边缘中主机数据的中继与转发。
- 网络核心(通信子网)不对数据进行处理,不提供网络服务。这些功能由网络边缘(资源子网)提供
数据交换技术
电路交换
- 主机间建立专用的通信线路,通信结束后通道拆除
- 实时性高,时延与时延抖动小
- 突发性数据传输(网页浏览)中,信道利用率低,传输速率单一
电报交换
- 无需建立连接
- 只有报文被转发(传输数据)时才会占用信道,不会独占信道
- 以存储-转发形式传送。交换节点需要缓冲储存,报文需要排队,增加时延
分组交换
- 拆分报文为若干分组,在进存储转发
- 存储设备容量要求低,速率效率高
- 更加公平,第一个报文为全部传完,可以先开始下一个报文
- 延迟时间,误码率
网络性能
带宽(频带宽度)
- 单位赫兹,频率极差
- 带宽越大,速率越大,故带宽有时候用来代替速率描述网络性能
时延
- 数据从一节点到另一节点所需时间
- 延迟分类:
- 处理时延
- 排队时延
- 传输时延,数据传输到线路上所需时间
- 传播时延,数据在线路上的传播时间
时延带宽积
链路上可以容纳的数据位数
丢包率
- 网络可靠性,反映拥塞程度
- 丢包率 = 丢失分组数/发送分组数
吞吐率
度量数据传送能力
计算机网络分层体系结构
各层次封装各自的头部信息后传递下一层次处理
- OSI参考模型(七层)
- TCP/IP参考模型
- 五层模型:应用层(报文),传输层(段),网络层(数据报),链路层(帧,若干比特组织的数据处理单元),物理层(比特流)
网络应用
网络应用体系结构
- 三种类型
- 客户端/用户(C/S)结构,两端角色固定,且用户之间不通信
- P2P(Peer To Peer)结构 客户端与服务端的结合体,客户端与服务端的地位只是在一次通信过程中不变
- 混合结构 中心服务器+对等客户端直接通信
- 网络应用基本原理
- 本质都是CS结构
- 服务器端被动等待请求,客户端主动发起通信请求服务
- 应用进程遵循应用层协议
域名系统DNS
用IP地址唯一的标识通信双方,但IP不方便记忆使用。使用域名,再由系统解析为IP地址
- 顶级域名命名方法:
1 国家域名nTLD; [cn中国 …]
2 通用顶级域名gTLD(组织); [com企业 net网络组织 org非营利性组织 edu教育机构 gov政府 …]
3 基础结构域名
三级域名一般代表企业内部的主机名,使用时由叶节点级级往上 - 目前存在13个DNS根域名服务器,a.root-server.net为一台根域名服务器域名
- 大部分根域服务器由多台独立物理服务器构成的服务器集群,而有的是由分布在不同位置的多台镜像服务器
- 域名服务器
- 建立分布式数据库储存域名,根据用户请求将域名映射为IP地址
- 服务器分类:根域名,顶级域名,权威域名,本地域名服务器
- 域名解析
- web服务器,发送超文本,再由浏览器解析
- 浏览器,网页超链接,包含URL(统一资源定位符),URL包含服务器域名。
- TCP连接(保证传输可靠性)
- 超文本传输协议HTTP(由HTML编写)
- 非持久连接 首次建立TCP连接,请求HTML页面,连接断开。解析页面后,需要再向服务器获取若干资源对象。
- 串行连接:每次只向服务器请求一个对象,且每次都要重新建立TCP连接。
- 并行连接:一次向服务器同时发送若干请求,建立若干连接
要求对方服务器允许建立三条连接
- 持久连接
- 非流水方式持久连接 建立TCP,请求html,再依次请求资源,直到所有资源请求完毕再释放连接
- 流水方式持久连接 获取html后,同时发出三个TCP连接。对服务器压力较大
- HTTP报文 请求报文 & 响应报文
- 典型的请求方法:GET, HEAD, POST, OPTION, PUT等。
(状态码的短语是对状态码的简单描述)
- 典型的请求方法:GET, HEAD, POST, OPTION, PUT等。
- 非持久连接 首次建立TCP连接,请求HTML页面,连接断开。解析页面后,需要再向服务器获取若干资源对象。
状态码 | |
---|---|
1×× | 信息提示,需进一步交互 |
2×× | 成功 |
3×× | 重定向,资源已转移 |
4×× | 客户端错误 |
5×× | 服务端器错误 |
- Cookie 小型文本文件,弥补了http无状态性的不足,有利于对用户进行跟踪或进行针对性服务
- 首次访问,服务器给用户编号并设置ID,将带编号的Cookie发送回给用户
- 用户浏览器保存该Cookie文件,并在下一次访问时一并发送给服务端
Internet电子邮件
- 电子邮件系统包括邮件服务器,简单邮件传输协议(SMTP),用户代理,邮件读取协议等。
- SMTP是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器的传输,默认端口为25。使用传输层TCP协议进行可靠信息传输
应用层交互阶段:握手阶段,邮件传输阶段,关闭阶段
SMTP协议示例
C: telent SMTP.163.com 25 //以telenet方式连接163邮件服务器
S: 220 163.com Anti-spam GT for Coremail System //220为响应数字,其后为欢迎信息
C: HELO SMTP.163.com //HELO发出握手请求。除此之外,HELO主要用来查询服务器支持的扩充功能
S: 250-mail
S: 250-AUTH LOGIN PLAIN
S: 250 8BITMIME //最后一个响应数字应答码之后跟的是一个空格,而不是’-‘
C: AUTH LOGIN //请求认证
S: 334 dxNlcm5hbWU6 //服务器的响应——经过base64编码了的“Username”=
C: Y29zdGFAYW1heGl0Lm5ldA== //发送经过BASE64编码了的用户名
S: 334 UGFzc3dvcmQ6 //经过BASE64编码了的”Password:”=
C: MTk4MjIxNA== //客户端发送的经过BASE64编码了的密码
S: 235 auth successfully //认证成功
// 进入邮件传输阶段
C: MAIL FROM: bripengandre@163.com //发送者邮箱
S: 250 bripengandre@163.com … Sender ok //“…”代表省略了一些可读信息
C: RCPT TO: bripengandre@smail.hust.edu.cn //接收者邮箱
S: 250 bripengandre@163.com … Recipient ok
C: DATA //请求发送数据
S: 354 Enter mail, end with “.” on a line by itself
C: Enjoy Protocol Studing // 邮件内容
C: .
S: 250 Message sent
C: QUIT //退出连接
S: 221 Bye // closing connection电子邮件格式:首部,空白行,主体。To, Subject, Cc, From, Date, Reply-To等关键字。
- MIME 多用途互联网邮件扩展。将非AScII转换为ASCII,再利用SMTP进行传输。邮件首部增加MIME,说明主体原本数据类型及编码标准
- 邮件读取协议
- 邮局协议 POP3(将邮件下载到本地操作,不会同步,下载后无需联网后)。默认端口号110
- 互联网邮件访问协议 IMAP(直接操作邮件服务器)
- HTTP(通过服务器网址访问)
FTP文件传输协议
互联网中实现两主机间文件传输的 应用层 协议。利用传输层TCP协议。
CS模式。但不同于其他服务,需要采用两种连接。控制连接(21端口)传输控制命令,数据连接(20端口)传输文件内容
适用于传输较大文件。使控制命令更好更快传输
P2P应用
- 充分聚集端系统的计算能力及网络传输带宽,对服务器依赖很小
- 可以请求对等的端系统进行数据获取。同时也可以请求服务器,各获取一部分数据在组合
Socket接口模型
网络应用进程通信通过API接口请求的底层协议的服务。根据实际使用传输层的TCP或UDP传输。
创建相应提供的接口调用不同的传输协议
- 数据报类型Sock_dgram对应UDP服务
- 客户端通过临时端口直接向服务器发送数据。服务器通过绑定固定端口号,无需建立连接,直接监听等待客户端数据
- 流式套接字Sock_stream对应TCP服务
- 服务端通过绑定固定的端口号,监听请求。客户端无需绑定端口,通过socket()临时获取端口号
- 建立TCP连接,开始数据交互
- 交互结束,客户端关闭接口;服务端关闭连接,最后在关闭端口
- 原始套接字Sock_raw直接调用网络层的服务,直接构建IP包访问。不再依赖传输层的服务
传输层
传输层基本服务
核心任务是为应用进程之间提供端到端的逻辑通信服务。
网络层实现的是主机到主机的传输服务。传输层端点指的是主机中运行的应用进程。
传输层功能:传输层协议提供逻辑通信服务,只需在端系统中实现。中间的节点如路由器交换机无需实现传输层功能,提高效率
主要功能:
- 传输层寻址
- 通过 端口号 找到对应应用程序。在全网范围内利用 IP+端口号 唯一的标示一个通信端点(应用程序)
- 传输层端口号为16位二进制。分为三类:
- 熟知端口号:1~1023。如http:80
- 登记端口:1024~49151。为无熟知端口号的程序使用,需要在IANA登记以防重复
- 客户端口号/短暂端口号:49152~65535。用于临时申请分配按使用。不固定。
- 应用层报文的分段和寻址
- 报文的差错检测
- 进程间端到端的可靠数据传输控制(是否收到)
- 面向应用层的复用和分解
- 端到端的流量控制
- 拥塞控制
- 无连接服务UDP:数据交互之前无需对端进行任何信息交换(握手),直接构造传输层报文段并向接收端发送
- 面向连接的服务TCP:传输前双方交换控制信息,建立逻辑连接,在传输数据,最后拆除连接
传输层的复用与分解
支持众多进程使用通过同一协议进行传输
- 多路复用:从每个应用中获取是数据进行封装发送
- 多路分解:从数据中通过端口号分各个应用
无连接的多路复用与多路分解
- UDP套接字:<目的IP, 目的端口号>
- 端口号是UDP实现多路复用的重要依据
面向连接的多路复用与多路分解
- TCP套接字标示一条TCP连接:<源IP, 源端口,目的IP, 目的端口号>
- 一段TCP报文到达主机时,根据此将报文分解到相应套接字(同一连接)
停-等协议与滑动窗口协议
实现可靠传输的措施:
- 差错检测:利用差错编码实现数据包检测
- 确认:向发送方反馈接受状态
- 重传
- 序号:确保数据按序提交
- 计时器:解决数据丢失问题
停等协议
每发送一个报文后就停下等待接收方确认
- 发送经过差错编码与编号的报文段
- 确认接收则发送ACK,否则丢弃报文发送NCK
- 根据反馈状态选择重发或者继续
滑动窗口协议
性能问题:停等机制降低信道利用率。
解决方案:流水线协议/管道协议:允许发送方在未收到确认前不断发送多个(后续)分组。
继续改进:增加分组序号范围;发,收方必须可以缓存多个分组(对未收到确认的数据进行缓存)
两种有代表性的滑动窗口协议:
- 回退N步协议(Go-Back-N, GBN):接收窗口大小为1,只接收1个按按序到达的分组。出错分组以后的全部丢弃重传
- 选择重传协议(Selective RePeat, SR):接收窗口>1,缓存正确但失序的分组
用户数据报协议 UDP
UDP数据报结构
- 源和目的端口号:用于UDP复用分解
- 长度字段:UDP报文段中的字节数
- 校验和:接收方检测报文段是否出错
校验和计算- 对所有参加运算的内容按16位对齐求和
- 求和过程中遇到溢出(进位)都会被回卷(进位与和的最低位再加)
- 得到的和取反码
传输控制协议 TCP
TCP报文首部结构
- 源与目的端口号
- 序号 标示该报文在整个分组中的序号
- 确认号 反馈某分组发送状态
- 数据偏移 同序号的报文再拆分后的数据位置
- URG,标示紧急指针位是否有效
- ACK 确认位,标示确认号是否有效
- PSH 通知可以很快对数据进行提交
- RST 复位,出现错误,需要重置连接
- SYN 同步请求,协商序号等信息
- FIN 通知拆除连接
- 窗口 流量控制,窗口大小可有双方控制
- 校验和
// 以上为 TCP的固定首部,20字节 - 选项
- 填充 首部大小需为4字节的倍数
TCP连接
TCP传输机制包括差错编码,确认,序号,重传,计时器(实现重传)等
TCP的可靠数据传输基于滑动窗口协议,发送窗口动态变化(流量控制)
连接建立-三次握手
- SYN连接请求 syn = 1, seq = x(同步请求,且初始序号为x)【客户端状态为SYN-SENT】
- SYNACK确认 syn = 1, ACK = 1, seq = y, ack = x+1(x已收到请求x+1,告知服务端初始序号)【服务端状态SYN-RVD】
- ACK确认 ACK = 1, seq = x+1, ack = y+1
TCP断开-四次挥手
- 任意一方发起断开请求 FIN = 1, seq = u
- 返回确认 ACK = 1, seq = v, ack = u+1。请求方停止发送数据。另一方继续发送数据。
- 发送请求释放连接 FIN = 1, ACK = 1, seq = w, ack = u+1
- 接收方返回确认 ACK = 1, seq = u+1, ack = w+1。接收端接收到以后关闭连接,发送端进入TIME-WAIT阶段,一段时间后关闭连接
- 封装TCP报文段
- 发出一个报文段后启动一个计时器
- 校验和发现数据差错
- 重排序,丢弃重复
- 流量控制
TCP流量控制
- TCP利用窗口机制实现流量控制,但不是简单的滑动窗口协议(窗口动态变换)
- TCP连接建立时双方分配固定大小的缓冲空间,发送数据必须在缓冲区接纳的大小
- 接收端给发送方发送确认时通知接收窗口大小
- 发送端发送数据时,保证未确认段应用层数据不超过接收端窗口大小,使对方窗口不会产生溢出
TCP拥塞控制
- 窗口机制 通过调节窗口大小实现发送速率调节
- 窗口调节基本策略 AIMD
- 加性增加 网络未拥堵,逐渐增加
- 乘性减小 网络拥堵,逐渐减小
- TCP拥塞控制算法
- 慢启动
- 拥塞避免
- 快速重传
- 快速恢复
网络层
传输层主要保证数据传输的可靠性,网络层负责数据的转发和发送
网络层的主要作用是将网络数据报从源主机发送到目标主机
主要功能:
- 分组转发:分组从传输接口转移到输出接口
- 路由选择:决定分组经过的路由或路径
路由器内部结构
- 路由选择处理机:路由选择协议 ->路由表(记录下一跳的路由器)
- 输入端口进来的数据通过 转发表 记录的输出端口
- 通过路由表记录成转发表
数据报网络
按照目的主机的地址进行路由选择的网络(本质上不可靠,但效率与成本好。互联网依赖此技术建立)
- 无连接
- 每个分组作为独立的数据报进行选路传输,路径可能不同
- 分组可能出现乱序与丢失
虚电路网络
在网络层提供的面向连接的分组交换服务
互联网的数据报方式不可靠,所以需要在此之上建立面向连接的传输层来确保传输可靠性。
- 建立一条网络层的逻辑连接
- 不需要为每条虚电路分配独享资源(区别与电路交换,信道利用率较高)
- 沿虚电路路径按序发送分组
异步传输模式的网络即采用此网络,成本较高但是传输较可靠
网络互连
异构网络互连
两个网络使用的技术与协议不同
- 协议转换
- 构建虚拟互联网络 使用IP协议作为这些网络技术和协议的下层协议,使用IP协议进行传输。在IP层次构建了虚拟网络
网络设备–路由器
- 输入输出端口 不同的网络技术有不同的端口
// 输入端口- 线路接收分组
- 物理层处理(处理不同网络技术)
- 数据链路层处理(提取其中网络层的IP数据)
- 网络层处理分组排队(查表转发输出,通过交换结构进入输出端口)
// 输出端口 - 网络层排队,缓存管理,每次取出一个数据
- 数据链路层处理(处理为不同技术)
- 物理层处理,发送到线路
- 交换结构设计
- 基于内存交换
- 基于总线交换
- 基于网络交换(节点开关)
- 路由处理器
执行路由器各种指令,包括路由协议运行,路由计算,路由表的更新维护等
网络层拥塞控制
拥塞:持续过载的网络状态,用户对网络资源的需求(链路带宽,存储空间,处理能力)总需求超过固有容量
- 缓冲区容量有限
- 带宽有限
- 结点处理能力有限
- 发生故障
流量感知路由
根据负载状态动态调整,将网络流量引导到不同链路上,均衡负载,从而延缓或避免拥塞发生
解决网络负载的震荡现象 - 多路径路由
- 缓慢转移流量至另一链路
准入控制
主要应用于虚电路网络。对新建虚电路进行审核,若该电路会导致拥塞则拒绝建立。
拥塞状态的量化:基于平均流量与瞬时流量流量调节
- 感知拥塞
- 处理拥塞:将拥塞信息通知到其上游结点
处理方法:
- 丢弃新分组:如GBN
- 丢弃老分组:如实时视频流
Internet网络层
IPv4协议
数据报格式
- IP首部分装了来自传输层的数据
- IP首部固定部分20字节
- 版本:IPv4/IPv6
- 首部长度 固定+可变
- 区分服务 区分不同服务质量
- 总长度 IP包总长度
- 标示 识别IP包。判断分片是否属于同一字段
- 标志 识别IP包是否被分割。判断是否为最后分片
- 片偏移 判断分片先后顺序
- 生存时间 多次转发仍未抵达目的地,生存时间过长丢弃
- 协议 标示数据部分使用的协议
- 检验和 差错
- 源,目的地址 发送与接收 数据的主机的IP地址。分别占4字节
IPv4编址
IP地址
32位的二进制 点分十进制标记法 8位一组点分标
网络号(同一网络下的主机具有相同的网络号) + 主机号
分类地址:A, B, C, D, E
特殊地址,私有地址
ABC:实际分配给联网的主机,没有重复的唯一地址
D:组播/多播地址。高四位为1110
E:保留使用。高四位为1111
A:前8位为网络号。最高位为0 0~127 主机数量:2^24-2
B:前16位为网络号。高二位为10 主机数量:2^16-2
C:前24位为网络号。高三位为110 主机数量:2^8-2
ABC网络规模不同
子网划分
将一个子网划分为多个子网
大子网具有较短网络前缀。小子具有稍长前缀
- 超网:子网合并为大网
- 子网掩码:定义调节一个子网的网络前缀长度,用于划分子网。前部全为1,即为网络前缀,后部全为0
- IP ^ Mask = Subnet IP地址与子网掩码进行与运算得到子网地址
- 同一子网中,网络前缀部分相同,后面为主机号不同,最小主机号代表子网地址,最大主机号代表直接广播地址
- 后8为的前缀部分即为子网号,可作为连续标示
- 除去子网地址与广播地址,剩余即为可分配的主机数
- 子网掩码延长r位该子网划分为2^r 个子网
路由聚合
将相同路由的连续子网合并
路由表中的分组转发:查找转发表(与运算匹配),最长前缀优先匹配
IP地址与分组表子网掩码坐与运算,所得是否匹配,再根据最长前缀进行选择
动态主机配置协议
略
网络地址转换
网络地址转换 NAT协议 –使用私有地址访问互联网
大量地址在互联网上不分配不使用只在内部使用,但保留地址在互联网上无法使用
- 源IP地址由Nat路由器替换为Nat拥有的合法使用的公共IP地址,同时替换端口号,并将替换关系记录到Nat转换表中
- 从互联网返回的IP数据报,依据其目的地址与目的端口号检索Nat转换表,获取内部ip与端口
同时起到隐藏实际IP地址,只公开公共地址的效果
路由算法
链路层
传输层负责应用层的复用分用保证可靠传输,网络层负责将数据从主机传到主机
链路层负责把一个节点可靠的传输到另一个节点,为网络层提供服务
数据链路服务
负责直接相邻节点的传输
链路层数据单元:帧
网络层将数据报封装交给链路层,链路层将数据添加帧头帧尾,构造数据帧
- 组帧
- 链路接入:点对点链路,广播链路(一条链路上有多个节点)
- 可靠交付(用于高出错链路)
- 差错控制
多路访问控制协议
ALOHA协议
纯ALOHA协议(Pure ALOHA):直接发送 ->信道侦听(反馈确认) ->冲突重发
时隙ALOHA协议(Sloated ALOHA):发送时间分为时隙,时隙开始时发送 ->信道侦听 ->冲突则下一时隙以概率P重发
载波监听多路访问协议CSMA
发送前监听信道是否空闲
- 非坚持CSMA:忙则等待随机时间发送后在侦听
- 1-坚持CSMA:忙则持续侦听直到信道空闲
- P-坚持CSMA:闲则概率P在最近时隙发送(避免同时侦听冲突)
带冲突检测的载波监听多路访问CSMA/CD
监听空闲后发送,发送时检测碰撞,碰撞后等待重发
局域网
链路层寻址与ARP
局域网广播通信,使用Mac地址进行标示通信。
MAC地址/硬件地址
每个接口对应一个MAC地址,全球唯一。
路由器接口,网卡接口,交换机接口
长度48位,十六进制, 前24为厂商标示, 厂商分配代码
地址解析协议ARP
根据本网内目的主机或默认网关的IP地址获取其MAC地址
查询/响应方式
所以ARP只为在同一只子网下的主机和路由器解析IP