笔记 订阅
《笔记》是周笔畅演唱的歌曲,该歌曲由黄友桢作曲,唐恬恬和黄友桢作词。该歌曲收录于2005年超级女声《终极PK》合集,后被收录于由人民音乐出版社编辑的第一部《流行音乐》教材中 [1]  。2006年获第12届全球华语榜中榜“搜索最热门年度歌曲奖” [2]  、第13届东方风云榜“十大金曲奖” [3]  、香港新城国语力“热爆K歌奖” [4]  。 展开全文
《笔记》是周笔畅演唱的歌曲,该歌曲由黄友桢作曲,唐恬恬和黄友桢作词。该歌曲收录于2005年超级女声《终极PK》合集,后被收录于由人民音乐出版社编辑的第一部《流行音乐》教材中 [1]  。2006年获第12届全球华语榜中榜“搜索最热门年度歌曲奖” [2]  、第13届东方风云榜“十大金曲奖” [3]  、香港新城国语力“热爆K歌奖” [4]  。
信息
歌曲原唱
周笔畅
中文名称
笔记
发行时间
2005年
谱    曲
黄友桢
所属专辑
超级女声 终极PK
歌曲语言
普通话
填    词
唐恬恬,黄友桢
歌曲时长
4分18秒
笔记创作背景
《笔记》作为周笔畅出道后的第一首个人作品,由黄友桢作曲,唐恬恬作词。唐恬恬表示在筹备这张《终极pk》合辑的时,许多超级女声对人生中的第一首单曲都倾向以爱情为主旋律,而周笔畅却要选择一首唱给妈妈的歌,表达对妈妈的感谢。周笔畅在录制《笔记》这首歌时仅花了半个小时便录制完成。 [5] 
收起全文
精华内容
参与话题
问答
  • javaScript学习笔记(一)js基础

    万次阅读 多人点赞 2018-09-21 10:07:18
    ================================= 公众号 关注一波 (一叶知秋博客) 不定期分享视频资料 一、简介 1、概述: ...JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要...

     

                                          公众号  关注一波  不定期分享视频资料

     

                                                                   

    一、简介

    1、概述:

    JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。

    诞生于1995年,当时的主要目的是验证表单的数据是否合法

    JavaScript本来应该叫Livescript,但是在发布前夕,想搭上当时超热的java顺风车,临时把名字改为了JavaScript。(也就是说js跟java没有关系,当时只是想借助java的名气)。

    js组成部分:

    (1)核心(ECMAScript):这一部分主要是js的基本语法。

    (2)BOM:Brower Object Model(浏览器对象模型),主要是获取浏览器信息或操作浏览器的,例如:浏览器的前进与后退、浏览器弹出提示框、浏览器地址栏输入网址跳转等操作等。

    (3)DOM:Document Object Model(文档对象模型),此处的文档暂且理解为html,html加载到浏览器的内存中,可以使用js的DOM技术对内存中的html节点进行修改,用户从浏览器看到的是js动态修改后的页面。(增删改查)

    2、特点:

    1. 交互性(它可以做的就是信息的动态交互)
    2. 安全性(不允许直接访问本地硬盘)
    3. 跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关)

    3、和Java区别:

    4、作用

    avaScript 被用来改进设计、验证表单、检测浏览器、创建cookies,等等。JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比如: Internet Explorer、 Maxthon、Mozilla、Firefox、Netscape、Chrome和 Opera等。

    在目前学习阶段只要记住最常用的二个:(1)运态修改html及css代码 (2)验证表单

    5、书写位置

    5.1、内嵌式:

    理论上js可以书写在页面的任意位置。

    <script>

    alert("内嵌式")

    </script>

    5.2、外链式:

    首先新建一个文件类型为.js的文件,然后在该文件中写js语句,通过script标签对引入到html页面中。

    <script src="js文件路径地址">这里不能写js语句</script>

    5.3、行内式:

    直接书写在标签身上,是一个简写的事件,所以又称之为事件属性。     onclick单击事件

    <input type="button" value="点我呀!" onclick="alert('点我干啥!^6^');">
    <button onclick="alert('恭喜你,中 500 万.');">点我呀!</button>
    

    6、注释:

    单行注释:		//	注释语句		快捷键ctrl+/
    多行注释:		/* 注释语句 */    快捷键ctrl+shift+/   
    注意:多行注释相互不能嵌套使用,只能在多行注释里面使用单行注释!
    

    7、数据类型:

    Js中的数据类型:
     

    数值型:number(凡是数字都是数值型,不区分整数和小数)
    字符串:string(凡是引号包裹起来的内容全部都是字符串)
    布尔:boolean(true、false)
    对象类型:object(特殊取值null)
    未定义型:undefined
    

    对比java中的数据类型:

    整数:byte short int long
    小数:float double
    字符:char 
    布尔:boolean
    字符串:String

    8、变量:

    8.1、定义:就是存放数据的、内疗可以存储任意数据

    8.2、声明变量:
     

    var 变量名称 = 存储的数据;   	(variable 变量)

    8.3、变量命名规范:

    1.	只能由字母、数字、_(下划线)、$(美元符号)组成。
    2.	不能以数字开头。
    3.	命名中不能出现-(js会理解成减号进行减法的操作),不能和关键字冲突。
    

    js是弱类型语言,不重视类型的定义,但js会根据为变量赋值的情况自定判断该变量是何种类型:

    数值型:var i = 1;	var d = 2.35;
    字符串:var str = "用心学习";
    布尔型:var b = true;
    

    对比Java:java是强类型的语言,注重类型的定义,Java定义类型如下:

    整型:int i = 1;
    浮点型:double d = 2.35;
    字符串:String str = “用心学习”;
    布尔型:boolean b = true;
    

    总结:js中变量的定义。只要加一个var就行。java则使用什么类型的变量就要定义什么类型的。

    9、检测数据类型:

    typeof(value); 或者typeof value;     返回这个变量的类型. 
    说明 : 同一个变量, 可以进行不同类型的数据赋值.
    
    <script type="text/javascript">
        
        var a;
        alert(typeof a);  // undefined
    
        a = 998;
        alert(typeof a); // number
    
        a = "用心学习";
        alert(typeof a); // string
    
        a = true;
        alert(typeof a); // boolean
        
    </script>
    

    10、算术运算符

    +	-	*	/	%	++	--

    注意:

    1.	由于js中的小数和整数都是number类型,不存在类似整数除以整数还是整数的结论。
    2.	字符串和其他的数据使用+号运算,会连接成一个新的字符串。
    3.	字符串使用除了+以外的运算符:如果字符串本身是一个数字,那么会自动转成number进行运算
    ,否则就会返回一个NaN的结果,表示这不是一个数字。NaN:not a number
    
    <script>
    
        alert(1234 / 1000 * 1000); // 1234
      
        var s = "12";
         s -= 10;
        alert(s);  // 2
     
        var s = "aa";
        s -= 10;
        alert(s);  // NaN       Not a Number 不是一个数字
    
        var s = "12";
        s += 10;
        alert(s);       // 1210 
    
    </script>
    

    11、关系(比较)运算符

    >		>=		<		<=  	!=		
    ==	等于(只比较内容)	===	恒等于(比较内容的同时还要比较数据类型)
    注意:关系运算符返回的结果只有两个:true / false
    
    <script>
    
        // 请问1 : 3 > 5, 结果为 ?
        alert(3 > 5);   // false
    
        // 请问2 : “22” == 22  结果为 ?
        alert("22" == 22); // true  (仅仅判断数值)
    
        // 请问3 : “22” === 22  结果为 ?
        alert("22" === 22);  // false  (恒等于, 数值和类型都要相等)
        
    </script>
    

    12、逻辑运算符

    &&	 	与		true&&false		====>false
    || 		或		true||false			====>true
    ! 		非		!true				====>false
    false(理解):false,  0,  null,  undefined 
    true(理解):true, 非0,  非null,  非undefined
    
    针对 && 顺口溜: 找第一个出现的假值. (一假即假)
    针对 || 顺口溜: 找第一个出现的真值. (一真即真)

    演示一:

    <script>
    
        // 短路与 (一假即假)
        // 口诀 : 找第一个为假的值.
    
        // 请问1 :  8 < 7 && 3 < 4, 结果为 ?
        alert(8 < 7 && 3 < 4);  // false
    
        // 请问2 :  -2 && 6 + 6 && null 结果为 ?
        alert(-2 && 6 + 6 && null); // null
    
        // 请问3 :  1 + 1 && 0 && 5  结果为 ?
        alert(1 + 1 && 0 && 5); // 0
    
    </script>
    

    演示二:

    <script>
    
        // 短路或 : 一真即真.
        // 口诀 : 找第一个为真的值.
    
        // 请问1 :  0 || 23 结果为 ?
        alert(0 || 23); // 23
    
        // 请问2 :  0 || false || true  结果为 ?
        alert(0 || false || true); // true
    
        // 请问3 :  null || 10 < 8 || 10 + 10结果为 ?
        alert(null || 10 < 8 || 10 + 10);  // 20
    
        // 请问4 :  null || 10 < 8 || false结果为 ?
        alert(null || 10 < 8 || false); // false
        
    </script>
    

    13、三元运算符:

    条件?表达式1:表达式2
    如果条件为true,返回表达式1的结果
    如果条件为false,返回表达式2的结果
    

    演示:

    <script>
    
        // 请问1 :  3 ? “aaa” : “bbb” 结果为 ?
        alert(3 ? "aaa" : "bbb");       // aaa
    
        // 请问2 :  0 ? “ccc” : “ddd”  结果为 ?
        alert(0 ? "ccc" : "ddd");       // ddd
        
    </script>
    

    14、if条件语句

    这个和Java中if语句一样。

    演示:

    <script>
    
          var score = 59;
    
          if (score >= 90) {
              alert("优秀");
          } else if (score >= 80) {
              alert("良好");
          } else if (score >= 60) {
              alert("及格");
          } else {
              alert("不及格");
          }
    
      </script>
    

    15、switch分支结构

    这个和java中switch结构一样。只是Java中表达式为:常量 整型(去long)、字符、字符串

    演示:

    <script>
    
          var score = 59;
    
          // 需求 : 将需要一个整型数值, 不想要小数点.
          // window 对象的 parseInt 方法.
          score = window.parseInt(score / 10 + "");
          // alert(score);
    
          switch (score) {
              case 10:
              case 9:
                  alert("优秀!");
                  break;
              case 8:
                  alert("良好!");
                  break;
              case 7:
              case 6:
                  alert("及格!");
                  break;
              default:
                  alert("不及格!");
                  break;
          }
    
      </script>
    

    16、循环结构 while、do-while. for;

    while(循环条件){循环体;}
    do{循环体;}while(循环条件);
    for(循环变量赋初值;循环条件;循环变量增值){循环语句;}
    console.log(...); 以日志的形式在控制台输出结果!
    

    演示:

    <script>
    
        // 需求 : 统计 1~100 之间能够被3和7整除的数字个数
    
        var count = 0;
    
        // 1. 遍历 1~100 之间的所有整型数值
        for (var i = 1; i <= 100; i++) {
    
            // 2. 判断
            if (i % 3 == 0 && i % 7 == 0) {
                // alert(i);
                console.log(i);
                // 3. 累加个数
                count++;
            }
        }
    
        // 4. 查看结果
        // alert(count);
        console.log(count);
    
    

    console.log显示如下:

    17、循环嵌套

    演示案例9*9乘法表

     <style>
            table {
                /* 将 table 表格的线变成了细线 */
                border-collapse: collapse;
                /*color: red;*/
                border-color: red;
            }
        </style>
    
        <script>
    
            // 需求 : 九九乘法口诀表
            document.write("<table border='1px solid red' cellspacing='0' cellpadding='8px'>");
            document.write("<caption>九九乘法口诀表</caption>");
            for (var i = 1; i <= 9; i++) {
                document.write("<tr>");
                for (var j = 1; j <= i; j++) {
                    document.write("<td>");
                    document.write(j + "*" + i + "=" + (j*i) + "&nbsp;&nbsp;&nbsp;&nbsp;");
                    document.write("</td>");
                }
                document.write("</tr>");
            }
            document.write("</table>");
    
        </script>
    
    

    18、自定义函数

    函数是命名的独立的语句段,这个语句段可以被当作一个整体来引用和执行:

    格式:

    function 函数名(形式参数){函数体}
    调用函数:函数名(实际参数);
    

    18.1、函数只有被调用后才会执行

    18.2、如果函数需要返回值、直接使用return 返回、不会像java一样要考虑返回值的类型

    <script type="text/javascript">
    
        // 定义一个函数 : function
        function demo2() {
            return 666;
        }
    
        // 调用函数 :
        alert(demo2());
    
    </script>
    

    18.3、如果函数需要传递参数、不需要指定参数的类型、直接使用变量即可

    <script type="text/javascript">
    
        // 定义一个函数 : function
        function demo3(a, b) {
            return a + b;
        }
    
        // 调用函数 :
        alert(demo3(10, 20));//显示30
    
    </script>
    

    18.4、js中出现二个重名的函数名、后者会把前面的覆盖掉

    对比java、java有重载(同名不同参)、重写(同名同参同返回值类型、方法体不一样)

    演示:

    <script type="text/javascript">
    
        // 定义一个函数 : function
        function demo4(a, b) {
            alert("调用1...");
        }
    
       function demo4() {
           alert("调用2...");
       }
    
        demo4(10, 20);
        demo4();
    
    </script>
    

    会显示二次下面的图片:

    19、匿名函数

    匿名函数是没有名字的函数

    function(形式参数){函数体}
    调用方式:将匿名函数赋值给一个变量,通过变量名调用函数
    定义函数并赋值给变量:var fn = function(形式参数){函数体}
    调用函数:fn(实际参数);
    

    演示:

    <script type="text/javascript">
    
        // 匿名函数 : 没有名称的函数
        var func = function(i, u) {
            alert(i + " love " + u);
        }
    
        // 调用函数 :
       func("柳岩", "小白");//显示柳岩love小白
    
    </script>
    

    20、案例-轮播图

    说明1 : script 标签需要放在 body 标签之后.
    
    说明2 : window.setInterval(“字符串函数名称()”, 时间毫秒数);
    
    说明3 : window.setInterval(函数名称, 时间毫秒数);
    
    说明4 : window.setInterval(匿名函数, 时间毫秒数);            推荐使用
    <head>
        <meta charset="UTF-8">
        <title>轮播图</title>
    
        <style>
    
            div {
                width: 80%;
                margin: 50px auto;
            }
    
            img {
                width: 100%;
            }
    
        </style>
    
    </head>
    <body>
        <div class="container">
            <img src="../img/01.jpg" alt="图片">
        </div>
    </body>
    

    实现一:

    <script>
    
        // 需求 : 动态获取页面中的 img 标签, 然后修改 img 标签的 src 属性.
        // 1. 获取 img 标签
        var img = document.getElementById("img");
        // alert(img);
    
        // 定义一个变量
        var count = 1;
    
        // 1.2 定义一个函数
        function changeImageSrc() {
            count++;
            img.src = "../img/0"+count+".jpg";
    
            // 判断
            if (count == 8) {
                count = 0;
            }
        }
    
        // 2. 循环切换图片
        // window.setInterval(函数, 时间毫秒); 在指定的时间毫秒间隔, 不断调用第一个参数传入的函数.
        // 调用方式一 :
        // window.setInterval("changeImageSrc()", 1000);
        // 调用方式二 :
        window.setInterval(changeImageSrc, 1000);
    
    </script>
    

    实现二:

    <script>
    
        // 需求 : 动态获取页面中的 img 标签, 然后修改 img 标签的 src 属性.
        // 1. 获取 img 标签
        var img = document.getElementById("img");
        // alert(img);
    
        // 定义一个变量
        var count = 1;
    
        // 2. 循环切换图片
        // window.setInterval(匿名函数, 时间毫秒); 在指定的时间毫秒间隔, 不断调用第一个参数传入的匿名函数.
        window.setInterval(function() {
            count++;
            img.src = "../img/0"+count+".jpg";
    
            // 判断
            if (count == 8) {
                count = 0;
            }
        }, 1000);
    
    </script>
    

    21、js事件

    21.1、事件概述:

    事件三要素:
    1.	事件源:被监听的html元素(就是这个事件加给谁),就是某个(某些)html标签
    2.	事件类型:某类动作,例如点击事件,移入移除事件,敲击键盘事件等
    3.	执行指令:事件触发后需要执行的代码,一般使用函数进行封装
    语法格式:事件源.事件类型=执行指令
    

    21.2、常用的事件:

    案例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件</title>
    
        <script>
            // 窗口 : window 对象提供了一个事件类型  onload 页面加载完成事件.
            // 事件源 : window    事件类型 : 页面加载完成事件 (onload)  执行指令: 就是赋值的 function 函数.
            window.onload = function () {
    
                // 获取页面的 btn 按钮
                var btn = document.getElementById("btn");
                // alert(btn);
    
                // 给 btn 按钮绑定一个事件 (单击事件 onclick)
                // 事件源 : btn按钮    事件类型 : 单击事件 (onclick)  执行指令: 就是赋值的 function 函数.
                btn.onclick = function () {
                    alert("恭喜你, 中了 500 万!");
                }
            }
    
        </script>
    
    </head>
    <body>
        <button id="btn">按钮</button>
    </body>
    </html>
    

    到此基础结束。

     

    ==============《轮播图图片路径问题》================

     

                                                           =================================

                        公众号  关注一波  (一叶知秋博客)不定期分享视频资料

                                                           

     

     

    展开全文
  • 深度学习笔记(13) Softmax分类

    万次阅读 2019-06-08 09:24:14
    Softmax 回归、练一个Softmax分类器

    深度学习笔记(13) Softmax分类


    1. Softmax 回归

    有一种logistic回归的一般形式,叫做 Softmax回归
    能在试图识别某一分类时做出预测
    或者说是多种分类中的一个,不只是识别两个分类

    假设不单需要识别猫,而是想识别猫,狗和小鸡
    把猫加做类1,狗为类2,小鸡是类3
    如果不属于以上任何一类,就分到“其它”或者说“以上均不符合”这一类,把它叫做类0

    用大写的C来表示输入会被分入的类别总个数
    建立一个神经网络,其输出层有4个,或者说C个输出单元
    因此n,即输出层也就是L层的单元数量,等于4,或者一般而言等于C
    则输出层单元的数字代表这4种类型中每个的概率

    做到这一点的标准模型要用到Softmax层,以及输出层来生成输出
    对于L层,得到的z值
    在这里插入图片描述用这个元素取幂方法来计算 t:
    在这里插入图片描述
    把四个数字加起来得到176.3
    最终 a[l] = t / 176.3
    第一个节点输出 e5/176.3=0.842,也就是概率84.2%

    Softmax激活函数的特殊之处在于
    因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量
    Softmax分类器还可以代表的决策边界


    2. 练一个Softmax分类器

    简单来说就是用临时变量t将它归一化,使总和为1,于是这就变成了a[L]
    注意到向量z中,最大的元素是5
    而最大的概率也就是第一种概率,Softmax把向量z变成这个向量
    在这里插入图片描述
    在Softmax分类中,一般用到的损失函数是来训练这个神经网络
    这就意味着,如果试图将它变小
    因为梯度下降法是用来减少训练集的损失的
    要使它变小的唯一方式就是使 -logy^\widehat{y}1 变小,即需要使 y^\widehat{y}1 尽可能大
    整个训练集的损失
    在这里插入图片描述


    参考:

    《神经网络和深度学习》视频课程


    相关推荐:

    深度学习笔记(12)Batch归一化网络
    深度学习笔记(11)超参数调试
    深度学习笔记(10)优化算法(二)
    深度学习笔记(9) 优化算法(一)
    深度学习笔记(8) 实践层面(三)


    谢谢!

    展开全文
  • 〖TensorFlow2.0笔记23〗TensorFlow2.0学习笔记总结!

    千次阅读 多人点赞 2019-10-02 20:38:15
    Tensorflow2.0全套课程学习笔记! tensorflow2.0笔记1:tensorflow2.0介绍以及安装!(2019-10-1 tensorflow2.0正式版发布) tensorflow2.0笔记2:Numpy—实现线性回归问题! tensorflow2.0笔记3:手写数字问题初...
    TensorFlow2.0学习笔记总结!

    文章目录

    一. 第1部分目录

    1. TensorFlow2.0笔记1:TensorFlow2.0(2019-10-1)正式版介绍和安装+Windows&Linux!

    2. TensorFlow2.0笔记2:手写数字(MNIST)识别问题初体验!

    3. TensorFlow2.0笔记3:Numpy—实现线性回归问题!

    4. TensorFlow2.0笔记4:TensorFlow2.0的基础操作!

    5. TensorFlow2.0笔记5:TensorFlow2.0中的索引和切片!

    6. TensorFlow2.0笔记6:TensorFlow2.0中的维度变换!

    7. TensorFlow2.0笔记7:TensorFlow2.0中的broadcasting!

    8. TensorFlow2.0笔记8:TensorFlow2.0中的前向传播实战+补充关于loss的放缩!

    9. TensorFlow2.0笔记9:TensorFlow2.0的高阶操作汇总!

    二. 第2部分目录

    1. TensorFlow2.0笔记10:TensorFlow2.0中数据集加载,测试,实战以及补充关于数据集下载慢的问题!

    2. TensorFlow2.0笔记11:全连接层和输出方式!

    3. TensorFlow2.0笔记12:误差计算之MSE, Cross Enropy!

    4. TensorFlow2.0笔记13:梯度下降,函数优化实战,手写数字问题实战以及Tensorboard可视化!

    5. TensorFlow2.0笔记14:感知机梯度详细过程,Keras高层API,Keras的自定义网络!

    6. TensorFlow2.0笔记15:模型的保存与加载(非常重要)以及CIFAR10自定义网络实现!

    7. TensorFlow2.0笔记16:卷积神经网络中的梯度求解以及CIFAR100与VGG13实战!

    8. TensorFlow2.0笔记17:ResNet-18和ResNet-34实现CIFAR-100图像分类!

    9. TensorFlow2.0笔记18:自编码器Auto-Encoders以及实战!

    三. 第3部分目录

    1. TensorFlow2.0笔记19:过拟合介绍以及解决方法+补充: 实现GPU按需分配!

    2. TensorFlow2.0笔记20:GoogleNet-Iception实现Fashion mnist图像分类+Batch Normalization讲解!

    3. TensorFlow2.0笔记21:自定义数据集实现分类(宝可精灵数据集)+补充tf.where!

    4. TensorFlow2.0笔记22:使用Numpy在MNIST数据集上实现3层BP神经网络!

    5. TensorFlow2.0笔记23:TensorFlow2.0学习笔记总结!!

    6. TensorFlow2.0笔记24:生成式对抗网络(GAN)原理讲解以及实战!

    7. TensorFlow2.0笔记25:循环神经网络RNN原理讲解以及实战!

    在这里插入图片描述

    四. 第4部分目录

    1.『自己的工作3』梯度下降实现SVM多分类+最详细的数学推导+Python实战(鸢尾花数据集)!

    2.『自己的工作4』TensorFlow2.0自动微分和手工求导的结果对比!

    3.『自己的工作6』MNIST Plus++竞赛(更加困难的mnist数据集竞赛)!

    4.『论文笔记』Convolutional Block Attention Module(注意力机制)+TensorFlow2.0复现!

    在这里插入图片描述

    5.〖TensorFlow2.0笔记23〗(更新版)ResNet-18实现Cifar10(94%)和Cifar100(75%)分类!

    在这里插入图片描述

    6.〖TensorFlow2.0笔记26〗YOLOV2目标检测算法以及实战!

    在这里插入图片描述

    五. 欢迎点赞转发,持续更新中!

    六. 需要全套资料的可以私聊我!

    • 方式1:CSDN私信我!
    • 方式2:QQ邮箱:1115291605@qq.com或者直接加我QQ!
    展开全文
  • 《计算机网络》复习笔记

    万次阅读 多人点赞 2018-01-05 21:20:48
    《计算机网络》复习笔记 本复习笔记基于谢希仁的《计算机网络》第五版教材整理。 计算机网络复习笔记 绪论 1 计算机网络 2 因特网概述 3 互联网的组成 P8 4 计算机网络的类别 P17 5 计算机网络的体系结构 P25 ...

    《计算机网络》复习笔记

    本文同时发布在我的个人博客: https://wiki.hushhw.cn/posts/415999f5.html

    说明:

    • 本复习笔记基于谢希仁的《计算机网络》第五版教材整理。
    • 由于这篇复习笔记只是我本科考试前做的总结,所以水平非常有限,并且因为时间不够所以后面并没有继续整理。
    • 编辑这篇文章时是我第一次直接使用 markdown 编辑文章,所以导致排版语法有一些错误,见谅。
    • 我也没想到,这篇复习笔记忽然就热度起来了。。。

    后来考研复习时的复习PPT可以作为补充计算机网络笔记
    后来考研复习时的复习PPT可以作为补充计算机网络笔记
    后来考研复习时的复习PPT可以作为补充计算机网络笔记

    绪论

    1.1 计算机网络

    1. 计算机网络向用户提供的两个最重要的功能:
    • 连通性
    • 共享

    1.2 因特网概述

    1. 因特网发展的三个阶段:
    • 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。
    • 第二阶段:建成三级结构的因特网:主干网、地区网和校园网(或企业网)。
    • 第三阶段:形成多层次的ISP(Internet Service Provider 因特网服务提供者)结构的因特网
    1. Internet 和 Internet 的区别:
    • internet:通用名词,它泛指由多个计算机网络互连而成的网络。
    • Internet:专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用 TCP/IP 协议族作为通信的规则,且其前身是美国的 ARPANET。

    1.3 互联网的组成 P8

    • 边缘部分:有所有连接在因特网上的主机组成。这部分由用户直接使用,用来进行通信和资源共享。
    • 核心部分 : 由大量的网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
    1. 处于边缘部分的用户通信方式 P9-P10
    • 客户服务器方式(C/S方式):即Client/Server方式。(客户是服务的请求方,服务器是服务的提供方)

    • 对等方式(P2P方式):即Peer-to-Peer方式。(对等连接中的每一个主机既是客户又同时是服务器)

    1. 核心部分的交换技术 P11-15
    • 电路交换 的三个阶段:建立连接——通话——释放连接
      在通话时,两用户之间占用端到端的资源,而由于绝大部分时间线路都是空闲的,所以线路的传输速率往往很低。
    • 分组交换 的组成:报文、首部、分组。采用存储转发技术,即收到分组——存储分组——查询路由(路由选择协议)——转发分组。优点:高效、灵活、迅速、可靠。缺点:时延、开销。关键构件:路由器。
    • 报文交换 整个报文传送到相邻结点,全部存储下来之后查询转发表,转发到下一个结点。
      图片来源:blog.csdn.net/hcbbt/article/details/18271491
      这里写图片描述

    1.4 计算机网络的类别 P17

    1. 分类
    • 按通信距离分:广域网、局域网、城域网

    • 按信息交换方式分:电路交换网、分组交换网、总和交换网

    • 按网络拓扑结构分:星型网、树型网、环型网、总线网

    • 按通信介质分:双绞线网、同轴电缆网、光纤网、卫星网

    • 按传输带宽分:基带网、宽带网

    • 按使用范围分:公用网、专用网

    • 按速率分:高速网、中速网、低速网

    • 按通信传播方式分:广播式、点到点式

    1. 性能指标(P18):速率、带宽、时延
    • 速率:指连接在计算机网络上的主机在数字信道上传送数据的速率。b/s(bps) 如100M以太网,实际是指100Mb/s。往往是指额定速率或标称速率。

    • 带宽:数字信道所能传送的最高速率。b/s(bps)

    • 吞吐量:单位时间内通过某个网络(或信道、接口)的实际数据量。其绝对上限值等于带宽。

    • 时延:数据(一个报文或分组、甚至比特)从网络(或链路)的一段传送到另一端的时间,也称延迟。
        ① 发送时延:主机或路由器发送数据帧所需的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。也成传输时延。
      发送时延 = 数据帧长度(b) / 信道带宽(b/s)
       ② 传播时延:电磁波在信道中传输一定距离所需划分的时间。
      传播时间 = 信道长度(m) / 传输速率(m/s)
       ③ 处理时延:主机或路由器处理收到的分组所花费的时间。
       ④ 排队时延:分组在输入队列中等待处理的时间加上其在输出队列中等待转发的时间。
      综上:总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延。
      注:对于高速网络链路,提高的是发送速率而不是传播速率。

    • 时延带宽积:传播时延 * 带宽。表示链路的容量。

    • 往返时间RTT:从发送方发送数据开始,到发送发收到接收方的确认为止,所花费的时间。

    • 利用率:某信道有百分之几是被利用的(有数据通过)。而信道或网络利用率过高会产生非常大的时延。
      当前时延=空闲时时延/(1-利用率)

    1.5 计算机网络的体系结构 P25

    1. 网络协议:简称协议,是为了进行网络中的数据交换而建立的规则、标准或约定。
    2. 网络协议的三要素
    • 语法:数据与控制信息的结构或格式
    • 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
    • 同步:事件实现顺序的详细说明
    1. 体系结构(architecture)是计算机网络的各层及其协议的集合
    2. 五层协议的体系结构
    • 物理层:物理层的任务就是透明地传送比特流。(注意:传递信息的物理媒体,如双绞线、同轴电缆、光缆等,是在物理层的下面,当做第0 层。)物理层还要确定连接电缆插头的定义及连接法。
    • 数据链路层:将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上”透明“的传送以帧为单位的数据。每一帧包括数据和必要的控制信息。在收到数据时,控制信息使收到端直到哪个帧从哪个比特开始和结束。
    • 网络层:选择合适的路由,使发送站的运输层所传下来的分组能够正确无误地按照地址找到目的站,并交付给目的站的运输层。网络层将运输层产生的报文或用户数据报封装成分组(IP数据报)或包进行传送。
    • 运输层:向上一层的进行通信的两个进程之间提供一个可靠的端对端服务,使它们看不见运输层以下的数据通信的细节。(TCP、UDP)
    • 应用层:直接为用户的应用进程提供服务(HTTP、FTP等)
    1. OSI体系结构:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层
    2. TCP/IP体系结构:网络接口层、网际层IP、运输层、应用层
      图片来源网络

    物理层

    2.1 物理层下的传输媒体

    图片来源网络

    1. 导向传输媒体
      1.1. 双绞线
      双绞线已成为局域网中的主流传输媒体
    • 屏蔽双绞线 STP (Shielded Twisted Pair)
    • 无屏蔽双绞线 UTP (Unshielded Twisted Pair)

    1.2. 同轴电缆

    • 细缆(适合短距离,安装容易,造价低)
    • 粗缆(适合较大局域网,布线距离长,可靠性好)

    1.3. 光纤
    光纤有很好的抗电磁干扰特性和很宽的频带,主要用在环形网中

    • 多模光纤(用发光二极管,便宜,定向性较差)
    • 单模光纤(注入激光二极管,定向性好)
    1. 非导向传输媒体
      微波、红外线、激光、卫星通信

    2.2 关于信道的几个基本概念

    1. 通信方式
    • 单向通信(单工)
    • 双向交替通信(半双工)
    • 双向同时通信(全双工)
    1. 基带信号:来自信源的信号。 带通信号:经过载波条之后的信号。基本带通调制方法:调幅(AM)、调频(FM)、调相(PM)

    2.3 信道复用技术

    这部分掌握码分复用计算即可

    • 频分复用FDM (Frequency Division Multiplexing):所有用户在同样的时间占用不同的频率带宽资源。
    • 时分复用TDM(Time Division Multiplexing)则是将时间划分为一段段等长的时分复用帧(TDM 帧)。
    • 统计时分复用 STDM(Statistic TDM)是改进的时分复用,明显地提高信道的利用率。
    • 波分复用 WDM (Wavelength Division Multiplexing):光的频分复用
    • 码分复用 CDM (Code Division Multiplexing)常用的名词是码分多址 CDMA:有很强的抗干扰能力。

    码分多址的计算靠一个例题就基本会了:
    课后习题

    数据链路层

    数据链路层使用的信道主要有以下两种类型:

    • 点对点信道
    • 广播信道

    3.1 使用点对点信道的数据链路层

    1. 链路 :从一个结点到相邻结点的一段物理线路

    2. 数据链路 :把实现这些协议的硬件和软件加载链路上
      现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。

    3. 三个基本问题:

    • 封装成帧
      就是在一段数据的前后分别添加首部(帧开始符SOH 01)和尾部(帧结束符EOT 04),然后就构成了一个帧。(数据部分<=长度限制MTU)首部和尾部的一个重要作用就是进行帧定界。
      帧定界是分组交换的必然要求
    • 透明传输
      为了达到透明传输(即传输的数据部分不会因为包含SOH和EOT而出错),在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制1B)
      透明传输避免消息符号与帧定界符号相混淆
    • 差错检测
      现实通信链路中比特在传输中会产生差错,传输错误的比特占比称为误码率BER,为了保证可靠性,通常通过循环冗余检验CRC来做差错检测。
      差错检测防止无效数据帧浪费后续路由上的传输和处理资源

    CRC校验在计算机组成与结构中学过不做解释
    会做课后习题7、8题即可

    3.2点对点协议 PPP P70

    1. PPP协议的组成部分
    • 一个将 IP 数据报封装到串行链路的方法
    • 链路控制协议 LCP (Link Control Protocol)
    • 网络控制协议 NCP (Network Control Protocol)
    1. PPP协议的帧格式
      图片来源:blog.csdn.net/cainv89/article/details/50614218
      首部:
    • 首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。
    • 首部中的地址字段A规定为0xFF(即11111111)。
    • 首部中的控制字段C规定为0x03(即00000011)。
    • 首部中的2字节的协议字段:
      (1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
      (2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。
      (3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。

    尾部:

    • 尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
    • 尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。
    1. 透明传输的实现方法
      当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
    • 字节填充——PPP使用异步传输
      当 PPP 用在异步传输时,就使用一种特殊的字符填充法:将每一个 0x7E字节变为(0x7D, 0x5E),0x7D转变成为(0x7D, 0x5D)。ASCII 码的控制字符(即数值小于 0x20 的字符),则在前面要加入0x7D,同时将该字符的编码加以改变。

    • 零比特填充——PPP使用同步传输
      只要发现有5个连续的1,则立即填入一个0
      图片来源:blog.csdn.net/cainv89/article/details/50614218

    这部分考题很简单:见课后习题10

    1. PPP 协议的工作状态:
      链路静止-建立物理层-链路建立-pc发LCP-NCP分配IP地址-链路打开,网络层建立。(释放时倒过来)

    3.3 使用广播信道的数据链路层 P76

    广播信道是一种一对多的通信,局域网使用的就是广播信道

    1. 局域网的数据链路层(局域网的数据链路层被拆分为了两个子层)
    • 逻辑链路控制LLC子层:与传输媒体无关
    • 媒体接入控制MAC子层:和局域网都对LLC子层来说是透明的
    1. CSMA/CD 协议
      以太网采用CSMA/CD协议的方式来协调总线上各计算机的工作。在使用CSMA/CD协议的时候,一个站不可能同时进行发送和接收,因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工)。

    CSMA/CD是载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)的缩写,下面是CSMA/CD协议的要点:

    • **“多点接入”**就是计算机以多点接入(动态媒体接入控制)的方式连接在一根总线上。

    • **“载波监听”**就是”发送前先监听”,即每一个站在发送数据前先要检测一下总线是否有其他站在发送数据,如有则暂时不要发送数据,要等到信道为空闲。

    • **“碰撞检测”**就是“边发送边监听”,即适配器边发送数据边检测信道上的信号电压的变化情况。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

      把总线上的单程端到端传播时延记为τ,A 发送数据后,最迟要经过2τ才能知道自己发送的数据和其他站发送的数据有没有发生碰撞。

    3.4 以太网的MAC层

    1. MAC地址
      “MAC地址”又叫做硬件地址或物理地址,实际上就是适配器地址或适配器标识符EUI-48。高位24位:厂家,低位24位由厂家自行指派

    2. MAC帧的格式
      常用的以太网MAC帧格式有两种标准 : DIX Ethernet V2 标准IEEE 的 802.3 标准。V2使用较多,如图:
      图片来源:见水印blog.csdn.net/ftxc_blog/article/details/12811235
      以太网V2的MAC帧较为简单,有五个字段组成。
      前两个字段分别为6字长的目标地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。后面数据字段46~1500字节,FCS字段4个字节。

    3.5 扩展的以太网

    1. 在物理层扩展—集线器 P91
      现在,双绞线以太网成为以太网的主流类型,扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器。

    光纤调制解调器的作用,是进行电信号和光信号的转换。

    1. 在数据链路层扩展—网桥(自学习算法)P94
      注:在数据链路层扩展以太网要使用网桥
      网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发或过滤。当网桥收到一个帧时,并不是向所有的接口转发这个帧,而是检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。

    具体可以参考这篇博客:
    http://blog.csdn.net/cainv89/article/details/50651489

    1. 虚拟局域网-交换机P98
      多接口网桥即交换式集线器常称为以太网交换机。利用以太网交换机可以很方便地 实现虚拟局域网,虚拟局域网协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为 VLAN 标记。

    网络层

    4.1 网际协议IP

    网际协议IP是TCP/IP体系中两个最重要的协议之一,也是最重要的因特网标准协议之一。与IP协议配套是用的四个协议:
    1.地址解析协议ARP:是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
    2.逆地址解析协议RARP:是解决同一个局域网上的主机或路由器的硬件地址和IP地址的映射问题。
    3.网际控制报文协议ICMP:提供差错报告和询问报文,以提高IP数据交付成功的机会
    4.网际组管理协议IGMP::用于探寻、转发本局域网内的组成员关系。

    图片来源网络

    4.1.1 虚拟互连网络

    因为没有一种单一的网络能够适应所有的用户需求,所以网络互连也变得困难,所以需要一些中间设备:

    • 物理层中间设备:转发器(repeater)
    • 数据链路层中间设备:网桥或桥接器(bridge)
    • 网络层中间设备:路由器(router)
    • 网络层以上的中间设备:网关(gateway)

    具体各层的设备说明可以看这篇博客“网络设备”部分:
    http://blog.csdn.net/hushhw/article/details/78489470

    4.1.2 分类的IP地址 P113

    IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。由因特网名字与号码指派公司ICANN进行分配。

    IP地址编制方法的三个阶段:

    • 分类的IP地址
    • 子网的划分
    • 构成超网

    每一类地址都由 网络号 net-id和 主机号 host-id组成
    主机号中全0表示网络地址,全1表示广播地址

    图片来源网络
    图片来源网络

    • A类
    1. 由1字节的网络地址和3字节主机地址组成
    2. 网络地址的最高位必须是“0“,可指派的网络数为128-2,减2的原因是0.0.0.0对应“本网络”,另外一个是127.0.0.1是本地软件的回环地址,用于测试自己电脑IP地址是否可用。
    3. 地址范围1.0.0.0到126.255.255.255
    4. 最大主机数为2563-2=16777214台,减2的原因是全0的主机号字段代表该IP地址是"本主机“,全1表示”所有的“,表示该网络上的所有主机
    • B类
    1. 由2字节的网络地址和2字节主机地址组成
    2. 网络地址的最高位必须是“10”,可指派的网络数为 214 -1,因为最高位为10,所以不存在全0全1的情况,但是B类网络地址128.0.0.0是不指派的,可指派最小网络地址是128.1.0.0
    3. 地址范围128.0.0.0-191.255.255.255
    4. 最大主机数为2562-2=65534台,减2同样是全0全1情况。
    • C类
    1. 由3字节的网络地址和1字节主机地址组成
    2. 网络地址的最高位必须是“110”,可指派的网络数为221-1,192.0.0.0不指派,最小可指派网络地址是192.0.1.0
    3. 地址范围192.0.0.0-223.255.255.255
    4. 最大主机数为256-2=254台,减2同样是全0全1情况。
    • D类是多播地址,“lll0”开始

    • E类地址保留为今后使用,“llll0”开头

    4.1.3 IP地址与硬件地址

    硬件地址是数据链路层和物理层使用的地址
    IP地址是网络层和以上各层使用的地址,是一种逻辑地址

    IP地址放在IP数据报的首部,而硬件地址放在MAC帧的首部。当数据报放入数据链路层的MAC帧中后,整个IP数据报就成为MAC帧的数据,因而在数据链路层看不见数据报的IP地址。

    4.1.4 地址解析协议ARP

    ARP是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

    每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
    如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。

    4.1.5 IP数据报

    1. IP数据报格式
      一个IP数据报由首部(20 字节+可选字段)和数据两部分组成
      图片来源网络
      图片来源网络

    2. 分组转发
      (1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
      (2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
      (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
      (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
      (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)
      (6) 报告转发分组出错。

    4.2 划分子网 P128

    1. 两级IP地址缺陷:

    2. IP 地址空间的利用率有时很低。

    3. 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。

    4. 两级的 IP 地址不够灵活

    5. 子网划分的基本思路:

    6. 划分子网纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络。

    7. 划分子网的方法是从主机号借用若干个位作为子网号。

    8. 路由器在收到IP数据报后,按目标网络号和子网号定位目标子网

    9. 子网掩码
      子网掩码是一个网络或一个子网的重要属性

    这里要会已知IP地址,子网掩码,求网络地址

    4.3 构造超网(无分类编址CIDR)

    1. **CIDR(无分类域间路由选择)**的主要特点:
    • CIDR消除了传统的A、B、C类地址以及划分子网的概念,用网络前缀代替网络号和子网号,后面的部分指明主机。因此,CIDR使IP地址从三级编址(使用子网掩码),又回到了两级编址,但这已是无分类的两级编址。
    • CIDR把网络前缀相同的连续的IP地址组成一个”CIDR地址块”只要知道CIDR地址块中的任何一个地址,就可以知道这地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
    1. 地址掩码:是一连串的1和0组成,而1的个数救赎网络前缀长度。在斜线记法中。斜线后面的数字就是地址掩码中1的个数。

    2. 构成超网:由于一个CIDR地址块中含有很多地址,所以在路由表中就利用CIDR地址块来查找目标网络,这种地址的聚合常称为路由聚合,也称构成超网。

    4.4 网际控制报文协议ICMP

    为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了ICMP,ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。

    1. ICMP报文的种类
    • ICMP差错报告报文
    • ICMP询问报文
    1. ICMP 差错报告报文共有 5 种:
    • 终点不可达
    • 源点抑制(Source quench)
    • 时间超过
    • 参数问题
    • 改变路由(重定向)(Redirect)
    1. ICMP 询问报文有两种:
    • 回送请求和回答报文
    • 时间戳请求和回答报文

    4.5 路由选择协议

    1. 两大类路由选择协议:
    • 内部网关协议 IGP:一个自治系统内部使用的路由选择协议。有多种协议,如 RIP 和OSPF 协议。
    • 外部网关协议EGP:一个自治系统的边界,将路由选择信息传递到另一个自治系统中。目前使用的就是BGP

    RIP协议的优缺点:

    • RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
    • RIP 协议最大的优点就是实现简单,开销较小。
    • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
    • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

    书上例题P149 例4-5
    更新路由表

    RIP是一种分布式的基于距离向量的路由选择协议,其主要特点:
    (1)仅和相邻路由器交换信息。
    (3)按固定的时间间隔交换路由信息,例如,每隔30秒。

    OSPF最主要的特征就是使用分布式的链路状态协议,其主要特点:
    (1)使用洪泛法向本自治系统中所有路由器发送信息。
    (2)发送的信息是与本路由器相邻的所有路由器的链路状态。
    (3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

    BGP是不同自治系统的路由器之间交换路由信息的协议,它采用路径向量路由选择协议,其主要特点:
    (2)自治系统AS之间的路由选择必须考虑有关策略。
    (3)BGP只能力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。

    运输层

    5.1 运输层协议概述

    1. 运输层功能
    • 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
    • 运输层还要对收到的报文进行差错检测
    • 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP
    1. 运输层的两个主要协议
      TCP/IP 的运输层有两个不同的协议:
    • 用户数据报协议 UDP(User Datagram Protocol)
    • 传输控制协议 TCP(Transmission Control Protocol)

    UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

    TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

    图片来源网络

    1. 运输层的端口
      TCP/IP的运输层的端口用一个 16 位端口号进行标志
      端口号只具备本地意义,即端口号只是为了标志本计算机应用层中的各进程。

    客户发起通讯请求时,必须先知道对方服务器的IP地址和端口号,运输层的端口号分为下面三大类:

    • 熟知端口号,数值一般为 0~1023。
      一些常用的数值端口号:
      FTP 21
      LELNET 23
      SMTP 25
      DNS 53
      TFTP 69
      HTTP 80
      SNMP 161
      SNMP(trap) 162

    • 登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。

    • 客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。

    5.2 用户数据报协议 UDP

    1. UDP的主要特点:
    • UDP 是无连接的,即发送数据之前不需要建立连接。
    • UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制
    • UDP 是面向报文的
    • UDP 没有拥塞控制,很适合多媒体通信的要求。
    • UDP 支持一对一、一对多、多对一和多对多的交互通信
    • UDP 的首部开销小,只有 8 个字节

    5.3 传输控制协议 TCP

    1. TCP的主要特点:
    • TCP 是面向连接的运输层协议
    • 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)
    • TCP 提供可靠交付的服务
    • TCP 提供全双工通信
    • 面向字节流

    5.4 可靠运输的工作原理

    展开全文
  • zigbee学习笔记(一)之 zigbee简介

    千次阅读 多人点赞 2017-11-30 00:45:00
    zigbee学习笔记(一) zigbee简介 1、什么是zigbee? zigbee是协议,类似于蓝牙、WiFi等等;它是一种标准,该标准定义了短距离、低数据传输速率无线通信的所需要的一系列的通信协议。 2、zigbee无线网络工作的三...
  • 数据结构C语言版本的学习笔记

    千次阅读 2016-10-13 09:50:06
    数据结构C语言版本的学习笔记
  • Java从零基础到精通详细笔记高清完整PDF版

    千次下载 热门讨论 2014-01-07 10:47:03
    本文档为详细笔记,doc格式,共173页。包含内容: Unix,Java 基础,数据库(Oracle jdbc Hibernate pl/sql),web,JSP,Struts,Ajax,Spring,Ejb,Java和模式。另附学习视频链接地址,欢迎下载。
  • 樊昌信通信原理第7版笔记和课后习题答案

    千次阅读 多人点赞 2019-11-24 00:55:04
    原地址附文件:http://zgw.100xuexi.com/SubItem/IndexInfoDetail.aspx?id=21d846ee-537f-4536-9a46-9175d5f5693f
  • [学习笔记]电磁场与电磁波专业课程

    千次阅读 多人点赞 2019-03-21 21:18:47
    电磁场与电磁波
  • 深度学习笔记 深度学习(六十九)darknet 实现实验 Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffma 深度学习(六十八)darknet使用 深度学习(六十七)metal forge深度学习库...
  • Deep Learning(深度学习)学习笔记整理系列之(一)

    万次阅读 多人点赞 2013-04-08 23:35:33
    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08   声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家...
  • 台湾大学李宏毅老师的机器学习课程是一份...这篇文章是学习本课程第13-15课所做的笔记和自己的理解。Lecture 13: Unsupervised Learning - Linear Methods Unsupervised Learning有两种,化繁为简(Clustering & Dim
  • 推荐几款好用的云笔记软件

    万次阅读 多人点赞 2018-04-19 16:50:18
    一直钟爱印象笔记,程序员的电脑上必装的软件,但最近期限到了,再也不能像以前无限制的上传文件,续费也比去年的只要九块九一年高出了很多倍,因此,注册试用了其他的笔记,发现云笔记众多,其中有几款很好用的云...
  • 小甲鱼《零基础入门学习Python》学习笔记

    千次阅读 多人点赞 2018-09-06 23:33:58
    根据老师的建议,现在将第二次复习小甲鱼的《零基础入门学习Python》而做的学习笔记,上传到网上,方便今后复习和保存,因为是手写的,所以做了扫描锐化处理,方便阅读。 ...
  • 笔记索引

    万次阅读 2019-04-09 18:02:52
    笔记索引目录
  • 几款笔记软件的优缺点

    万次阅读 多人点赞 2018-07-27 18:19:37
    现在笔记软件出现了好多,我也已经使用过好几种,如印象笔记,有道,为知,onenode。它们是各有千秋,而我也时常在它们之间挑来挑去。下面让我以一个程序员的角度,来说说他们的优缺点吧!(当然这个对比掺杂了我的...
  • Android开发教程笔记完全版 pdf

    千次下载 热门讨论 2011-11-01 16:02:32
    Android开发教程笔记完全版 pdf.我看了一下,自己感觉可以.

空空如也

1 2 3 4 5 ... 20
收藏数 1,733,636
精华内容 693,454
关键字:

笔记