简介
资源
内容
应用层:
传输层:UDP/TCP
网络层:
工作方式有两种:
- 传统:ip协议和路由协议
- SDN:数据平面(交换机)和控制平面(网络操作系统)
数据链路层和局域网:
Computer Networks and the Internet
第一章是框架,最重要。
什么是internet?
构成的角度:
节点和边(各有两种);
协议;
internet:网络的网络
什么是协议:报文格式,次序,动作。
服务的角度:为分布式应用提供通信服务的基础设施。
提供的服务有两种:1无连接的不可靠服务;2面向连接的可靠服务;
网络边缘
网络边缘
两种模式:
- 客户/服务器模式
- 对等(peer-peer)模式:迅雷
网络应用使用基础设施提供的服务有两种:
-
面向连接的服务:
-
无连接的服务:
面向连接和有连接还是有区别的!
网络核心
网络核心:路由器的网状网络
数据如何传输:
-
电路交换
把节点与节点之间划分成piece的方法:时分,频分,波分
-
分组交换
要理解延迟比线路交换大,因为线路交换的时候每一跳只需要保存一个bit,而分组交换需要保存整个packet。
网络核心的关键功能:
路由时全局的,转发时局部的
统计多路复用(时分的特殊情况):
比较
分组交换网络:按照有无网络层的连接分为
- 数据报网络
- 虚电路网络
总结:
接入网和物理媒介
Internet结构和ISP
前面划分为边缘,核心和接入;现在在另一个维度去划分。
分组延时,丢失,吞吐量
四种分组延时:
故而:
理解流量强度的概念!(与排队延时有关)。
traceroute:利用互联网控制报文协议(ICMP)
head里的TTL(time to live)决定生存期。到达B的时候显示不可达,结束。
分组丢失:一般是排队队列超过路由容量。
被丢失了后有三种可能:
- 上一个节点重传(上一个节点连接可靠,即确定收到才停止发送,由协议来规定)
- 源主机重传(TCP)
- 根本不重传(UDP)
吞吐量:
瓶颈链路
协议层次和服务模型
服务和服务访问点:
Service:SAP(Services Acess Point),service user,service provider.
服务类型:
connection-oriented service(面向连接的服务)
connectionless service(无连接的服务)
服务和协议的关系:
数据单元DU
sdu的一对一,一对多,多对一。
做一些规定
小结
应用层
原理,应用,编程。
应用层协议原理
网络应用的体系结构:
cs模式
peer-peer模式
混合模式
通讯需要解决的问题:
问题二比较复杂,详见ppt
安全TCP:
TCP&UDP都没有加密,所以提供了应用层的SSL库来实现,SSL利用TCP进行通信。(https和http的区别)
Web & HTTP
HTTP:超文本传输协议(使用TCP且无状态)。
持久/非持久HTTP连接:
请求报文:
向服务器提交表单(两种方式):
响应报文:
- content length:tcp不维护边界,需要http协议自己维护。
维护c-s状态:
web cache:
ppt上有一个缓存示例,通过不同的解决方案的对比展示出了web缓存的优势。
web缓存和服务器之间的同步
FTP
不使用客户端服务器SMTP交互:
邮件报文格式(与SMTP命令不同):
后来拓展了对多媒体的支持(打了个补丁,报文格式增加了多媒体拓展)。
邮件访问协议:
DNS
DNS需要解决的问题:
DNS的思路与目标:
解决问题1:分层划分
解决问题2:把DNS的名字空间划分成互不相交的zone,每个zone有名字服务器维护区域的权威信息(authoritative record)
TTL:如果无限大就是权威记录,权威记录是本服务器维护的。有限就是缓冲记录,缓冲记录的是从下层获得的名字-ip的映射。
Type:
DNS工作流程:
那local name server如何获得ip地址呢?
DNS协议,报文:
解决问题三:
- 新增一个域
peer-peer应用
- 非结构化p2p
- 结构化p2p(DHT)
非结构化p2p
- 集中化目录 :
- 完全分布式:
如何查找自己的邻居并建网?(理解一下)建网完成后通过查询泛洪解决目录问题。 - 混合体(BitTorrent):
结构化p2p:
CDN
TCP套接字编程
两个结构体:
大致过程:
ppt上有代码示例
UDP套接字编程
见ppt
小结
传输层
传输层提供逻辑上的进程与进程之间的服务,不是主机与主机间。
概述和传输层服务
tcp提供的是字节流的服务,udp是数据报的服务。
多路复用和解复用
tcp建立连接之后:
udp不需要建立连接:
无连接传输UDP
UDP校验和:
可靠数据传输原理
先假设下层提供的服务是可靠的,再一步一步把下层提供服务简化到不可靠,来渐进的探索。
使用FSM(有限状态机)来阐述原理。、
rdt1.0:
rdt2.0:具有比特差错的信道
**rdt2.1:**引入序号处理ACK/NAK出错(序号只是让接收方检查到重复)
接收方不知道发送的ACK/NAK是否被收到,也不要要确认,否则就无限的递归了。只需要根据发送方的表现就可以了。
rdt2.2:不需要NAK(为停止等待向流水线协议做准备)
rdt3.0:具有比特差错和分组丢失的信道(增加timer)
设置合适的超时时间也是很重要的。
现在已经解决了丢失和出错的情况,但是当信道时大容量的时候这种停止等待的方式就不行了
流水线协议:
滑动窗口协议(通用和铺垫):
GBN的FSM
选择重传SR:
对比:
窗口最大尺寸:
面向连接的传输:TCP
段结构
如何设置超时定时器的时间?
见ppt
TCP:可靠数据传输
tcp是流水线协议,那么到底是像GBN还是SR,两种的混合。
TCP如何实现即像GBN又像SR呢,因为ack维护的不是一个段,而是整个。所以定时器只需要一个了,就像SR了。
快速重传!非超时重传。
还是不理解流水线是怎么实现的?
流量控制
明白了,通过流量控制的技术就知道对方缓冲区的大小们就可以控制流水线的发射的大小,不用担心溢出。
连接管理
三次的握手:
- 知道与对方交流
- 资源准备
- 控制信息置位
两次握手的挑战:
失败的情况:
三次握手及解决失败:
关闭连接:
对称释放并不完美
拥塞控制
拥塞的代价:
两种拥塞控制的办法:
案例ATM:ABR拥塞控制(第二种)
tcp拥塞控制
使用第一种拥塞控制的方法
如何检测拥塞和如何控制:
流量控制和拥塞控制是一体完成的(联合控制):
tcp拥塞控制策略:
注意,每个RTT发送速率加倍是通过每收到一个ACK时候congwin加1实现,见上图。
老师讲了一份测酒量的例子吗,注意当发生拥塞(慢启动)和轻微拥塞(降到一半)时候处理方式不一样。
总结:
tcp的吞吐量:
tcp的公平性:
总结
网络层:数据平面
导论
转发是局部的,路由时全局的。
传统下路由器即实现了数据平面的功能也实现了控制平面的功能。控制平面的功能是分布式的做。两个平面紧耦合。
SDN中称为分组交换机,相当于传统方式的路由器
网络服务模型:
有的网络还提供连接建立的功能:
一些例子:
路由器的构成
输入端口:
输入端口为什么要有cache?
一般来说可能因为头端阻塞:
三种交换结构:
输出端口:
调度规则:
- FIFO
- 优先权调度
- RR
- WFQ
ip协议
数据报格式
分片
分片的必要性
ipv4地址
在链路层介绍怎么把一个frame从一个ip传到另一个ip。
子网:
有纯子网和非纯子网的区别。
ip地址的分类:
特殊ip
有时候B类主机数比较多,容易浪费,C类主机数太少,所以采用下面的方法来进行ip编址:
如何获得ip:
有的时候一个路由表可能有多个表项匹配(比如部分主机卖给别人了),要找掩码长度最长的。
NAT:网络地址转换
内网和外网地址的转换。本质是用外网替换的端口号代表内网的ip和端口号!出去容易,但是进来就不容易,需要内网穿越。
ipv6
ipv4和ipv6通过隧道技术来平滑过渡。
通用转发和SDN
可以实现流量工程!
SDN架构:
openflow: