zoukankan      html  css  js  c++  java
  • 计算机网络学习笔记

    参考书籍:《计算机网络自顶向下方法第六版》

    第一章:计算机网络和因特网

    主要介绍了现有的接入网的方式、网络核心的信息交换方式以及所带来的一系列问题、因特网的层次结构各层所应承担的责任

    光纤速度超快,远高于电缆和通州电缆

    网络核心的数据转发方式:分组交换和电路交换

    电路交换是先建立连接再进行传数据,类似与之前的打电话,先连接电话线再进行通信,分组交换是将数据分割之后向外发

    于是在分组交换的过程中就会遇到时延、丢包和拥塞的问题,而电路交换就会更加的稳定,但是浪费资源,因为并不是一直传输数据,在双方都不发送信息的间隔中就造成了带宽资源浪费

    时分复用与频分复用存在与电路交换中

    吞吐量是一个速率单位,表示的是路由器转发分组的速率

    流量强度用来衡量网络架构的性能,及输入速率与输出速率的比值

    应用层:网络应用程序和应用层协议所在             (报文)应用层信息分组

                 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散列之后分给每一个对应方存储,每一个对应方有一个标识符,每个散列之后的键值对保存在后继最近的标识符对应的主机上。

  • 相关阅读:
    Java自定义加密字符串算法题目
    约瑟夫环C语言实现
    Java实现字符串形式大数相加
    Python打印乘法表
    Andorid中HandlerThread使用小记
    Ubuntu下C++使用icu库检测字符编码
    小记
    胆大妄为【DDWW】实验十 团队作业6:团队项目用户验收&Beta冲刺
    胆大妄为【DDWW】 【Beta】Scrum meeting 4
    胆大妄为【DDWW】 【Beta】Scrum meeting 3
  • 原文地址:https://www.cnblogs.com/Flower-Z/p/10077807.html
Copyright © 2011-2022 走看看