zoukankan      html  css  js  c++  java
  • 《计算机网络教程——自顶向下方法》学习笔记

    这本书很经典,也很厚,之前学了大半部分(TCP/IP的五个层),也许是因为概念太多、内容太广就放下了。这次记录算是总结复习吧,感觉学东西特别是这种基础性的东西还是得记笔记,有归纳的学习不然学着学着就凌乱了。。

    第一章 概述

    1.Internet: 主干(国际ISP)——>互联网服务提供商(国家或区域ISP)——>客户网络(网络边缘)

    2.协议分层 protocol layering  模块化modularity   逻辑连接

     自顶向下:应用层、传输层、网络层、数据链路层、物理层。

     优点:①将复杂的任务分解成较小的、简单的任务;②将服务从实现中分离出来;③中间系统并不需要所有层次,从而降低了整个系统的造价。

    3.路由器在网络层,对分组进行分片,即改变了对象的内容;交换机在数据链路层,不改变对象的内容。

    4.TCP/IP协议簇中的对等体:  

        层次      分组名                  地址

      应用层     消息message             名字(域名/ip)

      传输层    段segment或用户数据报user datagram   端口号

      网络层    数据报datagram             逻辑地址

      数据链路层  帧frame                链路层地址(MAC地址)

      物理层    位bite            物理层的数据交换单元是一个比特,没有地址

    5.TCP/IP各层描述:

    • 应用层:HTTP、SMTP、FTP、TELNET和SSH、SNMP、DNS、IGMP
    • 传输层:TCP、UDP、SCTP
    • 网络层:IP(辅助协议:ICMP、DHCP、ARP)
    • 数据链路层:支持所有标准的和私有的协议,能够接管数据报并携带它(装在一个称为帧的分组中)穿过链路的任何协议都能满足网络层的要求。
    • 物理层:物理层“之下”还有一个隐藏的传输介质层,而将一个比特变换成一个信号(电或光信号)存在多种协议。

    6.封装与解封装  多路复用(源端)与多路分解(目的端)

    7.国际标准化组织(ISO)  开放系统互连(OSI)模型 :7层 (将TCP/IP协议中的应用层分解成应用层、表示层、会话层)

    第二章 应用层

    1.应用层模式:传统模式:客户-服务器;新模式:对等

    2.应用程序接口——程序中的接口是两个实体间的指令集。此处,一个实体为应用层中的进程,另一个即为操作系统(os封装了TCP/IP协议簇的前四层)。

       常见的通信API:套接字接口、传输层接口(TLI)以及STREAM。

    3.套接字接口是提供应用层和操作系统间通信的指令集,是用来进程间通信的指令集。(同键盘作为信源、屏幕作为信宿,文件同时作为信源和信宿一样,套接字也是一种信源信宿)

     行为上,套接字与一个终端或者文件类似,但它不是物理实体而是一种抽象;

     实质上,套接字是供应用程序创建和使用的数据结构。

    4.套接字地址=IP地址(32位,ipv4的话)+端口号(16位)

      套接字数据结构由五个字段组成:族(PF_INET,ipv4的话)+类型(SOCK_STREAM,用于TCP)+协议+本地套接字地址+远程套接字地址

    5.对客户站点而言,本地套接字地址由OS提供——IP操作系统已知+随机分配端口给进程,

             远程套接字地址中IP地址通过DNS服务器获取+端口号固定(HTTP或者说web就是80);

      对服务器站点而言,本地套接字也由OS提供——IP操作系统已知+标准应用的端口号固定(同客户站点的远程套接字的端口号是一回事)或者不是标准应用则由设计者选择一个固定的分配给该进程,

             远程套接字地址包含在相应客户端发送给服务器的请求报文中。

    6. 标准的客户-服务器应用:万维网。

        网络客户(浏览器)通常包含三个部分:控制程序+客户协议(HTTP、FTP)+解释程序(HTML、Js、Java)

     网络服务器:如Apache

    7.统一资源定位符(URL)

      定义网页需要三个标识符:主机、端口号和路径。而定义网页之前需要告知浏览器使用哪种客户-服务器应用,即协议。前三个定义了网页,协议用来获取网页的运载工具形式。

    8.超文本传输协议(HTTP):定义了客户服务器程序如何编写和如何从万维网获取网页。(客户发生请求,HTTP服务器返回响应。HTTP服务器使用80端口号,客户使用随机的)

     由分层思想可以知道,应用层(最高层)会使用传输层的服务,而HTTP使用的是TCP服务(谁叫TCP是面向连接的可靠的传输层协议呢)。

     非持续连接和持续连接,前者每次使用一个新的TCP连接获取一个对象;后者使用一个TCP连接获取全部对象。HTTP1.1版默认制定了持续连接。

     HTTP本质上不提供安全,可以在安全套接层(SSL)上运行HTTP即HTTPS。

    9.文件传输协议(FTP),它是TCP/IP提供的标准机制,用于将文件从一个主机复制到另一个主机。

     FTP基本模型中,客户由用户接口+控制进程+数据传输进程三个组件组成;

                 服务器由控制进程+数据传输进程两个组件组成。

     在FTP整个会话期间,控制连接始终处于连接状态,而数据连接则在每次传输文件时开启传完关闭。

      FTP使用两个常用端口:端口21用于控制连接;端口20用于数据连接。

    10.电子邮件

      报文传输代理:SMTP(简单邮件传输协议);报文访问代理:POP3(邮局协议版本3)和IMAP4(英特网邮件访问协议版本4)

     第三章 传输层

    1.传输层是TCP/IP协议簇的核心,是一个进程到另一个进程的连接。(逻辑连接,一种假想的直接连接)

      网络层:不同主机间通信;传输层:不同主机的进程间通信(客户-服务器模式)。

     2. 客户机进程:os分配随机端口号(一般大于1023);服务器进程:熟知端口号(全局端口号)。

    3.从生产者传递数据项到消费者有两种方式:分为推和拉两种

      至少需要两种两种流量控制:①从发送方传输层到发送方应用层的流量控制;②从接收方传输层到发送方传输层的流量控制。

      缓存区,一组内存单元,可以在发送端和接受端存储分组。

    4.差错控制:①发现并丢弃被破坏的分组;②记录丢失和丢弃的分组并重传它们;③识别重复分组并丢弃它们;④缓冲失序分组知道丢失的分组到达。

      在英特网中,网络层(IP)是不可靠的,而应用层需要可靠性,则需要传输层是可靠的——通过差错控制服务来实现。

      序号  确认(ACK)  滑动窗口

    5.流量和差错控制的组合  拥塞控制——由网络层实现。

     无连接服务:分组可能会失序到达,流量控制、差错控制和拥塞控制都不能在无连接服务中有效实现——只有一个状态的FSM(已建立状态);

     面向连接的服务:提供端到端的服务,可以实现流量控制、差错控制和拥塞控制——具有6个状态的FSM

             (关闭状态,打开-等待-I,打开-等待-II,已建立的状态,关闭-等待-I,关闭-等待-II,关闭状态)。

    6.简单协议、停止-等待协议(提供流量控制和差错控制的面向连接协议)、回退N帧协议(GBN,流水线)、选择性重复协议(SR)

    7.UDP:无连接、不可靠的传输层协议,进行非常有限的差错检验,但其开销很小,是个非常简单的协议。适用于多播、管理进程(SNMP)、交互实时应用以及简单文件传输(TFTP)

    8.TCP:面向连接的可靠的协议,使用GBN和SR协议的组合来提供可靠性。(校验和、丢失或破坏分组重传、累积和选择确认以及计时器)

      tcp是一个面向流的协议,允许发送进程以字节流形式传递和接受数据。tcp将多个字节组合在一起称为一个分组,称为段(segment)。

      全双工通信、多路复用和多路分解、面向连接服务以及可靠的服务(使用确认机制来检查数据是否安全和完整的到达)。

     TCP连接——三次握手:

                ①:客户端发送一个段是SYN段。用于序号同步。(SYN段,不携带数据,但占用一个序号)

                ②:服务器发送第二个段,两个标志位SYN和ACK置位的段。(SYN+ACK段,不携带数据,但它占用一个序号)

                ③:客户发送第三个段,使用ACK标志和确认序号字段来确认收到了第二个段(ACK段,若不携带数据则不占用序号)。

      SYN泛洪攻击

     连接终止——三次握手:(大多数情况下是客户端发起关闭连接请求)

               ①:客户端发送FIN段(可包含客户端要发送的最后一个数据块,若不携带数据则该段占用一个序号);

               ②:服务器端发送FIN+ACK段(同上也可携带数据,若不携带数据则该段只占用一个序号);

               ③:客户端的TCP发送最后一个段,ACK段(不携带数据也不占用序号)

     连接半关闭——四次握手:

               ①:客户端发送FIN段(可包含客户端要发送的最后一个数据块,若不携带数据则该段占用一个序号);

               ②:服务器端发送ACK段;

               在这期间,客户端依然可以接受来着该服务器端的数据;

               ③:服务器端发送FIN段;

               ④:客户端的TCP发送最后一个段,ACK段(不携带数据也不占用序号)。

    第四章 网络层

      

  • 相关阅读:
    开场白
    八皇后(DFS)
    function-paren-newline (Rules) – Eslint 中文开发手册
    Java面试题:Error和Exception有什么区别?
    Linux mmove 命令
    字母间距 | letter-spacing (Scalable Vector Graphics) – CSS 中文开发手册
    object.watch (Object) – JavaScript 中文开发手册
    ASP.NET MVC HTML 帮助器
    C 库函数 – strerror()
    Java中的初始化模块
  • 原文地址:https://www.cnblogs.com/miaoxiaonao/p/8476618.html
Copyright © 2011-2022 走看看