参考书籍:《计算机网络自顶向下方法第六版》数据库
第一章:计算机网络和因特网编程
主要介绍了现有的接入网的方式、网络核心的信息交换方式以及所带来的一系列问题、因特网的层次结构各层所应承担的责任后端
光纤速度超快,远高于电缆和通州电缆缓存
网络核心的数据转发方式:分组交换和电路交换安全
电路交换是先创建链接再进行传数据,相似与以前的打电话,先链接电话线再进行通讯,分组交换是将数据分割以后向外发服务器
因而在分组交换的过程当中就会遇到时延、丢包和拥塞的问题,而电路交换就会更加的稳定,可是浪费资源,由于并非一直传输数据,在双方都不发送信息的间隔中就形成了带宽资源浪费cookie
时分复用与频分复用存在与电路交换中网络
吞吐量是一个速率单位,表示的是路由器转发分组的速率数据结构
流量强度用来衡量网络架构的性能,及输入速率与输出速率的比值架构
应用层:网络应用程序和应用层协议所在 (报文)应用层信息分组
HTTP:Web文档请求与访问
SMTP:电子邮件报文的传输
FTP:端系统之间的文件传递
DNS:域名服务,其实也是一个应用层协议
运输层:TCP UDP 端系统的应用程序端点之间传送应用层报文(端口号就是给运输层用的) (报文段)运输层分组
TCP : 确保传输(可靠性) 流量控制(发送方与接收方速率一致,不至于将其中一方淹没) 拥塞控制(将长报文划分为短报文)
UDP : 面向无链接传输
网络层:将网络层分组从一台主机移动到另外一台主机 (数据包) 网络层分组
IP:经典的网络层协议 定义了数据包中各个字段以及端系统与路由器如何做用于这些字段
为何只有路由器没有链路层交换机呢 由于链路层交换机只有物理层与链路层没有网络层
路由选择协议:决定分组从入链路进入一个路由器的时候从哪一个出链路出去,由路由选择协议来决定
链路层:将分组从一个结点移动到下一个结点 (帧)
特定的链路层协议提供可靠的传递服务,与TCP的传递不一样,链路层自能保证完整的将这个帧传送过去,在节点处的顺序改变与丢包是TCP来解决的
物理层:将一个比特从一个结点移动到下一个结点
跨国不一样的实际传输媒体的方式不一样,选择的物理层协议也不一样
OSI模型是七层的,多了表示层和会话层,因特网将这两方面交由应用程序负责
在每个节点,路由器或者交换机都须要从底层向上跑一遍再从上向下跑一边传下去,例如必须到达网络层才知道接下来去哪,因此在物理层接收以后 要自底向上分解一遍
第二章:应用层
更正了前一章的一些错误认识,吞吐量不专指路由器,只是一个象征数据运输速率的单位、DNS能够被认为是一个应用层的应用。
应用层保存了应用程序与应用层协议
该章首先介绍了一些前导知识(应用程序体系结构、进程之间是如何通讯的、两种基本的运输层协议的特色)以后分别介绍了支持Web的HTTP协议,支持文件传送的端系统间文件传送的FTP协议。。。。。。。。
应用程序体系结构有两种,客户服务器体系结构与对等体系结构(P2P)。对等体系结构下每一个客户机既能够做为服务器又能够做为客户机,主机之间直接通讯,对等体系结构的规模与主机的数量有关,当一台主机提出请求的时候对系统都增长了服务压力,可是当某一台主机发出请求的时候也提供了服务能力,因而,P2P模式具备自扩展性。许多即时通信的应用是两种体系结构结合的,服务器被用于跟踪主机的Ip,主机之间直接通讯。
进程之间通讯使用了一个叫作套接字(socket)的门户,套接字是一种特殊的API,位于应用程序与网络之间,socket的应用端能够进行编程选择运输协议,网络端不能够。socket至关于一个门,那端口号至关因而门牌号,不一样主机之间的进程进行通讯,首先根据IP地址能够定位到主机,主机定位到应用程序是根据端口号,目前流行的软件有固定的端口号。
应用程序对运输的要求有四个方面,可靠性,安全性,吞吐量和定时。可靠性是完整无误,吞吐量是速率,定时是最晚几点送达,安全就是不会被窃取。TCP与UDP等运输协议只能在可靠性与安全性上下功夫,决定不了吞吐量与定时。TCP服务分两方面,面向链接与可靠,链接就是先创建两个socket之间的链接,TCP提供的可靠传输保证三方面,无差错,流量控制与拥塞控制。UDP只管发出去,什么也保证不了,不知道可否接到,不知道接到的是否正确。TCP保证安全性不是协议自己能够的,而是接助外力,在两端的socket与TCP之间加了一个SSL(安全性套接字)层,使用SSL加密,传输的不是明文是加密时候的密文。
三方面前导知识以后开始介绍应用层协议,应用层协议定义了四方面,报文的类型(请求|响应),报文的格式,报文每部分的意思(词义),什么时候发送报文(规则)。
支持Web的HTTP协议。HTTP定义了Web客户向Web服务器请求Web页面的方式。HTTP采用TCP链接,无状态协议(服务器不保存客户端的信息),能够支持持续链接也能够支持非持续链接。非持续链接传送一个对象以后就要断开从新握手从新连,持续链接握手一次以后能够持续传输对象。二者各有利弊。HTTP是无状态的,可是当Web站点想要记录客户的信息的时候采用的是cookie的方式,HTTP为了提升速率与节约带宽资源引入了Web缓存,是一个本地缓存器,每次请求直接指向Web缓存,若缓存有就直接返回,若没有再由缓存想服务器发出请求,此时引进一个问题就是缓存的内容可能不是最新的,因而引进了条件get的解决办法。接下来讨论四个问题,持续链接与非持续链接,cookie,Web缓存,条件get。
HTTP传输时不须要将多媒体数据转换为ASCII码编码
持续链接与非持续链接:1.非持续链接效率比较低,每次创建链接浪费了TCP缓存区,而且大量的链接给TCP服务器增长了压力,重要的是每次传输一个对象就须要创建一个链接,一个RTT(往返时间)建立TCP,一个RTT传送数据,时延较持续链接长。2.持续链接在空闲时间浪费了端口等资源,可是换取了时间,传输对象更快,仅须要一次握手 3.非持续链接没有明确必定要串行,当同时请求多个对象时能够并行。可是依然要前一个对象ack以后后面的请求才能够发出,此时的请求可能同时请求多个 4. 持续链接分为流水式与非流水式,非流水式就是一次握手以后串行,流水式能够同时发送,不用等待前一个ack
cookie:1. 记录不记录在站点处而是记录在用户端系统
2.Web站点提供一个后端数据库
3.用户端系统的cookie文档只能够Web访问
4. Web为每一个用户端分配了一个id,当用户访问站点的时候Web对该站点分配了一个id,用户端保存的是本身的id与每一个站点的id,Web后端数据库保存的是某id访问某id的时 刻与动做
Web缓存:在本地设置缓存的好处有两点,首先大大减小了客户的请求响应时间,其次,减小了ISP接入因特网的通讯量
条件get:缓存保存一个内容的时候记录下来上次记录的时间,当再次被访问的时候,向服务器发送请求,当有改变是从新传输,没有改变直接返回简短的响应,减小了内容的传输时 间,尤为是大量数据的传输,减小了时间保证了正确性。
远程文件传输FTP:FTP特色是带外传输,控制流不与数据流在一块儿,或许是为了容许大文件的传输,不至于占用控制流,没一个文件的传输占用一个单独的数据流,的那个传输完毕以后数据链接关闭
支持电子邮件的SMTP协议:
电子邮件的三部分用户代理、邮件服务器、SMTP协议
SMTP是一个推协议,发送方即用户代理维护一个报文队列交给邮件服务器便可,接受方须要考虑接受的方式,HTTP或POP3或IMAP
POP3:容许屡次下载,可是邮件服务器不保存对于文件的修改,一直保存的都是接受到的原始邮件
IMAP:容许用户进行远程更改并保存
将媒体数据转换为ASCII数据,对于既有文本又有图形等的文档,将全部的报文对象放在同一个报文之中,不一样于HTTP
DNS服务:
益处:不只能够方便用户使用,还能够均衡负载,由于每个站点例如百度,能够对应不少的服务器,不少的IP,DNS对于相同的站点能够随机分配IP,达到了负载均衡
DNS是一个分布式、层次的数据结构,根DNS服务器,顶级DNS服务器,权威DNS服务器,首先向根DNS服务器询问接下来应该向那个顶级DNS服务器发出请求,一步步找到本身须要的IP,是一个迭代的过程,也能够采用递归的过程,问根服务器后,根服务器来询问顶级服务器,一步步再返回,可是这样会给根服务器形成太大的工做量。
本地DNS服务器是ISP自行设定的,缓存一部分键值对,可是不回主动更新,两天以后直接丢弃。
P2P应用,不一样于前面全部的协议都是针对服务器客户端的模式的。
对等方的文件分发比服务器分发提速不少,每一个对等方均可以做为服务器向外分发
分发采起一个协议(规则)BitTorrent协议
一个用户进来以后尝试与洪流之间的每一个对等方创建邻近对等方关系(TCP链接),一段时间间隔以后询问全部邻近对等方的文件列表,找到最稀缺的本身须要的进行请求,稀缺优先;保存一个给本身发送速率最快的前四名做为“疏通”,响应别人的请求时在本身的四个“疏通”里随机一个,一报还一报
P2P模式下没有DNS服务,如何保存ip与主机的映射关系采用的是分布式散列表。
将ip散列以后分给每个对应方存储,每个对应方有一个标识符,每一个散列以后的键值对保存在后继最近的标识符对应的主机上。