![](https://img-blog.csdnimg.cn/20190422123335612.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
计算机网络学习:CS144: introduction to computer networking
本专栏记录自己学习计算机网络的过程,学习的是Stanford university的 CS144: introduction to computer networking.
时间很奇妙!
求知
展开
-
Introduction to Computer Networking学习总结
斯坦福这一节公开课还是非常优质的,两位教授讲的通俗易懂,深入浅出的将计算机网络的基础知识讲清楚了。其实接下来还有l三章,一章是路由、一章底层、一章安全。感觉这几章暂时可以先放一放,至少已经了解了计算机网络大部分的基础知识。因此本课程的学习我打算告一段落。转而学习操作系统。如果有想学习计算机网络的,我极力推荐本课程。...原创 2019-05-09 13:02:02 · 778 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十七):DHCP
这一节主要讲Dynamic Host Configuration Protocol (DHCP)动态主机配置协议。说实话看这节课,感受到了嘲讽...Philips说他95年上大学的时候在用固定IP、子网掩码、网关、DNS,然而交大现在还是这样啊哈哈哈。言归正传,固定的IP、子网掩码、网关、DNS有很大缺点。比如换到其他网络就没用了,并且权限是有期限的通常是以年为单位,这意味着到期jiu一个访客...原创 2019-05-09 00:38:12 · 325 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十六):DNS
DNS应该算是经常听到的名词之一了,它是 Domain Name System 的缩写,旨在提供根据域名获得IP地址的服务。一个URL包含三个部分,第一部分应用层协议类型及端口号,域名代表的host,及host中的文件。DNS即负责告知client域名所对应的的IP。DNS有两个特点:1. 只读或者说大多数情况下只提供读的服务,修改较少2. 较宽松的一致性要求,即产生延迟影响不大...原创 2019-05-07 20:47:35 · 360 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十五):BitTorrent
首先理解BitTorrent的大致机制,是允许客户端之间相互请求下载大文件。大文件被拆分成小片,当有客户端从其他客户端下载了一个文件是,他会告诉其他客户端,他也有这个文件了,这样其他客户端也可以来他这里下载这个文件。这一些客户端被称为一个集群。那么我们需要知道一个客户端是如何加入和离开集群的。加入一个集群是通过下载一个torrent文件实现的,这个torrent问价会告诉客户端这个文件有多...原创 2019-04-29 22:51:35 · 255 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十四):HTTP、SPDY
HyperText Transfer Protocol(HTTP) 超文本传输协议是现今因特网的一大基石。也是面试中经常问的一个问题。HTTP包含请求和回复,下面分别是请求和回复的格式:上图为请求。包含请求方式(比如GET、POST)、URL(域名+资源名)、HTTP版本(HTTP/1.1)。白色留空代表空格。左箭头代表返回这一行的开头,下箭头代表下一行。接下来是零个或多个header...原创 2019-04-29 08:31:10 · 235 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十三):NATs
Yahoo!终于看完了第四单元拥塞控制,现在开始第五单元Applications and NATs。首先第一节从NATs开始。NATs全程 Network Address Translator,即网络地址转换器。NATs拥有一个公网地址,并允许有许多私有局域网络地址在NATs后面,不同的NAT后面可能有相同的私有IP地址。而NATs有两端,一侧面向公网,一侧面向局域网,NATs就负责在公网与局...原创 2019-04-27 19:27:01 · 407 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十二):拥塞控制 TCP Reno
TCP经历了Tahoe版本之后,出现了一个新版本 Reno 。这个版本对Tahoe进行了改进,如果从有限状态机的角度看,Tahoe有两个状态,Reno有三个状态:这里面有三个机制,这一部分需要认真好好理解,很容易发现知识盲区:1. 快速重传:当发送者接收到三个重复的ack即认为丢失了一个包,立马对该包进行重传,在这一点上与Tahoe是一致的,但是Reno不会返回慢启动状态,只有超...原创 2019-04-26 14:18:14 · 472 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十一):拥塞控制-TCP Tahoe
本节对TCP发展历史进行了简短的介绍:可以看到1986年,由于TCP还未加入拥塞控制,网络开始因为拥塞而频繁出现瘫痪,之后的两年内,Jacobson找到了问题根源,并对拥塞进行了处理,这是非常具有开创性的,而这一个版本的TCP代号为Tahoe。也就是本节重点介绍的内容。TCP Tahoe中增加了三个重要举措,接下来挨个进行介绍。其实这三个重要举措对应着TCP三个最本质的问题: 什...原创 2019-04-26 00:33:16 · 799 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二十):TCP拥塞控制-基本方法 AIMD
这一节将对拥塞控制的两个问题进行介绍,第一个是拥塞控制策略应该放在哪,是放在每个路由上,还是放置在处于网络边沿的end host;第二个是拥塞控制的基本方法AIMD(additive increase multiplicative decrease)。对于第一个问题,拥塞控制策略放在end host和放在中间路由上都是可以实现的。比如放在路由上:数据包每经过一个路由,路由向包中添加自己的que...原创 2019-04-25 01:19:56 · 1093 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十九):TCP拥塞控制-基础、公平分配带宽准则
哇,不知不觉这个课程也学了挺久了,说明一下,学习的是Stanford大学的CS144 Introduction to Computer Networking。终于学完了第三章Packet Switching。接下来就是拥塞控制了,这一部分也是计算机网络中很重要的一部分。笔者腾讯后台开发一面面试官就问了我TCP如何进行拥塞控制,可见也是面试常问内容,还是非常值得深入理解的。接下来就开始吧,最开始当然...原创 2019-04-23 13:10:26 · 722 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十八):rate guarantees交换速度保证
简单的FIFO(先进先出)队列存在一个缺点,无法对包的优先级做出反应,即相当于先进入的包拥有更高的优先级,会首先被发送出去。但是实际应用中,数据包可能有优先级的概念,有可能优先级更高的包比普通包更晚进入队列。此时需要对FIFO进行改进。简单FIFO:即先到达的包先发送出去。Strict Priorities:分为高优先级和低优先级两个队列,优先发送高优先级队列内容,只有当高优先...原创 2019-04-22 23:42:32 · 195 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十七):Switching 交换工作实现
多终端对多终端传输过程中,将来自多个发送者的数据包发送到不同接收者的过程是如何实现的呢?这就是本节主要内容。目前主要有三种实现方式:Output queueing:如下图,缓存区在output一侧。这样有一个缺点,就是当所有input的包都要转发到同一个output链路时,这一个output queue的内存处理速率需要达到(假设n个输入,输入速率均为R)(n+1)R。对内存运行速度提出很高的...原创 2019-04-22 12:24:16 · 313 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十六):Switching and Forwarding 交换与转发
Switching与Forwarding是两个不同的概念。Switching是指端对端之间的数据交换,而Forwarding是指一个路由对收到的数据包进行转发。例如,同一个局域网内,client之间交换数据时Switching;而不同网络下需要穿过路由发送数据时,路由则是Forwarding数据包。Ethernet Switching过程:检查每个到达的帧的首部 如果DA(Destina...原创 2019-04-19 00:30:23 · 456 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十五):Queue Model 包交换中的缓冲模型
本章知识点比较零散,因此一篇文章进行总结,并且不具有连贯性,仅记录自己认为有价值的内容。将较大的包拆分为小包进行传输,可以减小端对端延迟,原因如下图:数据传输时,突发大量的数据包会增加延迟,简单周期性传输降低延迟,原因可以将以下两个例子对比得到:在一段时间内,L为缓冲区中处于等待中的包的平均数量,λ为数据包到达速率,μ为数据包离开速率,d为每个包平均等待时间,则有以下关系:...原创 2019-04-18 22:25:27 · 236 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十四):End to End Delay 端对端延迟
这一节介绍端对端延迟。端对端延迟由三部分组成:传输延迟(Propagation Delay)、封装延迟(Packetization Delay)和排队延迟(Queueing Delay)。他们的关系如下图:传输延迟:即链路长度除以传播速度,传播速度接近光速,在双绞线中为光速的70%,通常用m/s计算。因此传输延迟只跟链路长度及传输速度有关,是一个可以确定的值。封装延迟:...原创 2019-04-16 23:11:10 · 1240 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十三):网络中为什么使用packet switching
在传统的通话中使用的交换方式是Circuit Switching,而在网络中使用的却是Packet Switching,那么什么是Circuit Switching,什么是Packet Switching呢?两者之间又有哪些异同,为什么网络中选用了Packet Switching呢?Circuit Switch:特点:专线专用,每一通电话独占一条线路,带宽为64kb/s,保证稳定的传输...原创 2019-04-16 12:32:47 · 899 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十二):Retransmission Strategies重传策略
我们知道传输层协议保证了传输的可靠性,比如滑动窗口协议。那么丢失的包如何进行重传呢。大致分为两类:Go-back-N和selective repeat。下面对两者优缺点进行介绍。这两者都是通过定时器实现的,当接收者收到包时会回复一个ACK,当发送者超过定时器设定时间收不到ACK时就认为这个包丢失了。此时就需要进行重传Go-back-N概念:当计时器时间到达而没有收到相应ACK时,则认为...原创 2019-04-11 12:52:06 · 355 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十一):flow control 滑动窗口详解
流控制的原因:发送者发送速度超过接受者处理速度是没有意义的,流控制就是为了避免发送超出接受者接受能力的数据。实现的方式是接受者给发送者反馈。两种基本方式是stop and wait和sliding windows流控制方式一:Stop and Wait一次发送一个数据包 发送者发送一个数据包,接收者回复一个ACK包 发送者收到ACK包后再发送下一个数据包 如果发送者超时没有收到A...原创 2019-03-30 14:55:49 · 717 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(十):Finite State Mechines(有限状态机)以TCP连接断开为例
状态机模型:事件驱动状态转换,转换后采取某些行动(非必须)。实例:TCP连接三次握手server调用listen()由CLOSED状态转为LISTEN状态;client调用connect()由CLOSED转为SYN SENT状态,并向server发送SYN;server接收到SYN,状态由LISTEN转为SYN RECEIVED,并向client反馈SYN+ACK;...原创 2019-03-25 00:26:36 · 277 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(九):error detection 错误探查 Checksum、CRC、MAC
错误探查三种方式:Checksum(检验和)、Cyclic Redundancy Codes(循环冗余CRC)、Message Authentication Codes(消息身份验证MAC)大家可以首先做下这个课程中的quiz,如果你的答案跟图中是一致的,说明可能你真的是理解了,如果有一点不一致,说明你对某种错误探查方式有盲点,那么你可以好好看一下这篇文章:Checksum(校验和):...原创 2019-03-24 23:05:38 · 1482 阅读 · 1 评论 -
Introduction to Computer Networking学习笔记(八):end-to-end principle端对端原则
端对端原则:要想确认传输了正确的数据给对端,肯定要在处于连接两端的终端的帮助下实现,不可能完全在链路层或者传输层实现,因此必须要在接收端对数据进行验证,这需要在应用层实现。同时这种设计原则,可以将底层的链路层最简化,只负责传输数据,提高传输性能与稳定性。为什么这么说呢?先举一个例子,MIT曾经有开发者使用过仅在链路层检查数据包是否出错的方式。结果出现了很大问题,这是因为在经过层层路由时,...原创 2019-03-23 22:37:54 · 816 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(七):ICMP协议
保证网络层能够正常工作的三个机制:1.IP协议封装datagram;端对端hop to hop传输。2.转发表通过算法更新路由中的转发表。3.互联网报文控制协议ICMP(Internet Control Message Protocol)在终端与路由之间传递网络层信息;报告出现的问题反馈;帮助诊断问题。ICMP详解:概念:ICMP协议是在网络层之上的...原创 2019-03-23 20:49:52 · 279 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(六):TCP与UDP特点
TCP特点: Property Behavior Stream of bytes Reliable byte delivery service. Reliable delivery 1.Acknowledgments indicate correct delivery. ...原创 2019-03-23 16:38:51 · 266 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(五):ARP协议(Address Resolution Protocol)
ARP协议是什么:在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,链路层接收到上层即网络层提供的数据中,只包含目的主机的IP地址。ARP要做的就是根据网络层地址(IP地址)来找寻链路层地址(MAC地址)。两台设备通信示意图:对上图中...原创 2019-03-22 23:01:19 · 285 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(四):路由转发表及转发规则
路由只负责将接收到的package转发到下一个hop。因为一个路由可能与很多路由link,转发到哪个路由则需要查转发表,转发表的格式如下图,根据目标地址选择下一个路由。选取的规则遵循Longest Prefix Match(最长前缀匹配)规则,下面解释一下如何理解这一规则。这条规则的存在是因为转发表中可能存在重叠,怎么算重叠呢,比如下图中的这个路由器,右侧为其转发表,此时来了一个目标地址为17...原创 2019-03-22 19:08:06 · 1461 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(三):IP与子网掩码
IP地址为32bit数字,多个IP地址与子网掩码按位与得到的结果,相等的处于同一网络下,交换数据时不需要穿过路由,不相等则处于不同网络下,需要穿过路由。subnet可以再分配它自己的subnet。同一网段的前提下掩码长度增加即可,如下图。...原创 2019-03-22 18:31:48 · 279 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(二):字节顺序
大端模式:高位字节处于低地址小端模式:高位字节处于高地址原创 2019-03-22 17:46:19 · 303 阅读 · 0 评论 -
Introduction to Computer Networking学习笔记(一):网络层模型及IP header
四层网络模型:链路层:定义单个链路如何传输网络层:定义端对端包传输,不保证可靠性传输层:传输协议,实现可靠性及恢复正确顺序应用层:发起请求七层网络模型:为什么IP服务要设计的如此简单:•简单、无声、极简化:更快,更精简,创建和保持更加低成本;•符合端对端原则:只要有可能,在终端本地实现更多功能;•给上层提供了更多的可能性(例如上层可以选择采用可...原创 2019-03-22 14:59:18 · 879 阅读 · 0 评论