一、应用层
1.1 标准的应用层协议
1.基于TCP的HTTP
1)万维网——联机信息储藏所,通过链接访问;万维网的四个问题
资源定位与标识——URL
链接的实现——HTTP
内容格式统一——HTML
信息搜索——浏览器
2)HTTP/1.0的过程说明(点击链接院系设计,URL是http://www.tsinghua.edu.cn/ chn/yxsz/index.htm)
step1.浏览器分析链接指向的URL,然后向DNS请求解析www.tsinghua.edu.cn的IP地址
step2.DNS解析出域名的IP地址为xxx
step3.浏览器与服务器建立TCP连接(IP:Port 80)
step4.浏览器发出取文件命令:GET /chn/yxsz/index.htm
step5.服务器给出响应,把文件index.htm发给浏览器
step6.释放TCP连接
step7.浏览器现实index.htm的内容
1.2 编写自己的应用层应用——socket编程
1.为了在计算机网络中有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换数据的格式以及有关的同步问题。
2.自己使用socket编程,本质上就是传递操作码或者相关参数,并且事先约定好数据格式,以便正确解析出来
二、运输层
1.为什么要有运输层,运输层提供什么服务?(运输层为进程服务)
2.1 TCP
1.TCP服务的特点是什么?以及怎样理解?
面向连接、可靠的(无差错、不丢失、不重复、按序到达)、面向字节流服务
2.关于面向连接,连接的定义是什么?以及TCP怎样管理连接的?
1)连接的抽象:套接字=(IP:PORT)
2)连接的管理:连接的建立(三次握手)、连接的释放(四次握手)
3.关于可靠,TCP怎样实现可靠地传输服务?
理想传输条件:无差错、接收端能处理各种速率的数据
实际的情况是:出现差错的处理就是重传;如果来不及处理,就进行发送速度控制
1)关于差错:停止等待协议->连续ARQ协议 (超时重传时间的选择)
2)关于发送速度控制:滑动窗口的流量控制;拥塞控制(慢开始、拥塞避免;快重传、快恢复)
4.以上的功能怎样体现在TCP报文段格式中?
5.按照协议三部分(语法、语义、同步)对TCP协议进行梳理
2.2 UDP
1.UDP服务的特点是什么?以及怎样理解?
无连接、尽最大努力交付、面向报文、无拥塞控制
2.怎样体现在UDP的数据报格式中?
三、网络层
1.网络层提供什么服务?为什么要有网络层?为什么要有IP层
1)(网络层向上提供(包好下层功能):主机之间的逻辑通信; 不包含下层:分组怎样从一个网络通过路由器转发到另一个网络)
2)为什么要有IP层?(共享的本质要求):二层网络是异构的,且无法统一标准(普通的以太网、卫星链路、无线以太网);但是异构的网络之间有共享通信的要求。 因此在异构的二层网络之上加一个抽象层——IP层(使用IP协议)。这跟VFS有异曲同工之妙(分为三层:最上层)。
2.用IP来标识主机和网络?(分类IP地址;子网的划分;构成超网)
1)分类IP地址:IP = 网络号,主机号(有三个问题:第一、IP地址空间利用率有时很低,尤其是A类和B类;第二,给每一个物理网络分配一个网络号会使路由器变得太大而使网络性能变坏;第三、两级IP地址不够灵活,新的地点开通需要在IP申请好之后才可以联网)
2)划分子网:IP = 网络号,子网号,主机号(一个拥有许多物理网络的单位,可以将物理网络划分为子网,对外仍然表现为一个网络。依然存在问题:IPv4地址即将耗尽,路由表项目急剧增长)
3)构成超网:IP = 网络前缀,主机号(CIDR,无分类域间路由选择,有两个特点:第一、CIDR消除了传统分类地址和划分子网的概念;第二、CIDR把网络前缀相同的连续IP地址组成一个CIDR地址块。 路由表利用CIDR地址块来查找目的网络,这种地址聚合常称为路由聚合,它使得路由表中的一个项目可以包含传统分类地址的很多个路由。路由聚合也称为构成超网。)
3.IP转发流程是怎样的?(分类IP地址;划分子网;构成超网)
IP分组转发,本质是从一个网络转发到另一个网络。对于分类IP地址,根据默认的分类提取出网络号;划分子网,需要使用子网掩码来得出目的网络;构成超网与划分子网类似。
1)分类IP地址 路由表的每一条路由主要是(目的网络地址,下一跳地址)
step1.从数据报的首部提取目的主机IP地址D,得出目的网络地址N
step2.若N就是与此路由器直接相连的某个网络地址,则直接交付到目的主机(包括把目的主机地址D转换为硬件地址,把数据报封装为MAC帧,再发送此帧)
step3.若路由表中有目的地址为D的特定主机路由,发到此路由器
step4.若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器
step5.传送给默认路由
step6.报告转发分组出错
2)划分子网 路由表的每一条路由主要是(目的网络地址,子网掩码,下一跳地址)
划分子网,从外面看,还是普通的分类网络(A类、B类);但进入到这个网络之后,还有很多网络(子网掩码更长)。
step1.从数据报的首部提取目的主机IP地址D
step2.先判断是否直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相与,看结果是否与目的网络地址匹配。若匹配,直接交付(包括把目的主机地址D转换为硬件地址,把数据报封装为MAC帧,再发送此帧)
step3.若路由表中有目的地址为D的特定主机路由,发到此路由器
step4.对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络匹配,则把数据报传送给该行指明的下一跳路由器。
step5.传送给默认路由
step6.报告转发分组出错
3)构成超网 路由表的每一条路由主要是(网络前缀,下一跳地址)
类似与划分子网,将划分子网的(目的网络,子网掩码)合二为一。关键在于查找路由表的时候可能会得到不止一个匹配结果。应从匹配结果选择最长网络前缀的路由(最长前缀匹配)。——使用二叉线索查找路由表(唯一前缀)。
为什么有多个匹配结果?是因为聚合地址下面的某个子网,希望数据报直接放到自己的路由器,而不希望经过聚合地址的路由器。
4.主机或路由器怎样知道在MAC帧首部填入什么样的硬件地址?
step1.当A要向本局域网的B发送IP数据报,就现在其ARP高速缓存中查看有无B的IP地址。若有,则发到IP对于的硬件地址
step2.若无,则A自动运行ARP,按以下步骤找到B的硬件地址
1)ARP进程在本局域网上广播一个ARP请求分组。内容是“我的IP是xx,硬件地址是xx。我想知道IP地址xx的主机的硬件地址是多少”
2)本局域网所有主机运行的ARP进程收到此ARP请求分组
3)主机B的IP与请求分组里面的IP一致,收下并向A发送ARP响应分组(单播);其他主机则不理睬;并且B将A的IP地址到硬件地址的映射写入自己的ARP高速缓存
4)主机A收到B的ARP响应分组后,就在其ARP高速缓存写入B的IP到硬件地址的映射
5.路由器中的路由表是怎样得出的?
RIP(相邻路由器;全部路由条目;定时交换、变化时交换。距离向量算法)
OSPF(所有路由器;相邻路由器的链路状态;链路状态变化时交换。最短路径算法)
BGP(力求寻找一条能够到达目的网络的比较好的路由。路径向量算法)
6.路由器的构造是怎样的?
路由选择部分——控制部分(核心是路由选择处理机):根据所选定的路由协议构造出路由表,同时经常或定期地和相邻的路由器交换路由信息而不断地更新和维护路由表。
分组转发部分——交换结构、一组输入端口和一组输出端口。转发表是从路由表得来的。
7.ICMP是用来干嘛的?(PING; traceroute)
更有效地转发IP数据报和提高交付成功的机会。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
PING——ICMP回送请求与回送回答报文
traceroute——数据报封装的是无法交付的UDP用户数据报。利用的是ICMP时间超过差错报告报文和ICMP终点不可达差错报告报文。
8.为什么要IP多播?怎样实现IP多播
包括局域网上的硬件多播和因特网范围的多播
因特网范围的多播:(IGMP;多播路由选择协议)
9.IP地址紧缺,并且一个机构所有主机都连接到因特网并不安全。怎么解决?
让机构内的计算机使用仅在本机构有效的IP地址,而不申请全球唯一IP地址。
专用网;虚拟专用网
10.专用网内部的主机分配了本地地址后,怎样和因特网上的主机通信?
NAT——network address translation
11.以上的功能怎样体现在IP数据报格式里面
12.按照协议三部分(语法、语义、同步)对IP协议进行梳理
四、数据链路层
1.为什么要有数据链路从?数据链路层提供什么样的服务?
分组怎样从一个主机传送到另一个主机(不经过路由器)
2.数据链路层的信道种类,信道使用的场合,以及各种信道使用的协议
点对点信道——PPP
广播信道——CSMA/CD (Carrier Sense Multiple Access with Collison Detection)
3.使用广播信道的以太网
4.扩展以太网
1)在物理层扩展以太网(集线器)——采用CSMA/CD转发帧
2)在数据链路层扩展以太网(网桥、交换机)——帧是怎样转发的?(这个交换机的帧转发机制、MAC层协议以及CSMA/CD之间的关系是什么?)——依靠转发表转发帧
5.以上的功能怎样体现到MAC帧格式里面?
可以进行整理的专题
专题一、基数树专题(linux内核基数树、以及CIDR的地址块binary trie)
专题二、层次抽象与屏蔽在计算机中的应用(分层的网络协议、计算机操作系统、API、库结构)
专题三、协议的定义;各种网络协议的共同点和本质
专题四、网络协议是怎样处理无限确认的?(面向连接的TCP才采用超时重传)
专题五、进程间的通信(同一个计算机上进程之间的通信:管道、消息队列、共享内存、UNIX域套接字; 不同计算机上进程间的通信:普通的socket、RPC、消息中间件qpid)
专题五、各种表都是映射(路由器的路由表——目的网络到下一跳路由器的映射;网络、交换机的转发表——目的MAC地址到接口的映射;NAT的地址转换表——旧的IP:port到新的IP:PORT的映射;ARP——IP地址到Mac地址的映射)