计算机网络复习整理
参考教材:Computer Networking A Top - Down Approach
什么是 “自顶向下”?
因特网协议栈
Internet Protocol Stack
五层因特网协议栈 |
---|
应用层 |
运输层 |
网络层 |
链路层 |
物理层 |
应用层:
位于应用层的信息分组称为报文(message)
运输层:
在应用程序端点之间传送应用层报文(TCP&UDP)
运输层分组称为报文段(segment)
网络层:
网络层分组称为数据报(datagram)
网络层负责将数据报在主机间移动
链路层:
链路层分组称为帧(frame)
将整个帧从一个网络元素移动到邻近的网络元素
物理层:
将帧中的一个一个比特从一个结点移动到下一个结点
OSI model
Open Systems Interconnection
Layer architecture | 七层OSI参考模型 |
---|---|
Application Layer | 应用层 |
Presentation Layer | 表示层 |
Session Layer | 会话层 |
Transport Layer | 运输层 |
Network Layer | 网络层 |
Data Link Layer | 链路层 |
Physical Layer | 物理层 |
表示层:
使通信的应用程序能够解释交换数据的含义(数据压缩、加密、描述)
会话层:
提供数据交换定界和同步功能
计算机网络和因特网
什么是因特网?
具体构成描述
因特网是一个世界范围的计算机网络,其中的设备称为主机(host)或端系统(end system),端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起
发送数据时,将数据分段,并加上首部由此形成的信息包被称为分组(packet)
服务描述
根据基础设施向分布式应用程序提供的服务
端系统不考虑数据的源与宿,只是遵守一定协议并与因特网上的另一个端系统的特定目的地交付数据
即将因特网描述为应用程序的平台
网络边缘
接入网(access network)
指将端系统连接到边缘路由器(edge router)的物理链路
- 数字用户线(Digital Subscriber Line, DSL):双绞线到电话线,数字信号模拟信号的转换(由DSL调制解调器完成);同时承载了数据和传统的电话信号,使用频分复用,由高频到低频分为下行、上行、双向电话
- 电缆因特网接入(Cable Internet Access):同DSL,调制解调器信号转换,频分复用因此上下不对等
- 光纤到户(Fiber To The Home, FTTH):主动 AON,被动 PON
- 以太网(Ethernet)
- 局域网(LAN)
物理媒体(physical medium)
- 导引型媒体 :电波在固体媒体中传播
- 非导引型媒体:电波在空气或外层空间中传播
网络核心
通过网络链路和交换机移动数据有两种基本方法:分组交换和电路交换
分组交换
端系统彼此之间交换报文(Message),源将长报文划分为较小的数据块,称为分组
存储转发传输
存储转发机制是指交换机必须收到整个分组才能向输出链路传输该分组
大小 L,速率 R,则转发需要的时间为(中间 N 个 router):
$$
d_{端到端}=(N+1)\frac{L}{R}
$$
排队时延和分组丢失
每个分组交换机都有多条链路与之相连,对于每条链路有一个输出缓存(输出队列),若不能及时输出则需要入队等待,承受排队时延若队满,则称之为分组丢失(丢包)
转发表和路由选择协议
路由选择协议自动设置转发表,可以决定最短路径
电路交换
端对端通信预留带宽(专线,非共享),故链路上电路越多速度越慢
电路交换网络中的复用
频分复用(FDM):链路为每条连接专用一个频段
时分复用(TDM):通过时隙传输每条路上的数据
电路交换比分组交换差在哪?
分组交换是共产主义,按需分配,始终保持高效率,怕就怕资源总量不够,后来的人不够分
电路交换是资本主义,每条路霸占资源,造成资源的严重浪费,极其低效:
- 霸占带宽:即使所有路都闲着,你也只能走你自己专用的路,即使不够用
- 霸占时间:只能在自己的时隙传输数据,别人占着茅坑不拉也不给你拉,乖乖排队轮流
分组交换网中的时延、丢包和吞吐量
时延
- 结点处理时延:检查分组首部和决定该分组导向何处
- 排队时延:分组在链路上等待传输,最复杂
- 传输时延:将所有分组的比特推向链路所花的时间
- 传播时延:从链路起点到达路由器
结点总时延:以上时延的加和
排队时延
流量强度:$\frac{输入流量}{输出流量}$
设计系统时流量强度不能大于1
丢包
当流量强度接近1时,排队时延并不会变得无限大,而是将队列外的分组丢弃
端到端时延
包括处理时延、传输时延、传播时延
吞吐量
瞬时吞吐量、平均吞吐量
若路由器两端链路速率不同,则慢的为瓶颈链路,也为吞吐量
吞吐量不仅取决于传输速率,还取决于干扰流量
封装(Encapsulation)
- 应用层报文($M$)被传输到运输层
- 运输层收到报文,加上运输层首部信息($H_t$),组成了运输层报文段,并向网络层传递该报文段
- 网络层增加了首部信息($H_n$),组成了网络层数据报,被传递到链路层
- 链路层增加自己的链路层首部信息并创建链路层帧
综上所述:在每一层,一个分组具有两种类型的字段,首部字段和有效载荷字段。有效载荷字段通常来自上一层。
面对攻击的网络
拒绝服务攻击(Denial-of-Service, DoS):
- 弱点攻击
- 带宽洪泛
- 连接洪泛
分布式(DDoS)、IP哄骗(IP spoofing)
应用层
网络应用是计算机网络存在的理由
应用层协议原理
Client - Server
客户 - 服务器体系结构中
Peer to Peer
对服务器基本无依赖,主机间直接通信,称为对等方
自拓展性强大
在IPv6普及的未来是大势所趋
进程通信
进程与计算机网络之间的接口称为套接字(Socket)
由于socket是建立网络程序的可编程接口,因此套接字也称为应用程序与网络之间的应用程序编程接口(API)
运输层协议
TCP
- 面向连接
- 可靠无差错
- 安全套接字层(Secure Sockets Layer, SSL)
- 拥塞控制机制
UDP
- 提供不必要服务/最小服务
- 无连接,无握手
- 没有拥塞控制机制,自选速率
应用层协议
如何传递报文?
- 交换的报文类型:请求报文,响应报文
- 报文类型的语法
- 字段的语义
- 一个进程如何发送报文,响应报文
HTTP
HTTP由两个程序实现:Client and Server
选择TCP作为支撑运输协议
Web页面包括:HTML + Object
HTTP是一个stateless协议,HTTP Server 不保存用户信息
三次握手
- client向server发送报文
- server接收报文,返回响应报文
- client接收报文,返回确认
非持续连接
- client 在 Server port 80 发起TCP连接
- client经socket发送请求报文
- server经socket接受报文,在一个响应报文中封装对象,经socket发送
- server通知TCP断开连接
- client接收报文,TCP连接关闭
- 再次请求需要的文件(TCP连接可以是并行的)
持续连接
为每个请求的对象建立连接,负担严重。
一个连接保持打开可以传输多个对象。
HTTP 请求报文
1 | GET /somedir/page.html |
method:GET, POST, HEAD, PUT, DELETE
HTTP 响应报文
1 | 200 OK |
HTTP response status codes
200 OK
request succeeded, requested object later in this msg
301 Moved Permanently
requested object moved, new location specified later in this msg (Location:)
400 Bad Request
request msg not understood by server
404 Not Found
requested document not found on this server
505 HTTP Version Not Supported
cookie
cookie技术有四个组件
- HTTP响应报文中的一个cookie首部行
- HTTP请求报文中的一个cookie首部行
- 用户端系统中保留一个cookie文件,由浏览器进行管理
- Web站点的后端数据库
Web缓存
Web cache也叫proxy server
通过把源站的数据保存在本地,向下级进行内容分发来减少互联网上的流量
条件GET
请求报文中加上If-Modified-Since
来验证缓存是否为最新的
对条件GET方法的响应:Web服务器发送一个响应报文,报文中不包含请求的对象,状态行为304 Not Modified
主要组成部分
- 用户代理
- 邮件服务器
- 简单邮件传输协议(SMTP)
SMTP使用TCP进行连接
当邮件服务器向其他服务器发送邮件时,邮件服务器表现为SMTP的客户端,收取邮件时表现为服务器
具体流程
- 调用邮件代理,指示代理向目的地址发送该报文
- 用户代理将报文发给邮件服务器,存放在报文队列中
- 邮件服务器上的SMTP客户端发现了该报文,创建一个到目的邮件服务器上的SMTP服务器的TCP连接
- 握手,发送报文
- 邮件服务器上的SMTP服务器接收报文,放入邮箱
- 通过用户代理查看(POP3, IMAP)
与HTTP区别
HTTP是一个拉协议(pull),用户使用HTTP从服务器拉取信息
SMTP是一个推协议(push),TCP连接由要发送文件的机器发起
SMTP要求每个报文采用7 bit ASCII,HTTP不受限制
HTTP把每个对象封装到它自己的HTTP响应报文中,SMTP把所有的报文对象放在一个报文中
报文格式
1 | From: alice@crepes.fr |
POP3
Post Office Protocol Version 3
工作流程
- 特许(authorization)
- 事务处理
- 更新
1 | telnet mailServer 110 |
IMAP
Internet Mail Access Protocol
解决了POP3文件夹操作问题,比POP3更复杂
DNS
定义
- 一个由分层的DNS服务器实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
DNS运行在UDP上,使用53号端口
集中式DNS服务器的问题
- 单点故障
- 通信容量
- 远距离的集中式数据库
- 维护
分布式、层次数据库
- 根DNS服务器
- 顶级域DNS服务器(TLD)
- 权威DNS服务器
用户查询的流程
- 向根服务器发送报文,根服务器返回TLD的IP
- 向TLD发送报文,TLD返回权威服务器的IP
- 向权威服务器发送报文,返回目的IP
本地DNS服务器
不属于层次结构的一部分
- 用户向本地DNS服务器发送报文
- 本地DNS服务器执行上面的流程
- 将得到的目的IP返回用户
DNS缓存
本地DNS服务器可以缓存查询过的地址
存在有效期限
因为可以缓存TLD的IP,所以根服务器通常被绕过
DNS记录
共同实现DNS分布式数据库的所有DNS服务器储存了资源记录(Resource Record, RR)
RR为包含下面字段的4元组
(Name, Value, Type, TTL)
TTL为该记录的生存时间
Name和Value取决于Type
Type | Name | Value |
---|---|---|
A | 主机名 | IP |
NS | 域 | 对应权威DNS服务器主机名 |
CNAME | 主机名 | 对应规范主机名 |
MX | 邮件服务器别名 | 对应规范主机名 |
DNS报文
只有查询和回答两种,且格式相同