记录自顶向下方法的学习笔记,方便以后复习
第一章 计算机网络和internet
1.计算机网络中的通信过程可以用快递的方式类比。
小明想把一本书(数据)寄给北京的小红,他首先得选择一个快递公司(ftp/http/smtp),然后填写寄件人和收件人地址(host,socket interface),快递公司将这本书按照自己公司的规定进行包装(packet),然后用货运汽车运送,这其中经过的交叉路口就类似于switch,将数据packet进行转发。
2.协议是计算机网络中的重要组成,它规范了host之间的通信,以及switch的转发行为。两个重要协议,TCP/IP。
3.两个host进行通信时,为了能发长报文,将其分割为较小的数据块,依次发送(packet)
4.交换机的存储转发传输机制:交换机必须接收到packet的全部数据,才能向输出端链路转发该packet。
5.输出队列(output queue)和丢包(packet loss)
输出队列:当交换机准备向输出链路转发packet的时候,输出链路可能正在传输其他packet,所以就产生了输出队列,将待转发的packet放在输出队列中,避免和目标输出链路上正在传输的packet发生冲突。
丢包:输出队列满了的情况下,交换机就会将packet丢弃。
6.转发表和路由选择协议
转发表:packet中包含目的host的IP,路由器根据转发表和该IP决定packet的输出链路。
路由选择协议:路由选择协议决定路由器到每个目的地的最短路径(参考迪克斯特拉(Dijkstra)算法原理及实现(Java)),进而来配置转发表。
7.TCP/IP分层模型
模型分为5个层次:应用层(HTTP/SMTP/FTP)、传输层(TCP/UDP)、网络层(IP)、链路层和物理层。
第二章 应用层
1.两种主流的应用程序结构:CS和P2P结构
客户-服务器(CS)结构:多个客户和服务器之间进行通信。客户端过多,服务器负载可能过高,进而有数据中心的出现。
对等(P2P)结构:host之间直接进行通信(torrent下载文件)。
2.host之间的通信,本质上是不同host中进程的通信。将两个进程间发起通信的一方称为客户端,另一方为服务器端。
3.一个host有多个进程,所以使用套接字接口的方式确定host上的具体进程(IP+端口号,类似于小区里单元楼+门牌号)。
4.应用程序只需要使用套接字接口接收/发送数据即可,具体传输的细节不用关心。同时传输层也向应用层提供服务,TCP/UDP。
5.TCP:面向连接的传输层协议,在报文发送之前有一次握手过程,即在client和server之间建立专用的传输通道,确保可靠性传输(文件、邮件、短信等应用)。
6.UDP:无连接的传输层协议,没有握手过程,不保证报文被接收端接收。优点在于实时性传输,延迟较低(视频、电话等应用)。
7.SSL(安全套接字层协议,应用层协议):TCP发送的报文是没有加密的,即在传输过程中有泄露的风险。SSL是对TCP的加强版本,在传统TCP功能的基础上提供了安全性服务。发送进程向SSL套接字发送报文,SSL对其进行加密后传递到TCP套接字进行传输。接收进程从TCP套接字接收报文,然后将其放入SSL套接字中进行解密,再传递给接收应用程序(就是在传输之前对报文进行编码,接收后再解码的过程)。
8.应用层协议规定了交互的报文的类型,格式等(相当于语法)。
9.应用层协议——HTTP(超文本传输协议),定义了client和web服务器之间报文的类型,格式等。Web页面由很多对象(object)组成,web服务器通过URL标识object的位置(可以用书店中的书类比)。每个URL地址由两部分组成:存放对象的服务器host地址(书店的地址)+对象的地址(书在书店的哪个架子上)。
10.HTTP协议规定了两种报文,请求和响应报文。Client通过一定的格式将带有URL的请求报文通过传输层的TCP套接字传输,Web服务器接收到请求报文后通过其中的URL找到client想要的web页面,然后将其封装到响应报文中再通过TCP套接字传输到client。Client解析响应报文,然后展示给用户。
11.请求报文有多种不同的方法,常用的有GET和POST两种。用户通过GET/POST类型的请求报文都可以提交表单(用户数据,比如用户在搜索引擎输入的搜索信息),但GET方法是将表单放在URL后面提交的,安全性较差;POST方法将表单放入请求报文中提交。
12.SMTP——发送方使用邮件代理(如QQ邮箱等),编辑邮件。邮件代理使用客户-服务器模式将邮件发送到发送方的邮件服务器A。A使用SMTP将邮件推送至接收方的邮件服务器B。当接收方登陆自己的邮件代理后,代理从B中获取邮件,展示给接收方。
13.DNS(域名系统)——应用层协议。它的主要功能是将域名转换为路由器/host可以识别的IP地址。DNS服务器采用分布式、分层的方式存储域名—>IP的映射。分层指的是DNS服务器分为多层(类似于省市县的划分);分布式指的是每一层的DNS服务器有多个,分布在各个区域。
以HTTP请求为例,客户端首先提取URL中的host地址(如www.baidu.com),然后通过DNS协议将URL发送至本地DNS服务器(不属于分层结构,由ISP提供),然后它再向层次化的DNS服务器发送查询报文,最后将IP地址回报给客户端。客户端再根据IP地址发送HTTP请求报文。
DNS缓存:简化IP地址查询时间。在DNS服务器中使用缓存,将以前查询到的域名—>IP地址映射存储到本地,以后再有重复的查询即可直接回复。



