├── README.md ├── 第三章 ├── TCP报文段结构.png ├── 运输层.md └── 运输层.html ├── Solutions6thEdition.doc ├── 第二章 ├── images │ ├── TCP与UDP.png │ ├── dns报文格式.jpg │ ├── http响应.jpg │ ├── 可靠数据运输机制.png │ ├── 应用的服务要求.png │ ├── http请求报文1.png │ ├── http请求报文2.png │ └── 应用层协议对应的运输协议.png ├── 2.md └── 2.html ├── 第四章 └── 网络层协议.md └── 第一章 ├── 1.md ├── 答案1.md ├── 1.html └── 答案1.html /README.md: -------------------------------------------------------------------------------- 1 | # 《Computer networking - A top-down approach》 Notes 2 | 我的《计算机网络-自顶向下方法》读书笔记 3 | 如有疑问或者建议 请发邮件至326153996@qq.com -------------------------------------------------------------------------------- /第三章/TCP报文段结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第三章/TCP报文段结构.png -------------------------------------------------------------------------------- /Solutions6thEdition.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/Solutions6thEdition.doc -------------------------------------------------------------------------------- /第二章/images/TCP与UDP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/TCP与UDP.png -------------------------------------------------------------------------------- /第二章/images/dns报文格式.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/dns报文格式.jpg -------------------------------------------------------------------------------- /第二章/images/http响应.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/http响应.jpg -------------------------------------------------------------------------------- /第二章/images/可靠数据运输机制.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/可靠数据运输机制.png -------------------------------------------------------------------------------- /第二章/images/应用的服务要求.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/应用的服务要求.png -------------------------------------------------------------------------------- /第二章/images/http请求报文1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/http请求报文1.png -------------------------------------------------------------------------------- /第二章/images/http请求报文2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/http请求报文2.png -------------------------------------------------------------------------------- /第二章/images/应用层协议对应的运输协议.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maple5233/-Computer-networking-A-top-down-approach-Notes/HEAD/第二章/images/应用层协议对应的运输协议.png -------------------------------------------------------------------------------- /第四章/网络层协议.md: -------------------------------------------------------------------------------- 1 | [TOC] 2 | 3 | # 网络层协议 4 | 5 | ## 概述与约定 6 | 7 | ### 概述 8 | 9 | + 网络层是OSI模型中的第三层。网络层提供**转发(forwading)、路由(routing)和寻址(addressing)**的功能,使两终端系统能够互连且**决定最佳路径**,并具有一定的**拥塞控制**和**流量控制**的能力。TCP/IP协议体系中的**网络层功能由IP协议规定和实现,故又称IP层**。 10 | 11 | ### 具有网络层功能的协议 12 | 13 | + IP **网际协议** **I**nternet **P**rotocol 14 | + 根据源主机和目的主机的地址传送数据。 15 | + 定义了寻址方法和数据报的封装结构。 16 | + 第一个架构的主要版本,现在称为IPv4,仍是最主要的互联网协议。 17 | + IPX **互联网分组交换协议** **I**nternetwork **P**acket E**x**change 18 | + IPX的地址分为网络地址和主机地址,网络地址由管理员分配,主机地址为MAC地址。 19 | + 由于IP协议的广泛使用,IPX的应用逐渐减少。 20 | + X.25 21 | + X.25 是一个使用电话或者ISDN设备作为网络硬件设备来架构广域网的ITU-T网络协议。在 22 | + 国际上X.25的提供者通常称X.25为分封交换网,尤其是那些国营的电话公司。 23 | + 在现在仍然应用于交易系统中。 24 | + ARP **地址解析协议** **A**ddress **R**esolution **P**rotocol 25 | + 基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。 26 | + 它是IPv4中网络层必不可少的协议,在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。 27 | + RARP **逆地址解析协议** **R**everse **A**ddress **R**esolution **P**rotocol 28 | + RARP使用与ARP相同的报头结构,作用与ARP相反。 29 | + RARP用于将MAC地址转换为IP地址。 30 | + 其因为较限于IP地址的运用以及其他的一些缺点,因此渐为更新的BOOTP或DHCP所替换。 31 | + ICMP 网络控制消息协定 **I**nternet **C**ontrol **M**essage **P**rotocol 32 | + 网路协议族的核心协议之一。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。 33 | + ICMP 依靠IP来完成它的任务,**它是IP的主要部分**。 34 | + 它与传输协议,如TCP和UDP显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping和traceroute这两个特别的例子。 35 | + IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6。 36 | 37 | ### 具有网络层功能的设备 38 | 39 | + 路由器(Router) 40 | + 三层交换机(Layer 3 Switch) 41 | 42 | 43 | ### 网络层功能:转发和路由选择 44 | 45 | + 转发:(驾车通过单个立交桥的过程) 46 | 1. 分组到达路由器输入链路 47 | 2. 路由器根据分组的首部查询**转发表** 48 | 3. 路由器将分组送到合适的输出链路 49 | + 路由选择:(旅游驾驶路线) 50 | 1. 分组从输出链路出发 51 | 2. 网络层决定向哪台路由器出发(**路由选择算法**) 52 | 3. 分组流向接收方 53 | + 连接建立:有些网络层体系如ATM、帧中继、MPLS要求源到目的地沿着路径握手。 54 | 55 | ### 网络层服务模型 56 | 57 | + 确保交付 58 | + 限制时延的确保交付 59 | + 有序分组交付 60 | + 确保最小带宽 61 | + 确保最大时延抖动 62 | + 安全性服务 63 | + ....... 64 | 65 | 网络层提供的服务是**尽力而为服务**,看起来就和**根本无服务**没区别,但是却有着存在的意义。 66 | 67 | ## 虚电路和数据报网络 68 | 69 | ### 概述 70 | 71 | + 在网络层提供有连接的服务的计算机网络称为虚电路网络 72 | + 在网络层提供无连接的服务的计算机网络称为数据报网络 73 | 74 | ### 虚电路网络 75 | 76 | #### 组成 77 | 78 | 1. 源主机和目的主机之间的路径(链路和路由器) 79 | 2. VC号,即沿着该路径的每段链路的一个号码 80 | + 在传播过程中,包的VC号随着到达的每一个路由器根据转发表更新。 81 | 3. 沿着该路径的每个路由器中的转发表表项 82 | 83 | #### 特点 84 | 85 | + 新建虚电路的过程就是在转发表中添加VC号转换规则的过程,反之就是拆除虚电路的过程。 86 | + 路由器有维护虚电路状态信息的义务,因为虚电路是面向连接的。 87 | + 每一次连接都要经历新建、传输、拆除的过程。 88 | 89 | ### 数据报网络 90 | 91 | + 无需任何虚电路,也没必要维护状态 92 | 93 | + 数据报网络中的路由器根据**地址前缀匹配规则**来转发分组,并且是最长匹配原则。 94 | 95 | 相应的转发表就是这么制定的。 96 | 97 | ## 路由器工作原理 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /第一章/1.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [TOC] 4 | 5 | 6 | 7 | ## 第一章 8 | 9 | ### 读书 10 | 11 | + 互联网中的设备称为主机(host)或者终端系统(end system),包括客户端和服务器 12 | * 主机通过**通信链路**和**分组交换机**连接 13 | * **路由器**和**链路层交换机**都是分组交换机 14 | 15 | + `ISP`是因特网服务供应商 有不同层级 16 | 17 | + 分组交换:主机与主机之间通过**报文(message)**通信,长的报文又会被分割成**分组(packet、包)** 18 | 19 | + **存储转发机制**:交换机在收到一整组报文之后才开始向输出链路输出 20 | + 对于每一条输出链路分组交换机都有一个输出缓存,包必须在输出缓存里排队,这叫**排队时延**,一旦缓存占满,则会**丢包** 21 | 22 | + 在因特网中,IP地址的多级结构信息和路由器的**转发表**,决定了路由器拿到包之后往哪条链路送 23 | + 转发表是由路由选择协议自动设置的 24 | 25 | + 电路交换:另一种端与端通信手段,电话是这种手段的典型例子。特点是源和目标点建立起名副其实的连接,称为电路,这条路上的带宽全部为这个连接空出来。所以电路交换的速度非常可靠。 26 | 27 | | 对比 | 电路交换 | 分组交换 | 28 | | :--: | :-----: | :-------: | 29 | | 实现 | 复杂,成本高 | 简单,成本低 | 30 | | 可靠性 | 可靠 | 延时不可预测 | 31 | | 利用率 | 低,有空闲浪费 | 高,可共享空闲资源 | 32 | | 特点 | 专线专用 | 共享路由 | 33 | 34 | + 分组交换中时延的分类 35 | * 处理时延:**检查分组首部和决定将该分组导向何处**所需要的时间是节点处理时延的一部分。其他因素包括检查比特级差错处理(通常是微秒级以下)等。在这之后,路由器将包引向通往路由器B链路之前的队列。 36 | * 排队时延:在队列中,当分组在链路缓存中**等待传输**时,它经受排队时延。 到达组的分组数量是到达该队列的流量强度的函数。实际的排队时延通常在毫秒到微秒级。 37 | * 传输时延:用L比特表示分组的长度,用R b/s表示从路由器A到路由器B的链路传输速率。传输时延是L/R。这是**将所有分组比特推向链路所需要的时间**。实际的传输时延通常在毫秒到微秒级。是包从路由器A中被推出去的时间。与两路由器的距离无关。 38 | * 传播时延:一旦一个比特被A推向链路,该比特需要向路由器B传播,从该链路的**起点到路由器B的传播所需要的时间**是传播时延。该比特以该链路的传播速率传播,其速率范围等于或略小于光速。传播时延等于两台路由器之间的距离除以传播速率,即传播时延是d/s,d是两台路由器间的距离,s是该链路的传播速率。传播时延在毫秒级。 39 | * 传输时延可以看做是车队(包)过收费站(路由器)的时间,而传播时延可看作路上花费的时间。 40 | * 节点总时延 = 处理时延 \+ 排队时延 \+ 传输时延 \+ 传播时延 一般来说处理时延通常是微不足道的。 41 | 42 | + 排队时延的特殊之处 43 | * 对于不同的分组(包)可能不一样(后到的可能要等先到的) 44 | * 取决于流量本身的特点(即突发还是平稳),包括流量到达该队列的速率、链路的传输速率和到达流量的性质 45 | * 令a表示分组到达队列的平均速率(每秒多少分组,pkt/s),假定所有包都是L b组成的,则比特到达队列的平均速率是La bps。而La/R被称为流量强度 46 | * 如果La/R > 1,则比特到达队列的平均速率超过从该队列传输出去的速率。在这种不幸的情况下,队列的增加将趋近于无界,并且排队时延将趋向无穷大。因此,流量工程中设计系统时流量强度不能大于1。在因特网中,接近1时将容易发生丢包。 47 | * 第n个分组有(n-1)L/R的排队时延 48 | 49 | + 端到端时延 50 | 假设源主机和目的主机之间有N-1台路由器,并且该网络是无拥塞(不排队)的。那么端到端时延为:\\( d_{end-end} = N (d_{proc} + d_{trans} + d_{prop})\\) 51 | 52 | + 吞吐量 53 | * 在如以太网路及封包无线电之类的电信网络之中,吞吐量或网络吞吐量是指于一通讯通道上单位时间能成功传递的平均资料量,资料可以于实体或逻辑链接上传递,或通过某个网络节点。吞吐量的单位通常表示为位元每秒(bit/s或bps),有时也可看到封包每秒或封包每时槽等单位。 54 | * 在因特网内表现为网速。 55 | 56 | + 因特网的协议栈 57 | * 应用层(**信的格式**):应用程序的协议。 58 | - 我们把应用层的信息称为报文。 59 | - 典型协议如`HTTP`、`FTP`、`SMTP(电邮)`、`DNS`。 60 | * 运输层(**平信还是挂号信、邮递员(邮局到家的投递)**):在应用程序端点之间传输应用层报文的协议。 61 | - 因特网中常用的有两个,即`TCP`和`UDP`。 62 | - TCP:面向连接,分割长报文,拥塞控制机制,可靠传递,双方速率匹配。 63 | - UDP:无连接。(啥也没有- -)。 64 | - 处于运输层的分组叫做报文段(segement) 65 | * 网络层(**邮局和邮政服务**):负责将数据报(datagram,处于网络层的分组)从主机移动到另一主机,使两端能够互连且决定最佳路径。 66 | - 从运输层拿到报文段和目标地址。然后进行`路由`。 67 | - 网络层的典型协议是`IP`协议,用来识别目标地址。 68 | - 另一典型协议是`网络控制消息协定(ICMP)`,它是IP的主要部分,一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了`ping`和`traceroute`这两个特例。 69 | * 链路层(**信件运输员(邮局到邮局)**):在两个网络实体之间提供数据链路连接的创建、维持和释放管理。 70 | - 构成链路层的分组(称之数据帧或帧),并对帧定界、同步、收发顺序的控制。 71 | - 负责传输过程中的流量控制,差错检测和差错控制等方面。 72 | - 数据链路层中的数据封装是指:封装的数据信息中,包含了地址段和数据段等。地址段含有点对点发送节点和接收节点的地址(如`MAC`),控制段用来表示数格连接帧的类型,数据段包含实际要传输的数据。 73 | - 网络层将数据报下发给链路层,链路层传输后,上报给目标结点的网络层。 74 | - 典型协议:`异步传输模式(ATM)`、`帧中继(frame relay)`、`高级数据链路控制(HDLC)`。 75 | - 交换机、桥接器是本层设备。而集线器是物理层设备,不是数据链路层设备。 76 | * 物理层(**公路和车**):将一个比特一个比特移动。 77 | - 典型协议如:`蓝牙协议`、`数字用户线路(DSL)`等等 78 | - 常见物理层设备:网卡、光纤、集线器 79 | 80 | + 封装 81 | * 因特网协议栈自顶向下传输时,各层会将上层信息包装,上层信息包装为`有效载荷字段`,本层信息包装为`首部字段`。 82 | * 应用层报文 -> 运输层报文段 -> 网络层数据报 -> 链路层帧 83 | 84 | + 因特网攻击举例 85 | 1. 用病毒和木马形成僵尸网络(肉鸡)。 86 | 2. 拒绝服务攻击,包括弱点攻击(攻击bug)、带宽洪泛(常见、常是分布式,砸流量使丢包和延时)、连接洪泛(伪造大量TCP连接) 87 | 3. 分组嗅探:抓包,窃取隐私。 88 | 4. 伪造分组:IP哄骗等等。 89 | 90 | ## 习题 91 | ### P2 92 | 93 | ​ 第一个包到达花费`N*(L/R)`,然后每隔(L/R)就有一个包到达。所以总花费` N*(L/R) + (P-1)*(L/R) = (N+P-1)*(L/R) ` 94 | 95 | ### P3 96 | 97 | 1. 电路交换网。因为需要高可靠性,且程序长时间运行并高频地发送数据,并没有浪费。这样能较好地发挥电路交换网的特点,避开它的缺点。 98 | 2. 不需要。就算所有应用同时发送一个分组,还是有足够的容量,不会造成拥塞。 99 | 100 | ### P6 101 | 102 | 1. m/s 103 | 2. L/R 104 | 3. m/s+L/R 105 | 4. A的出口链路开始的地方,刚离开A 106 | 5. 在路上 107 | 6. 已经到B了 108 | 7. m=L/R\*s=536km 109 | 110 | ### P14 111 | 112 | 1. 传输时延是L/R,排队时延是La/R\*L/R\*(1-La/R) 总时延是(I+1)L/(R\*(1-I)) 113 | 2. 略 114 | 115 | ### P15 116 | 117 | * 假设分组长度L,带宽是R,则I=La/R μ=R/L 118 | * (I+1)L/(R\*(1-I)) = (a+μ-1)/(u\*(μ-1)) -------------------------------------------------------------------------------- /第三章/运输层.md: -------------------------------------------------------------------------------- 1 | [TOC] 2 | 3 | # 运输层协议 4 | 5 | ## 3.1 概述与约定 6 | 7 | ### 3.1.1 概述 8 | 9 | + 运输层协议为不同主机上的进程提供了**逻辑通信**功能 10 | + 运输层协议在端系统(主机)里实现 而不是路由器 11 | + 运输层中的分组(包)称之为**报文段** 12 | + 常见的运输层协议有TCP和UDP 13 | 14 | ### 3.1.2 运输层和网络层的关系 15 | 16 | + 拿送信做比方 17 | + 应用层报文 = 信封上的字符 18 | + 进程 = 发件人和收件人 19 | + 主机 = 发件人的家庭 收件人的家庭 20 | + 运输层协议 = 邮递员 21 | + 网络层协议 = 邮政服务 22 | 23 | ### 3.1.3 因特网中的运输层 24 | 25 | #### 预备知识---IP协议 26 | 27 | + IP协议是一个网络层协议 28 | + IP的服务模型是“尽力而为”,但并不保证服务,是不可靠的 29 | + 每台主机有一个IP地址 30 | 31 | #### TCP和UDP的责任 32 | 33 | 共有的: 34 | 35 | + **多路分解和多路复用** :将主机间的交互转化为进程间的交互 36 | + **差错检查** :通过报文段首部加入差错检查字段 37 | 38 | TCP独有: 39 | 40 | + **可靠传输** : 通过流量控制、序号、确认、定时器 41 | + **拥塞机制** : 调节流量 42 | 43 | ## 3.3\2 多路复用机制 44 | 45 | ### 概述 46 | 47 | + 一个进程有一个或者多个套接字 48 | + 运输层实际上将数据交给了套接字们 49 | + 每个套接字都有唯一的标识符 并且标志了它是UDP还是TCP 50 | + 多路分解操作:在接收端,运输层协议检查报文头,读取接收套接字的信息,然后定向连接 51 | + 多路复用操作:在发送端,运输层协议从不同套接字收集信息,生成头部信息并打包 52 | 53 | ### 无连接的多路复用和多路分解 54 | 55 | + 运输层的报文包含应用程序数据、源端口号、目的端口号和其他两个值 56 | + 端口号是套接字的标志 一个UDP套接字由一个二元组构成,包含 57 | + 目的IP地址 58 | + 目的端口号 59 | + 只要目的IP和端口号一致,UDP报文就会被送到同一个套接字 60 | 61 | ### 面向连接的多路复用和多路分解 62 | 63 | + TCP套接字是一个四元组,包含: 64 | + 源IP 65 | + 源端口号 66 | + 目的IP 67 | + 目的端口号 68 | + 主机用套接字的全部四个值来分解,也就是说就算目的相同,源不同也不会分配到同个套接字,除非TCP报文段提供了初始连接的请求 69 | + 只有四个值都互相匹配,双方套接字才能互相发消息 70 | 71 | ### Web服务器和TCP 72 | 73 | + Web服务的默认端口是80 74 | + 对于持续HTTP,持续期间使用同一对套接字 75 | + 对于非持续HTTP,每一对请求/响应都创建一对套接字,再销毁 76 | + 套接字和进程不一定一一对应,因为有线程的存在 77 | 78 | ## 3.3 UDP协议:无连接运输 79 | 80 | ### 概述 81 | 82 | + UDP无非只是给网络层协议加上了一点多路复用/分解服务而已 83 | + web应用选择UDP服务,几乎无异于直接和IP打交道 84 | + UDP没有握手过程,是无连接的 85 | + DNS是使用UDP服务的典型范例,如果没有收到响应,则会向另一DNS服务器发请求,直到发现怎么都没有响应 86 | 87 | ### 优点 88 | 89 | + 关于何时、发送什么数据的应用层控制更加精细 90 | + 无需建立连接(握手) 91 | + 无连接:不需要在主机中维护连接状态 92 | + 分组首部仅仅8字节,而TCP需要20字节 93 | 94 | ### 应用层协议对应的运输层协议 ![应用层协议对应的运输协议](/home/hongjiyao_2014150120/Computer Netwoking/第二章/images/应用层协议对应的运输协议.png) 95 | 96 | ### 对比 ![TCP与UDP](/home/hongjiyao_2014150120/Computer Netwoking/第二章/images/TCP与UDP.png) 97 | 98 | ### UDP报文段结构 99 | 100 | UDP报文的结构是32比特的头部,加上应用层报文 101 | 102 | 32比特平均分成4部分,包括源端口号,目的端口号,数据长度(首部+应用数据),校验和 103 | 104 | ### UDP校验和 105 | 106 | + UDP校验和提供了**差错检测**功能,能检查链路层是否发生了比特改变 107 | + 发送方的UDP对报文段中所有16比特的字全部相加,再进行反码运算(溢出时回滚) 108 | + 虽然链路层也提供差错检测,但是不能保证所有链路都有提供 109 | + 虽然UDP有差错检测,但是它**没有任何纠错和恢复能力**,只能丢弃受损的报文,或者发出警告 110 | 111 | ## 3.4 可靠数据传输原理 112 | 113 | ### 3.4.0 概念和约定 114 | 115 | + 可靠数据传输协议是各种在传输上可靠的协议如`TCP`的总称 116 | + 本节我们将使用分组这个术语而不是运输层的称呼“报文段”,因为这里的理论适用于一般的计算机网络,而不仅仅是因特网运输层 117 | + 本节只讨论**单向可靠数据传输**,**双向可靠数据传输(全双工数据传输)**可以类推。 118 | 119 | ### 3.4.1 构造可靠数据传输协议 120 | 121 | 这部分暂且略过 122 | 123 | ### 3.4.2 可靠传输的各种机制 124 | 125 | 包括: 126 | 127 | + 差错检测(校验和) 128 | + 重传和定时器 129 | + 累计确认(ACK) 130 | + 序号和确认号 131 | 132 | ![可靠数据运输机制](/home/hongjiyao_2014150120/Computer Netwoking/第二章/images/可靠数据运输机制.png) 133 | 134 | ## 3.5 TCP协议 135 | 136 | ### 3.5.1 TCP连接约定 137 | 138 | + TCP在端系统上运行和保存状态,而不是在中间的网络元素如路由器和链路层交换机运行,所以它们不会维持TCP的连接状态。它们只能看到数据报而不是连接。 139 | + TCP提供全双工服务,点对点连接,但是不支持广播。 140 | 141 | ### 3.5.2 TCP连接的建立过程 142 | 143 | 通常是由一端打开一个套接字(socket)然后监听来自另一方的连接,这就是通常所指的被动打开(passive open)。服务器端被被动打开以后,用户端就能开始创建主动打开(active open)。 144 | 145 | 1. 客户端先发送一个特殊的TCP报文段`SYN` ,客户端把这段连接的序号设定为随机数**A**。 146 | 2. 服务器用另一个特殊的TCP报文段`SYN/ACK`响应,ACK的确认码应为**A+1**,`SYN/ACK`包本身又有一个随机序号**B**。 147 | 3. 客户端用第三个特殊的报文段`ACK`响应,当服务端受到这个ACK的时候,就完成了三次握手,并进入了连接创建状态。此时包序号被设定为收到的确认号**A+1**,而响应则为**B+1**。 148 | 149 | 以上三步称之为TCP的三次握手,只有第三个报文段可以承载有效负荷(应用层数据)。 150 | 151 | ![img](https://upload.wikimedia.org/wikipedia/commons/3/3f/Connection_TCP.png) 152 | 153 | ### 3.5.3 TCP连接发送数据的过程 154 | 155 | 1. 客户端将数据送往`socket` 156 | 2. TCP将数据引导到发送缓存里 157 | 3. TCP会时不时从缓存中取出一块数据 158 | + 这块数据的大小限制于`MSS`(最大应用层报文段长度) 159 | + `MSS`由发送主机的`MTU`(最大链路层帧长度)决定 160 | + 以太网和`PPP`链路层协议都是1500字节的`MTU`,所以`MSS`的典型大小是1460字节 161 | 4. TCP为每块数据加上一个TCP首部,形成多个TCP报文段,下放给网络层 162 | 5. 另一端的TCP收到之后,放到接收缓存里 163 | 6. 应用程序通过套接字从接收缓存里读取数据 164 | 165 | ### 3.5.4 保证TCP的可靠性 166 | 167 | 在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性。它们包括: 168 | 169 | + 使用序号,对收到的TCP报文段进行排序以及检测重复的数据 170 | + 使用校验和来检测报文段的错误 171 | + 使用确认和计时器来检测和纠正丢包或延时 172 | 173 | #### 序列号和确认 174 | 175 | ​ 在TCP的连接创建状态,两个主机的TCP层间要交换*初始序号*(ISN:initial sequence number)。这些序号用于标识字节流中的数据,并且还是对应用层的数据字节进行记数的整数。通常在每个TCP报文段中都有一对序号和确认号。**TCP报文发送者认为自己的字节编号为序号,而认为接收者的字节编号为确认号。TCP报文的接收者为了确保可靠性,在接收到一定数量的连续字节流后才发送确认。**这是对TCP的一种扩展,通常称为选择确认(Selective Acknowledgement)。选择确认使得TCP接收者可以对乱序到达的数据块进行确认。每一个字节传输过后,ISN号都会递增1。 176 | 177 | ​ 通过使用序号和确认号,TCP层可以把收到的报文段中的字节按**正确的顺序**交付给应用层。序号是32位的无符号数,在它增大到232-1时,便会回绕到0。对于ISN的选择是TCP中关键的一个操作,它可以确保强壮性和安全性。 178 | 179 | #### 数据传输举例 180 | 181 | 1. 发送方首先发送第一个包含序列号为1(可变化)和1460字节数据的TCP报文段给接收方。接收方以一个没有数据的TCP报文段来回复(只含报头),用确认号1461来表示已完全收到并请求下一个报文段。 182 | 2. 发送方然后发送第二个包含序列号为1461和1460字节数据的TCP报文段给接收方。正常情况下,接收方以一个没有数据的TCP报文段来回复,用确认号2921(1461+1460)来表示已完全收到并请求下一个报文段。发送接收这样继续下去。 183 | 3. 然而当这些数据包都是相连的情况下,接收方没有必要每一次都回应。比如,他收到第1到5条TCP报文段,只需回应第五条就行了。在例子中第3条TCP报文段被丢失了,所以尽管他收到了第4和5条,然而他只能回应第2条。 184 | 4. 发送方在发送了第三条以后,没能收到回应,因此当时钟(timer)过时(expire)时,他重发第三条。(每次发送者发送一条TCP报文段后,都会再次启动一次时钟:RTT)。 185 | 5. 这次第三条被成功接收,接收方可以直接确认第5条,因为4,5两条已收到。 186 | 187 | #### 校验和 188 | 189 | TCP的16位的校验和(checksum)的计算和检验过程如下: 190 | 191 | 1. 发送者将TCP报文段的头部和数据部分的和计算出来 192 | 2. 再对其求反码,就得到了校验和, 193 | 3. 然后将结果装入报文中传输。(这里用反码和的原因是这种方法的循环进位使校验和可以在16位、32位、64位等情况下的计算结果再叠加后相同) 194 | 4. 接收者在收到报文后再按相同的算法计算一次校验和。这里使用的反码使得接收者不用再将校验和字段保存起来后清零,而可以直接将报文段连同校验加总。 195 | 5. 如果计算结果是全部为一,那么就表示了报文的完整性和正确性。 196 | 6. 注意:TCP校验和也包括了96位的伪头部,其中有源地址、目的地址、协议以及TCP的长度。这可以避免报文被错误地路由。 197 | 198 | 按现在的标准,**TCP的校验和是一个比较脆弱的校验**。出错概率高的数据链路层需要更高的能力来探测和纠正连接错误。TCP如果是在今天设计的,它很可能有一个32位的CRC校验来纠错,而不是使用校验和。但是通过在第二层使用通常的CRC校验或更完全一点的校验可以部分地弥补这种脆弱的校验。第二层是在TCP层和IP层之下的,比如PPP或以太网,它们使用了这些校验。但是这也并不意味着TCP的16位校验和是冗余的,对于因特网传输的观察,表明在受CRC校验保护的各跳之间,软件和硬件的错误通常也会在报文中引入错误,而端到端的TCP校验能够捕捉到很多的这种错误。这就是应用中的**端到端原则**。 199 | 200 | #### 流量控制和阻塞管理 201 | 202 | 流量控制用来避免主机分组发送得过快而使接收方来不及完全收下。 203 | 204 | ![连接过程](https://upload.wikimedia.org/wikipedia/commons/b/b1/Tcp_transport_example.gif) 205 | 206 | ### 3.5.5 终结通路 207 | 208 | 连接终止使用了四路握手过程,在这个过程中每个终端的连接都能独立地被终止。因此,一个典型的拆接过程需要每个终端都提供一对FIN和ACK。 209 | 210 | ![终结通路](https://upload.wikimedia.org/wikipedia/commons/2/2d/Deconnection_TCP.png) 211 | 212 | ### 3.5.6 状态编码 213 | 214 | 下表为TCP状态码列表,以**S**指代服务器,**C**指代客户端,**S&C**表示两者,**S/C**表示两者之一 215 | 216 | - LISTEN S 217 | 218 | 等待从任意远程TCP端口的连接请求。侦听状态。 219 | 220 | - SYN-SENT C 221 | 222 | 在发送连接请求后等待匹配的连接请求。通过connect()函数向服务器发出一个同步(SYNC)信号后进入此状态。 223 | 224 | - SYN-RECEIVED S 225 | 226 | 已经收到并发送同步(SYNC)信号之后等待确认(ACK)请求。 227 | 228 | - ESTABLISHED S&C 229 | 230 | 连接已经打开,收到的数据可以发送给用户。数据传输步骤的正常情况。此时连接两端是平等的。 231 | 232 | - FIN-WAIT-1 S&C 233 | 234 | 主动关闭端调用close()函数发出FIN请求包,表示本方的数据发送全部结束,等待TCP连接另一端的确认包或FIN请求包。 235 | 236 | - FIN-WAIT-2 S&C 237 | 238 | 主动关闭端在FIN-WAIT-1状态下收到确认包,进入等待远程TCP的连接终止请求的半关闭状态。这时可以接收数据,但不再发送数据。 239 | 240 | - CLOSE-WAIT S&C 241 | 242 | 被动关闭端接到FIN后,就发出ACK以回应FIN请求,并进入等待本地用户的连接终止请求的半关闭状态。这时可以发送数据,但不再接收数据。 243 | 244 | - CLOSING S&C 245 | 246 | 在发出FIN后,又收到对方发来的FIN后,进入等待对方对连接终止(FIN)的确认(ACK)的状态。少见。 247 | 248 | - LAST-ACK S&C 249 | 250 | 被动关闭端全部数据发送完成之后,向主动关闭端发送FIN,进入等待确认包的状态。 251 | 252 | - TIME-WAIT S/C 253 | 254 | 主动关闭端接收到FIN后,就发送ACK包,等待足够时间以确保被动关闭端收到了终止请求的确认包。 255 | 【按照RFC 793,一个连接可以在TIME-WAIT保证最大四分钟,即[最大分段寿命](https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%88%86%E6%AE%B5%E5%AF%BF%E5%91%BD)(maximum segment lifetime)的2倍】 256 | 257 | - CLOSED S&C 258 | 259 | 完全没有连接。 260 | 261 | ### 3.5.7 TCP数据包结构 262 | 263 | ![TCP报文段结构](TCP报文段结构.png) 264 | 265 | - TCP报文段首部是20字节,比UDP首部多12字节 266 | - 应用层协议通常采用长度小于MSS的数据块,典型的如telnet,数据块大小只有1字节,加起来21字节,首部是数据块的20倍大小 267 | - 来源连接端口(16位长)-辨识发送连接端口号 268 | - 目的连接端口(16位长)-辨识接收连接端口号 269 | - 序列号(seq,32位长) 270 | - 如果含有同步化旗标(SYN),则此为最初的序列号;第一个数据比特的序列码为本序列号加一。 271 | - 如果没有同步化旗标(SYN),则此为第一个数据比特的序列码。 272 | - 确认号(ack,32位长)—期望收到的数据的开始序列号。也即已经收到的数据的字节长度加1。 273 | - 报头长度(4位长)—以4字节为单位计算出的数据段开始地址的偏移值。由于TCP选项字段的原因,TCP首部的长度是不定长的,通常选项字段为空,这时是20字节。 274 | - 保留—须置0 275 | - 标志符 276 | - URG—为1表示高优先级数据包,紧急指针字段有效。 277 | - ACK—为1表示确认号字段有效 278 | - PSH—为1表示是带有PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。 279 | - RST—为1表示出现严重差错。可能需要重现创建TCP连接。还可以用于拒绝非法的报文段和拒绝连接请求。 280 | - SYN—为1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步 281 | - FIN—为1表示发送方没有数据要传输了,要求释放连接。 282 | - 窗口(WIN,16位长)—表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。用于流量控制。 283 | - 校验和(Checksum,16位长)—对整个的TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。这是一个强制性的字段。 284 | - 紧急指针(16位长)—本报文段中的紧急数据的最后一个字节的序号。 285 | - 选项字段—最多40字节。每个选项的开始是1字节的kind字段,说明选项的类型。 286 | - 0:选项表结束(1字节) 287 | - 1:无操作(1字节)用于选项字段之间的字边界对齐。 288 | - 2:最大报文段长度(4字节,Maximum Segment Size,MSS)通常在创建连接而设置SYN标志的数据包中指明这个选项,指明本端所能接收的最大长度的报文段。通常将MSS设置为(MTU-40)字节,携带TCP报文段的IP数据报的长度就不会超过MTU,从而避免本机发生IP分片。只能出现在同步报文段中,否则将被忽略。 289 | - 3:窗口扩大因子(4字节,wscale),取值0-14。用来把TCP的窗口的值左移的位数。只能出现在同步报文段中,否则将被忽略。这是因为现在的TCP接收数据缓冲区(接收窗口)的长度通常大于65535字节。 290 | - 4:sackOK—发送端支持并同意使用SACK选项。 291 | - 5:SACK实际工作的选项。 292 | - 8:时间戳(10字节,TCP Timestamps Option,TSopt) 293 | - 发送端的时间戳(Timestamp Value field,TSval,4字节) 294 | - 时间戳回显应答(Timestamp Echo Reply field,TSecr,4字节) 295 | 296 | ### 3.5.8 拥塞控制 297 | 298 | #### 概念 299 | 300 | + 拥塞控制是一种用来调整传输控制协议(TCP)连接单次发送的分组数量(单次发送量,在英文文献和程序代码中常叫做cwnd)的算法。 301 | + 它通过增减单次发送量逐步调整,使之逼近当前网络的承载量。如果单次发送量为1,此协议就退化为**停等协议**。 302 | + 单次发送量是以字节来做单位的。但是如果假设TCP每次传输都是按照最大报文段来发送数据的,那么也可以把数据包个数当作单次发送量的单位,所以有时我们说单次发送量增加1也就是增加相当于1个最大报文段的字节数 303 | 304 | #### 算法 305 | 306 | + 拥塞控制假设[分组](https://zh.wikipedia.org/wiki/%E5%88%86%E7%BB%84)的丢失都是由网络繁忙造成的。拥塞控制有三种动作,分别对应主机感受到的情况: 307 | 1. 收到一条**新确认**。这很好,表明当前的单次发送量小于网络的承载量。 308 | 2. 收到三条对同一分组的确认,即**三条重复的确认**。单次发送量往往大于3,例如发送序号为0、10、20、30、40的5条长度为10字节的分组,其中序号20的丢了,则返回的确认是10、20、20、20。3个20就是重复的确认。 309 | 3. 对某一条分组的确认迟迟未到,即**超时**。例如发送序号为0、10、20、30、40的5条长度为10字节的分组,其中序号30的丢了,则返回的确认是10、20、30、30。这才只有两条重复确认。然而刚刚说过,单次发送量往往大于3,所以超时更可能是因为不止一条分组或确认丢失而引起的,这说明网络比上一情况中的更加繁忙。 310 | + 当主机收到一条新确认,此时可以增加单次发送量。若当前单次发送量小于**倍增阈限**(在英文文献和程序代码中常叫做ssthresh),则单次发送量加倍(乘以2),即**指数增长**;否则单次发送量加1,即**线性增长**。 311 | + 当主机收到三条重复的确认——单次发送量减半,倍增阈限等于单次发送量。(进入线性增长期) 312 | + 当主机探测到超时——倍增阈限=单次发送量÷2,单次发送量=1。 313 | -------------------------------------------------------------------------------- /第一章/答案1.md: -------------------------------------------------------------------------------- 1 | ### Chapter 1 Review Questions 2 | 3 | 1. There is no difference. Throughout this text, the words “host” and “end system” are used interchangeably. End systems include PCs, workstations, Web servers, mail servers, PDAs, Internet-connected game consoles, etc. 4 | 5 | 2. From Wikipedia: Diplomatic protocol is commonly described as a set of international courtesy rules. These well-established and time-honored rules have made it easier for nations and people to live and work together. Part of protocol has always been the acknowledgment of the hierarchical standing of all present. Protocol rules are based on the principles of civility. 6 | 7 | 3. Standards are important for protocols so that people can create networking systems and products that interoperate. 8 | 9 | 4. 10 | 1. Dial-up modem over telephone line: home; 11 | 2. DSL over telephone line: home or small office; 12 | 3. Cable to HFC: home; 13 | 4. 100 Mbps switched Ethernet: enterprise; 14 | 5. Wifi (802.11): home and enterprise: 15 | 6. 3G and 4G: wide-area wireless. 16 | 17 | 5. HFC bandwidth is shared among the users. On the downstream channel, all packets emanate from a single source, namely, the head end. Thus, there are no collisions in the downstream channel. 18 | 19 | 6. In most American cities, the current possibilities include: dial-up; DSL; cable modem; fiber-to-the-home. 20 | 21 | 7. Ethernet LANs have transmission rates of 10 Mbps, 100 Mbps, 1 Gbps and 10 Gbps. 22 | 23 | 8. Today, Ethernet most commonly runs over twisted-pair copper wire. It also can run over fibers optic links. 24 | 25 | 9. Dial up modems: up to 56 Kbps, bandwidth is dedicated; ADSL: up to 24 Mbps downstream and 2.5 Mbps upstream, bandwidth is dedicated; HFC, rates up to 42.8 Mbps and upstream rates of up to 30.7 Mbps, bandwidth is shared. FTTH: 2-10Mbps upload; 10-20 Mbps download; bandwidth is not shared. 26 | 27 | 10. There are two popular wireless Internet access technologies today: 28 | 29 | a) Wifi (802.11) In a wireless LAN, wireless users transmit/receive packets to/from an base station (i.e., wireless access point) within a radius of few tens of meters. The base station is typically connected to the wired Internet and thus serves to connect wireless users to the wired network. 30 | 31 | b)3G and 4G wide-area wireless access networks. In these systems, packets are transmitted over the same wireless infrastructure used for cellular telephony, with the base station thus being managed by a telecommunications provider. This provides wireless access to users within a radius of tens of kilometers of the base station. 32 | 33 | 11. At time t0 the sending host begins to transmit. At time t1 = L/R1, the sending host completes transmission and the entire packet is received at the router (no propagation delay). Because the router has the entire packet at time t1, it can begin to transmit the packet to the receiving host at time t1. At time t2 = t1 + L/R2, the router completes transmission and the entire packet is received at the receiving host (again, no propagation delay). Thus, the end-to-end delay is L/R1 + L/R2. 34 | 35 | 12. A circuit-switched network can guarantee a certain amount of end-to-end bandwidth for the duration of a call. Most packet-switched networks today (including the Internet) cannot make any end-to-end guarantees for bandwidth. FDM requires sophisticated analog hardware to shift signal into appropriate frequency bands. 36 | 37 | 13. list: 38 | (a) 2 users can be supported because each user requires half of the link bandwidth. 39 | 40 | (b) Since each user requires 1Mbps when transmitting, if two or fewer users transmit simultaneously, a maximum of 2Mbps will be required. Since the available bandwidth of the shared link is 2Mbps, there will be no queuing delay before the link. Whereas, if three users transmit simultaneously, the bandwidth required will be 3Mbps which is more than the available bandwidth of the shared link. In this case, there will be queuing delay before the link. 41 | 42 | (c) Probability that a given user is transmitting = 0.2 43 | 44 | (d) Probability that all three users are transmitting simultaneously = 45 | = (0.2)3 = 0.008. Since the queue grows when all the users are transmitting, the fraction of time during which the queue grows (which is equal to the probability that all three users are transmitting simultaneously) is 0.008. 46 | 47 | 14. If the two ISPs do not peer with each other, then when they send traffic to each other they have to send the traffic through a provider ISP (intermediary), to which they have to pay for carrying the traffic. By peering with each other directly, the two ISPs can reduce their payments to their provider ISPs. An Internet Exchange Points (IXP) (typically in a standalone building with its own switches) is a meeting point where multiple ISPs can connect and/or peer together. An ISP earns its money by charging each of the the ISPs that connect to the IXP a relatively small fee, which may depend on the amount of traffic sent to or received from the IXP. 48 | 49 | 15. Google's private network connects together all its data centers, big and small. Traffic between the Google data centers passes over its private network rather than over the public Internet. Many of these data centers are located in, or close to, lower tier ISPs. Therefore, when Google delivers content to a user, it often can bypass higher tier ISPs. What motivates content providers to create these networks? First, the content provider has more control over the user experience, since it has to use few intermediary ISPs. Second, it can save money by sending less traffic into provider networks. Third, if ISPs decide to charge more money to highly profitable content providers (in countries where net neutrality doesn't apply), the content providers can avoid these extra payments. 50 | 51 | 16. The delay components are processing delays, transmission delays, propagation delays, and queuing delays. All of these delays are fixed, except for the queuing delays, which are variable. 52 | 53 | 17. a) 1000 km, 1 Mbps, 100 bytes 54 | b) 100 km, 1 Mbps, 100 bytes 55 | 56 | 18. 10msec; d/s; no; no 57 | 58 | 19. a) 500 kbps 59 | b) 64 seconds 60 | c) 100kbps; 320 seconds 61 | 62 | 20. End system A breaks the large file into chunks. It adds header to each chunk, thereby generating multiple packets from the file. The header in each packet includes the IP address of the destination (end system B). The packet switch uses the destination IP address in the packet to determine the outgoing link. Asking which road to take is analogous to a packet asking which outgoing link it should be forwarded on, given the packet’s destination address. 63 | 64 | 21. The maximum emission rate is 500 packets/sec and the maximum transmission rate is 65 | 350 packets/sec. The corresponding traffic intensity is 500/350 =1.43 > 1. Loss will eventually occur for each experiment; but the time when loss first occurs will be different from one experiment to the next due to the randomness in the emission process. 66 | 67 | 22. Five generic tasks are error control, flow control, segmentation and reassembly, multiplexing, and connection setup. Yes, these tasks can be duplicated at different layers. For example, error control is often provided at more than one layer. 68 | 69 | 23. The five layers in the Internet protocol stack are – from top to bottom – the application layer, the transport layer, the network layer, the link layer, and the physical layer. The principal responsibilities are outlined in Section 1.5.1. 70 | 71 | 24. Application-layer message: data which an application wants to send and passed onto the transport layer; transport-layer segment: generated by the transport layer and encapsulates application-layer message with transport layer header; network-layer datagram: encapsulates transport-layer segment with a network-layer header; link-layer frame: encapsulates network-layer datagram with a link-layer header. 72 | 73 | 25. Routers process network, link and physical layers (layers 1 through 3). (This is a little bit of a white lie, as modern routers sometimes act as firewalls or caching components, and process Transport layer as well.) Link layer switches process link and physical layers (layers 1 through2). Hosts process all five layers. 74 | 75 | 26. a) Virus 76 | Requires some form of human interaction to spread. Classic example: E-mail viruses. 77 | b) Worms 78 | No user replication needed. Worm in infected host scans IP addresses and port numbers, looking for vulnerable processes to infect. 79 | 80 | 27. Creation of a botnet requires an attacker to find vulnerability in some application or system (e.g. exploiting the buffer overflow vulnerability that might exist in an application). After finding the vulnerability, the attacker needs to scan for hosts that are vulnerable. The target is basically to compromise a series of systems by exploiting that particular vulnerability. Any system that is part of the botnet can automatically scan its environment and propagate by exploiting the vulnerability. An important property of such botnets is that the originator of the botnet can remotely control and issue commands to all the nodes in the botnet. Hence, it becomes possible for the attacker to issue a command to all the nodes, that target a single node (for example, all nodes in the botnet might be commanded by the attacker to send a TCP SYN message to the target, which might result in a TCP SYN flood attack at the target). 81 | 82 | 28. Trudy can pretend to be Bob to Alice (and vice-versa) and partially or completely modify the message(s) being sent from Bob to Alice. For example, she can easily change the phrase “Alice, I owe you $1000” to “Alice, I owe you $10,000”. Furthermore, Trudy can even drop the packets that are being sent by Bob to Alice (and vise-versa), even if the packets from Bob to Alice are encrypted. 83 | 84 | 85 | ## Chapter 1 Problems 86 | 87 | + Problem 1 88 | 89 | There is no single right answer to this question. Many protocols would do the trick. Here's a simple answer below: 90 | 91 | Messages from ATM machine to Server 92 | Msg name purpose 93 | -------- ------- 94 | HELO Let server know that there is a card in the ATM machine 95 | ATM card transmits user ID to Server 96 | PASSWD User enters PIN, which is sent to server 97 | BALANCE User requests balance 98 | WITHDRAWL User asks to withdraw money 99 | BYE user all done 100 | 101 | Messages from Server to ATM machine (display) 102 | Msg name purpose 103 | -------- ------- 104 | PASSWD Ask user for PIN (password) 105 | OK last requested operation (PASSWD, WITHDRAWL) OK 106 | ERR last requested operation (PASSWD, WITHDRAWL) in ERROR 107 | AMOUNT sent in response to BALANCE request 108 | BYE user done, display welcome screen at ATM 109 | 110 | Correct operation: 111 | 112 | client server 113 | 114 | HELO (userid) --------------> (check if valid userid) 115 | <------------- PASSWD 116 | PASSWD --------------> (check password) 117 | <------------- OK (password is OK) 118 | BALANCE --------------> 119 | <------------- AMOUNT 120 | WITHDRAWL --------------> check if enough $ to cover withdrawl 121 | <------------- OK 122 | ATM dispenses $ 123 | BYE --------------> 124 | <------------- BYE 125 | 126 | In situation when there's not enough money: 127 | 128 | HELO (userid) --------------> (check if valid userid) 129 | <------------- PASSWD 130 | PASSWD --------------> (check password) 131 | <------------- OK (password is OK) 132 | BALANCE --------------> 133 | <------------- AMOUNT 134 | WITHDRAWL --------------> check if enough $ to cover withdrawl 135 | <------------- ERR (not enough funds) 136 | error msg displayed 137 | no $ given out 138 | BYE --------------> 139 | <------------- BYE 140 | 141 | + Problem 2 142 | At time N\*(L/R) the first packet has reached the destination, the second packet is stored in the last router, the third packet is stored in the next-to-last router, etc. At time N\*(L/R) + L/R, the second packet has reached the destination, the third packet is stored in the last router, etc. Continuing with this logic, we see that at time N\*(L/R) + (P-1)\*(L/R) = (N+P-1)*(L/R) all packets have reached the destination. 143 | 144 | + Problem 3 145 | 146 | a) A circuit-switched network would be well suited to the application, because the application involves long sessions with predictable smooth bandwidth requirements. Since the transmission rate is known and not bursty, bandwidth can be reserved for each application session without significant waste. In addition, the overhead costs of setting up and tearing down connections are amortized over the lengthy duration of a typical application session. 147 | 148 | b) In the worst case, all the applications simultaneously transmit over one or more network links. However, since each link has sufficient bandwidth to handle the sum of all of the applications' data rates, no congestion (very little queuing) will occur. Given such generous link capacities, the network does not need congestion control mechanisms. 149 | 150 | 151 | 152 | + Problem 4 153 | 154 | a)Between the switch in the upper left and the switch in the upper right we can have 4 connections. Similarly we can have four connections between each of the 3 other pairs of adjacent switches. Thus, this network can support up to 16 connections. 155 | 156 | b)We can 4 connections passing through the switch in the upper-right-hand corner and another 4 connections passing through the switch in the lower-left-hand corner, giving a total of 8 connections. 157 | c)Yes. For the connections between A and C, we route two connections through B and two connections through D. For the connections between B and D, we route two connections through A and two connections through C. In this manner, there are at most 4 connections passing through any link. 158 | 159 | 160 | 161 | + Problem 5 162 | 163 | Tollbooths are 75 km apart, and the cars propagate at 100km/hr. A tollbooth services a car at a rate of one car every 12 seconds. 164 | 165 | a) There are ten cars. It takes 120 seconds, or 2 minutes, for the first tollbooth to service the 10 cars. Each of these cars has a propagation delay of 45 minutes (travel 75 km) before arriving at the second tollbooth. Thus, all the cars are lined up before the second tollbooth after 47 minutes. The whole process repeats itself for traveling between the second and third tollbooths. It also takes 2 minutes for the third tollbooth to service the 10 cars. Thus the total delay is 96 minutes. 166 | 167 | b) Delay between tollbooths is 8\*12 seconds plus 45 minutes, i.e., 46 minutes and 36 seconds. The total delay is twice this amount plus 8\*12 seconds, i.e., 94 minutes and 48 seconds. 168 | 169 | + Problem 6-31 170 | (See Solutions6thEdition.doc) -------------------------------------------------------------------------------- /第二章/2.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [TOC] 4 | 5 | 6 | 7 | # 应用层协议 8 | 9 | ## 应用层协议的结构与分类应用 10 | 11 | + 应用程序体系结构包括**客户端-服务器架构**和**P2P体系结构** 12 | + 客户端-服务器架构 13 | * 发起通信的进程叫客户 14 | * 等待联系的进程叫服务器 15 | * 发送和接受报文的接口叫套接字 16 | * 通过IP来寻得主机,端口号区分主机上的不同应用程序 17 | 18 | ## 因特网提供的运输服务 19 | 20 | ### 因特网应用需求 21 | 22 | ![应用层协议对应的运输协议.png](./images/应用层协议对应的运输协议.png) 23 | 24 | ### TCP服务 25 | #### 特点 26 | 1. **面向连接**:发送报文之前经过三次握手,然后建立一条**全双工**连接,发送报文,再销毁连接 27 | 2. **可靠**:非常可靠,没有字节丢失和冗余 28 | 3. **有拥塞机制**:不一定给自己带来好处,但对整个网络环境友好 29 | 4. `TCP`不安全,但有自己的加强版——`SSL`协议 30 | 31 | ### UDP服务 32 | #### 特点 33 | 1. **轻量级**:最小化服务,最小化成本 34 | 2. 不可靠:可能发送包丢失和乱序 35 | 3. **没有拥塞机制**:可以以任何速率向网络层注入数据 36 | 37 | ### 注意 38 | 不管是`UDP`还是`TCP`,都不提供弹性带宽(吞吐量)保证和时间敏感保证。 39 | 40 | ### 对比 41 | 42 | ![TCP与UDP.png](./images/TCP与UDP.png) 43 | 44 | ### 应用层支持的运输层表 45 | 46 | ![应用层协议对应的运输协议.png](./images/应用层协议对应的运输协议.png) 47 | 48 | ## HTTP协议 49 | 50 | ### 一些web术语和基本概念、约定 51 | 52 | + web文档是由对象组成的。一个对象就是一个文件。对象一般由`URL`来定位。 53 | + URL:统一资源定位符,主要由两部分组成:一部分是主机名,另一部分是对象们的路径名,是因特网上标准的资源的地址 54 | 55 | ### HTTP概况 56 | + `HTTP`一般使用`TCP`作为传输层协议(但HTTP协议中并没有规定必须使用它或它支持的层) 57 | + `HTTP`是一个无状态协议:`HTTP`服务器不保存客户的任何信息。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 58 | + `HTTP`是一个无连接协议:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 59 | + `HTTP`是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。 60 | 61 | 62 | ### HTTP非持久连接 63 | + `HTTP` 0.9和1.0使用非持续连接 64 | + 在非持续连接下每个tcp只连接一个web对象,连接在每个请求回应对后都会关闭 65 | 66 | ### HTTP持久连接 67 | + `HTTP` 1.1+默认使用持续连接 1.0要加`Keep-alive`相应头 68 | + 一个连接可被多个请求重复利用的保持连接机制被引入,显著地减少了请求延迟,因为客户不用在首次请求后再次进行TCP交互确认创建连接 69 | + 优点 70 | * 较少的CPU和内存的使用(由于同时打开的连接的减少了) 71 | * 允许请求和应答的HTTP管线化 72 | * 降低网络阻塞 (TCP连接减少了) 73 | * 减少了后续请求的延迟(无需再进行握手) 74 | * 报告错误无需关闭TCP连接 75 | + 缺点 76 | * 对于现在的广泛普及的宽带连接来说,Keep-Alive也许并不像以前一样有用。web服务器会保持连接若干秒(Apache中默认15秒),这与提高的性能相比也许会影响性能。 77 | * 对于单个文件被不断请求的服务(例如图片存放网站),Keep-Alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。 78 | 79 | ### HTTP请求报文格式 80 | 81 | #### 请求报文 82 | 以下是一个典型的请求报文 83 | ![http请求报文1.png](./images/http请求报文1.png) 84 | 85 | 可以解析为 86 | ![http请求报文2.png](./images/http请求报文2.png) 87 | 88 | #### 请求方法 89 | + `GET` 请求获取Request-URI所标识的资源 90 | + `POST` 在Request-URI所标识的资源后附加新的数据 91 | + `HEAD`请求获取由Request-URI所标识的资源的响应消息报头 92 | + `PUT`请求服务器存储一个资源,并用Request-URI作为其标识 93 | + `DELETE`请求服务器删除Request-URI所标识的资源 94 | + `TRACE`请求服务器回送收到的请求信息,主要用于测试或诊断 95 | + `CONNECT`保留将来使用 96 | + `OPTIONS`请求查询服务器的性能,或者查询与资源相关的选项和需求 97 | 98 | #### 请求URL 99 | + 统一资源定位符的标准格式如下: 100 | 协议类型://服务器地址(必要时需加上端口号)/路径/文件名 101 | 102 | + 而`HTTP`的统一资源定位符将从因特网获取信息的五个基本元素包括在一个简单的地址中: 103 | 1. 传送协议(http/https)。 104 | 2. 服务器。(通常为域名,有时为IP地址) 105 | 3. 端口号。(以数字方式表示,若为HTTP的预设值“:80”可省略) 106 | 4. 路径。(以“/”字元区别路径中的每一个目录名称) 107 | 5. 查询字符串(query string)。(GET模式的表单参数,以“?”字元为起点,每个参数以“&”隔开,再以“=”分开参数名称与资料,通常以UTF8的URL编码,避开字元冲突的问题) 108 | 109 | #### 其他字段 110 | + Accept:浏览器可接受的MIME类型。 111 | + Accept-Charset:浏览器可接受的字符集。 112 | + Accept-Encoding:浏览器能够进行解码的数据编码方式,比如`gzip`。`Servlet`能够向支持`gzip`的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 113 | + Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 114 | + Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 115 | + Connection:表示是否需要持久连接。HTTP1.1默认是`keep-alive` 116 | + Content-Length:表示请求消息正文的长度。 117 | + Cookie:这是最重要的请求头信息之一 118 | + From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 119 | + Host:初始URL中的主机和端口。 120 | + If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 121 | + Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 122 | + Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 123 | + User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 124 | 125 | ### HTTP响应报文形式 126 | 127 | #### 应答报文 128 | HTTP响应由三个部分组成,分别是:状态行、消息报头、响应正文。以下是响应报文的基本形式: 129 | ![http响应.jpg](./images/http响应.jpg) 130 | 131 | #### 状态行 132 | 状态行格式如下: 133 | HTTP-Version Status-Code Reason-Phrase CRLF 134 | 其中: 135 | 136 | + HTTP-Version表示服务器HTTP协议的版本; 137 | + Status-Code表示服务器发回的响应状态代码; 138 | + Reason-Phrase表示状态代码的文本描述。 139 | + CRLF是换行 140 | 141 | #### 响应码 142 | 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 143 | 144 | + 1xx:指示信息--表示请求已接收,继续处理 145 | * 100 Continue 客户端应当继续发送请求的剩余部分。服务器必须在请求完成后向客户端发送一个最终响应。 146 | * 101 Switching Protocols 服务器已经理解请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade消息头中定义的那些协议。 147 | + 2xx:成功--表示请求已被成功接收、理解、接受 148 | * 204 No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,返回新的或更新后的元信息。 149 | * 206 Partial Content 服务器已经成功处理了部分GET请求。类似于FlashGet或者迅雷这类的HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。该请求必须包含Range头信息来指示客户端希望得到的内容范围,并且可能包含If-Range来作为请求条件。 150 | + 3xx:重定向--要完成请求必须进行更进一步的操作 151 | * 300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,用户或浏览器能够自行选择一个首选的地址进行重定向。 152 | * 301 Moved Permanently 被请求的资源已永久移动到新位置,将来任何对此资源的引用都应使用本响应返回的若干个URI之一。 153 | + 4xx:客户端错误--请求有语法错误或请求无法实现 154 | * 400 Bad Request 由于包含语法错误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。 155 | * 401 Unauthorized 当前请求需要用户验证。该响应必须包含一个WWW-Authenticate信息头用以询问用户信息。 156 | * 403 Forbidden 服务器已经理解请求,但是拒绝执行它。 157 | * 404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。 158 | * 407 Proxy Authentication Required 与401响应类似,只不过客户端必须在代理服务器上进行身份验证。 159 | * 410 Gone 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。 160 | * 421 There are too many connections from your internet address 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围 161 | * 426 Upgrade Required 客户端应当切换到TLS/1.0。 162 | + 5xx:服务器端错误--服务器未能实现合法的请求 163 | * 500 Internal Server Error 服务器遇到状况,无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。 164 | * 501 Not Implemented 服务器无法识别请求的方法,并且无法支持其对任何资源的请求。 165 | * 502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 166 | * 503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。 167 | * 504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。注意:某些代理服务器在DNS查询超时时会返回400或者500错误。 168 | 169 | #### 消息报头 170 | + Location 响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。 171 | + Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。 172 | + WWW-Authenticate 必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。 173 | + Content-Encoding 它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding这样用于记录文档的压缩方法,eg:Content-Encoding:gzip 174 | + Content-Language 实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读 175 | 者。 176 | + Content-Length 实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。 177 | + Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。 178 | + Last-Modified实体报头域用于指示资源的最后修改日期和时间。 179 | + Expires实体报头域给出响应过期的日期和时间。 180 | 181 | ## FTP协议 182 | 183 | ### 一些术语和基本概念、约定 184 | + **文件传输协议(缩写:FTP)**是用于在网络上进行文件传输的一套标准协议。它属于网络传输协议的应用层。 185 | 186 | ### FTP概况 187 | + FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。 188 | + FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登陆进程。 189 | + FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。 190 | + 当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此虽然文件可以成功的传输,但因为控制会话会被防火墙断开;传输会产生一些错误。 191 | + 运行FTP服务的许多站点都开放匿名服务,匿名用户的用户名是:“anonymous”。这个帐号不需要密码。 192 | + FTP是个有状态连接 必须追踪用户所在的文件树 193 | 194 | ### FTP缺点 195 | + 密码和文件内容都使用明文传输,可能发生窃听。 196 | + 因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。 197 | + 服务器可能会被告知连接一个第三方计算机的保留端口。 198 | + 此方式在需要传输文件数量很多的小文件时,性能不好。 199 | 200 | ### 主动和被动模式 201 | FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。 202 | 203 | 一个主动模式的FTP连接创建要遵循以下步骤: 204 | 205 | 1. 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。 206 | 2. 客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。 207 | 3. 服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。 208 | 4. 客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。 209 | 210 | ## SMTP协议 211 | 212 | ### 概念与约定 213 | 214 | + **简单邮件传输协议 (SMTP)** 是事实上的在Internet传输email的标准。 215 | + **邮局协议**(**POP**)是TCP/IP协议族中的一员,主要用于支持使用**客户端**远程管理在服务器上的电子邮件。最新版本为**POP3**,而提供了[SSL](https://zh.wikipedia.org/wiki/SSL)加密的POP3协议被称为**POP3S**。 216 | + **Internet Message Access Protocol**(缩写为**IMAP**)是一个应用层协议,用来从本地邮件客户端(如Microsoft Outlook、Outlook Express、Foxmail、Mozilla Thunderbird)访问远程服务器上的邮件。 217 | + POP3和IMAP的区别主要是: 218 | + POP3是比较老的protocol,主要为了解决本地机器和远程邮件服务器链接的问题,每次邮件会download到本地机器,然后从远程邮件服务器上删掉(当然特殊config除外),然后进行本地编辑。这样的问题是如果从多个终端链接服务器,只有第一个下载的能看到,现在pop4正在讨论中。 219 | + IMAP是相对比较新的protocol,可以将邮件分文件夹整理,然后这些信息也存在远程的邮件服务器上,读取邮件后,服务器上不删除。原理上IMAP应该是相当于oneline编辑,但现在的mail client基本都有在本地存copy的功能。 220 | + **多用途互联网邮件扩展**(**MIME**)是一个互联网标准,它扩展了电子邮件标准,使其能够支援: 221 | - 非ASCII字符文本; 222 | - 非文本格式附件(二进制、声音、图像等); 223 | - 由多部分(multiple parts)组成的消息体; 224 | - 包含非ASCII字符的头信息(Header information) 225 | + 此外,HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。 226 | 227 | ### SMTP概述 228 | 229 | + SMTP用于将邮件从发送方推送到接收方的**服务器**。(SMTP负责发,POP3/IMAP负责收) 230 | + SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。要做到这点,邮件客户端必须使用[POP3](https://zh.wikipedia.org/wiki/%E9%83%B5%E5%B1%80%E5%8D%94%E5%AE%9A)或[IMAP](https://zh.wikipedia.org/wiki/IMAP)。 231 | + SMTP的局限之一在于它没有对发送方进行身份验证的机制。因此,后来定义了SMTP-AUTH扩展。 232 | + 只支持7位ASCII码,因此发送非文本之前必须经过一次编码,收到之后必须经过解码才能查看。 233 | 234 | ### 与HTTP的对比 235 | 236 | #### 共同点 237 | 238 | 1. 都是用于传输文件的 239 | 2. 都使用持续连接 240 | 241 | #### 不同点 242 | 243 | 1. HTTP是拉协议,SMTP是推协议,即TCP连接发起者不一样,前者由接收方发起,后者由发送方发起。 244 | 2. HTTP无数据限制,SMTP只支持7位ASCII编码格式。 245 | 3. 对于富文本,HTTP把该文档拆分成多个部分,分开文本和其他媒体文件,分别发送;而SMTP则直接全部进行ASCII编码,全部放在一个报文之中。 246 | 247 | ### 邮件报文格式和MIME 248 | 249 | 通用邮件报文格式如下: 250 | 251 | 1. From字段:发送者 252 | 2. To字段:接受者 253 | 3. Subject字段:首部行 254 | 4. (空白行) 255 | 5. 正文报文体 256 | 257 | ## DNS协议 258 | 259 | ### 术语与约定 260 | 261 | + **域名系统**(**DNS**)是互联网的一项服务。它作为将域名和IP地址相互映射的一个**分布式数据库**,能够使人更方便地访问互联网。 262 | + DNS使用TCP和UDP端口53。 263 | + DNS每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 264 | 265 | ### dns概述 266 | 267 | + dns用于转换主机名和IP地址。 268 | + 它是应用层协议,体现在: 269 | + 是C/S架构 270 | + 端到端发送dns报文 271 | + 与其他应用层协议不同的是,dns主要为其他应用层协议服务,而不是直接面向用户。 272 | 273 | ### dns记录了什么 274 | 275 | + 主机记录(A记录):用于名称解析的重要记录,将特定的主机名映射到对应主机的IP地址上。 276 | + 别名记录(CNAME记录): 将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。 277 | + IPv6主机记录(AAAA记录): 用于将特定的主机名映射到一个主机的IPv6地址。 278 | + 服务位置记录(SRV记录): 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。 279 | + NAPTR记录:提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于[ENUM](https://zh.wikipedia.org/w/index.php?title=ENUM&action=edit&redlink=1)查询。 280 | + MX记录:记录邮件服务器的别名。某公司的web服务器可以和邮件服务器共享别名。 281 | + NS记录:记录从哪个dns服务器可以获得某个域(如foo.com)的dns记录,即用于记录查询链。 282 | 283 | ### dns提供的服务 284 | 285 | + 映射域名与IP地址,并提供别名 286 | + 为邮件服务器提供别名 287 | + 负载分配(一个域名多个IP的时候) 288 | 289 | ### dns域名解析详解 290 | 291 | DNS查询有两种方式:**递归**和**迭代**。DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。 292 | 293 | 以查询zh.wikipedia.org为例: 294 | 295 | - 客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。 296 | - 如果记录老化或不存在,则 297 | 1. DNS服务器向[根域名服务器](https://zh.wikipedia.org/wiki/%E6%A0%B9%E5%9F%9F%E5%90%8D%E4%BC%BA%E6%9C%8D%E5%99%A8)发送查询报文"query zh.wikipedia.org",根域名服务器返回.org域的权威域名服务器地址,这一级首先会返回的是[顶级域名](https://zh.wikipedia.org/wiki/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D)的权威域名服务器。 298 | 2. DNS服务器向.org域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到.wikipedia.org域的权威域名服务器地址。 299 | 3. DNS服务器向.wikipedia.org域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机zh的A记录,存入自身缓存并返回给客户端。 300 | 301 | ### dns工作机制特性 302 | 303 | + dns具有分布式分层次解构 304 | + dns能够缓存 305 | 306 | ### dns记录与报文 307 | 308 | #### dns记录 309 | 310 | dns记录往往由四部分组成。 311 | 312 | 1. Type:标志这是一条什么记录,见[dns记录了什么](#dns记录了什么) 313 | 2. Value:Name的对应值 314 | 3. Name:Value的对应值 315 | 4. TTL:本记录应该在缓存中呆多久 316 | 317 | ### dns报文 318 | 319 | ![dns报文格式](images/dns报文格式.jpg) 320 | 321 | 1. 前12字节为**首部域**包括 322 | + 标识符(16bit数字):查询的唯一标识 323 | + 标志(0 or 1):0是查询 1是回答 324 | 2. 查询问题区包括 325 | + 名字字段:主机名 326 | + 类型:想查什么记录 327 | 3. 回答区:根据问题来回答,可能由多个回答 328 | 4. 授权区即权威区,包含其他权威服务器的记录 329 | 5. 附加区是一些备注信息 330 | 331 | #### 注册dns 332 | 333 | 应该向注册登记机构注册自己的网络域名和IP地址,才能被查询到。 334 | 335 | ### dns的安全性 336 | 337 | dns大多数情况下是安全的。 338 | 339 | 1. 对于`DDos`攻击,DNS有包过滤系统和缓存服务,仅在`DDos`攻击指向顶级服务器的时候稍微有些困扰。 340 | 2. 可以被中间人攻击(伪造回答哄骗客户主机)和DNS毒害攻击(伪造回答哄骗下一级dns服务器来缓存,从而欺骗客户主机),但是技术上很难实现。 341 | 3. dns服务器本身可被利用于攻击其他服务器,但是至今为止只是个例。 342 | 343 | ## P2P应用与BitTorrent协议 344 | 345 | ### 术语与约定 346 | 347 | + **对等式网络**(peer-to-peer, 简称**P2P**),又称点对点技术,是[无中心服务器](https://zh.wikipedia.org/wiki/%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96)、依靠用户群(peers)交换信息的互联网体系,他的作用在于,减低以往网络传输中的节点,以降低数据丢失的风险。 348 | + 与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。 349 | + **BitTorrent协议**(简称**BT**)是用在[对等网络](https://zh.wikipedia.org/wiki/%E5%AF%B9%E7%AD%89%E7%BD%91%E7%BB%9C)中文件分享的网络协议程序。它是用户群对用户群(peer-to-peer),而且用户越多,下载同一文件的人越多,且下载后,继续维持上传的状态,就可以“分享”,成为其用户端节点下载的[种子文件](https://zh.wikipedia.org/wiki/%E7%A7%8D%E5%AD%90%E6%96%87%E4%BB%B6)(.torrent),下载该档案的速度越快。 350 | + **分布式散列表**(缩写**DHT**)是[分布式计算](https://zh.wikipedia.org/wiki/%E5%88%86%E6%95%A3%E5%BC%8F%E8%A8%88%E7%AE%97)系统中的一类,用来将一个关键值(key)的集合分散到所有在分布式系统中的节点,并且可以有效地将消息转送到唯一一个拥有查询者提供的关键值的节点(Peers)。这里的节点类似散列表中的存储位置。 351 | 352 | ### 优点 353 | 354 | + P2P能有效地利用空闲的带宽,从而降低服务器压力,甚至不需要服务器 355 | + 速度快 356 | + 能够自扩展,因为每个人都可以做种 357 | 358 | ### BitTorrent协议 359 | 360 | #### 下载原理 361 | 362 | 1. 种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(虚拟逻辑上的分块),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。 363 | 2. 下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker(追踪器)服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。 364 | 3. 下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。 365 | 4. 为了解决某些用户“下完就跑”的现象,一些种子发布站(PT站)有奖惩机制,上传即加分,下载即扣分。 366 | 367 | #### 下载特点 368 | 369 | 1. 越多人下越快 370 | 2. **稀缺优先**机制:最稀缺的块优先得到分发 371 | 372 | ### 分布式散列表 373 | 374 | #### 发展背景 375 | 376 | 研究分布式散列表的主要动机是为了开发点对点系统,这些系统使用不同的方法来解决如何**找到拥有某数据的节点**的问题。DHT是解决这种问题的一个方法。 377 | 378 | #### 特性 379 | 380 | 分布式散列表本质上强调以下特性: 381 | 382 | - 离散性:构成系统的节点并没有任何中央式的协调机制。 383 | - 伸缩性:即使有成千上万个节点,系统仍然应该十分有效率。 384 | - 容错性:即使节点不断地加入、离开或是停止工作,系统仍然必须达到一定的可靠度。 385 | 386 | 387 | ## Python里的socket编程 388 | 389 | ### UDP编程 390 | 391 | #### 客户端程序 392 | 393 | ```python 394 | from socket import * 395 | # 要访问的服务器地址和端口号 396 | serverName = 'localhost' 397 | serverPort = 8080 398 | # AF_INEF指定了IPv4 SOCK_DGRAM指定了UDP协议 399 | clientSocket = socket(AF_INEF,SOCK_DGRAM) 400 | # 发送数据 401 | message = raw_input('Input lowercase sentence:') 402 | clientSocket.sendto(message,(serverName,serverPort)) 403 | # modifiedMessage存响应报文,serverAddress存响应源地址 缓存长度2048 404 | modifiedMessage,serverAddress = clientSocket.recvfrom(2048) 405 | print modifiedMessage 406 | # 关闭连接 407 | clientSocket.close() 408 | ``` 409 | 410 | #### 服务器程序 411 | 412 | ```python 413 | from socket import * 414 | # 要监听的端口号 415 | serverPort = 8080 416 | # AF_INEF指定了IPv4 SOCK_DGRAM指定了UDP协议 417 | serverSocket = socket(AF_INEF,SOCK_DGRAM) 418 | serverSocket.bind('',serverPort) 419 | print "Ready..." 420 | while True: 421 | message,clientAddress = serverPort.recvfrom(2048) 422 | modifiedMessage = message.upper() # 全部转为大写 423 | serverSocket.sendto(modifiedMessage, clientAddress) 424 | ``` 425 | 426 | ### TCP编程 427 | 428 | #### 客户端程序 429 | 430 | ```python 431 | from socket import * 432 | # 要访问的服务器地址和端口号 433 | serverName = 'localhost' 434 | serverPort = 8080 435 | # AF_INEF指定了IPv4 SOCK_STREAM指定了TCP协议 436 | clientSocket = socket(AF_INEF,SOCK_STREAM) 437 | # 创建TCP连接 438 | clientSocket.connect((serverName,serverPort)) 439 | # 发送数据 440 | message = raw_input('Input lowercase sentence:') 441 | clientSocket.send(message) 442 | # modifiedMessage存响应报文,serverAddress存响应源地址 缓存长度2048 443 | modifiedMessage = clientSocket.recvfrom(2048) 444 | print modifiedMessage 445 | # 关闭连接 446 | clientSocket.close() 447 | ``` 448 | 449 | #### 服务器程序 450 | 451 | ```python 452 | from socket import * 453 | # 要监听的端口号 454 | serverPort = 8080 455 | # AF_INEF指定了IPv4 SOCK_STREAM指定了TCP协议 456 | serverSocket = socket(AF_INEF,SOCK_STREAM) 457 | serverSocket.bind('',serverPort) 458 | # 设置可接受的TCP连接数 459 | serverSocket.listen(1) 460 | print "Ready..." 461 | while True: 462 | # 接受连接 463 | connectionSocket, addr = serverSocket.accpet() 464 | message = serverPort.recvfrom(2048) 465 | modifiedMessage = message.upper() # 全部转为大写 466 | connectionSocket.send(modifiedMessage) 467 | connectionSocket.close() 468 | ``` 469 | 470 | 471 | 472 | 473 | -------------------------------------------------------------------------------- /第三章/运输层.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 运输层.md 208 | 209 | 210 |

运输层协议

概述与约定

概述

  • 运输层协议为不同主机上的进程提供了逻辑通信功能
  • 运输层协议在端系统(主机)里实现 而不是路由器
  • 运输层中的分组(包)称之为报文段
  • 常见的运输层协议有TCP和UDP

运输层和网络层的关系

  • 拿送信做比方

    • 应用层报文 = 信封上的字符
    • 进程 = 发件人和收件人
    • 主机 = 发件人的家庭 收件人的家庭
    • 运输层协议 = 邮递员
    • 网络层协议 = 邮政服务

因特网中的运输层

预备知识---IP协议

  • IP协议是一个网络层协议
  • IP的服务模型是“尽力而为”,但并不保证服务,是不可靠的
  • 每台主机有一个IP地址

TCP和UDP的责任

共有的:

  • 多路分解和多路复用 :将主机间的交互转化为进程间的交互
  • 差错检查 :通过报文段首部加入差错检查字段

TCP独有:

  • 可靠传输 : 通过流量控制、序号、确认、定时器
  • 拥塞机制 : 调节流量

多路复用机制

概述

  • 一个进程有一个或者多个套接字
  • 运输层实际上将数据交给了套接字们
  • 每个套接字都有唯一的标识符 并且标志了它是UDP还是TCP
  • 多路分解操作:在接收端,运输层协议检查报文头,读取接收套接字的信息,然后定向连接
  • 多路复用操作:在发送端,运输层协议从不同套接字收集信息,生成头部信息并打包

无连接的多路复用和多路分解

  • 运输层的报文包含应用程序数据、源端口号、目的端口号和其他两个值

  • 端口号是套接字的标志 一个UDP套接字由一个二元组构成,包含

    • 目的IP地址
    • 目的端口号
  • 只要目的IP和端口号一致,UDP报文就会被送到同一个套接字

面向连接的多路复用和多路分解

  • TCP套接字是一个四元组,包含:

    • 源IP
    • 源端口号
    • 目的IP
    • 目的端口号
  • 主机用套接字的全部四个值来分解,也就是说就算目的相同,源不同也不会分配到同个套接字,除非TCP报文段提供了初始连接的请求

  • 只有四个值都互相匹配,双方套接字才能互相发消息

Web服务器和TCP

  • Web服务的默认端口是80
  • 对于持续HTTP,持续期间使用同一对套接字
  • 对于非持续HTTP,每一对请求/响应都创建一对套接字,再销毁
  • 套接字和进程不一定一一对应,因为有线程的存在

UDP协议:无连接运输

概述

  • UDP无非只是给网络层协议加上了一点多路复用/分解服务而已
  • web应用选择UDP服务,几乎无异于直接和IP打交道
  • UDP没有握手过程,是无连接的
  • DNS是使用UDP服务的典型范例,如果没有收到响应,则会向另一DNS服务器发请求,直到发现怎么都没有响应

优点

  • 关于何时、发送什么数据的应用层控制更加精细
  • 无需建立连接(握手)
  • 无连接:不需要在主机中维护连接状态
  • 分组首部仅仅8字节,而TCP需要20字节

应用层协议对应的运输层协议 应用层协议对应的运输协议

对比 TCP与UDP

UDP报文段结构

UDP报文的结构是32比特的头部,加上应用层报文

32比特平均分成4部分,包括源端口号,目的端口号,数据长度(首部+应用数据),校验和

UDP校验和

  • UDP校验和提供了差错检测功能,能检查链路层是否发生了比特改变
  • 发送方的UDP对报文段中所有16比特的字全部相加,再进行反码运算(溢出时回滚)
  • 虽然链路层也提供差错检测,但是不能保证所有链路都有提供
  • 虽然UDP有差错检测,但是它没有任何纠错和恢复能力,只能丢弃受损的报文,或者发出警告

可靠数据传输原理

图解可靠数据运输机制

211 | 212 | -------------------------------------------------------------------------------- /第二章/2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 2.md 206 | 207 | 208 |

应用层协议

应用层协议的结构与分类应用

  • 应用程序体系结构包括客户端-服务器架构P2P体系结构

  • 客户端-服务器架构

    • 发起通信的进程叫客户
    • 等待联系的进程叫服务器
    • 发送和接受报文的接口叫套接字
    • 通过IP来寻得主机,端口号区分主机上的不同应用程序

因特网提供的运输服务

因特网应用需求

应用层协议对应的运输协议.png

TCP服务

特点

  1. 面向连接:发送报文之前经过三次握手,然后建立一条全双工连接,发送报文,再销毁连接
  2. 可靠:非常可靠,没有字节丢失和冗余
  3. 有拥塞机制:不一定给自己带来好处,但对整个网络环境友好
  4. TCP不安全,但有自己的加强版——SSL协议

UDP服务

特点

  1. 轻量级:最小化服务,最小化成本
  2. 不可靠:可能发送包丢失和乱序
  3. 没有拥塞机制:可以以任何速率向网络层注入数据

注意

不管是UDP还是TCP,都不提供弹性带宽(吞吐量)保证和时间敏感保证。

对比

TCP与UDP.png

应用层支持的运输层表

应用层协议对应的运输协议.png

HTTP协议

一些web术语和基本概念、约定

  • web文档是由对象组成的。一个对象就是一个文件。对象一般由URL来定位。
  • URL:统一资源定位符,主要由两部分组成:一部分是主机名,另一部分是对象们的路径名,是因特网上标准的资源的地址

HTTP概况

  • HTTP一般使用TCP作为传输层协议(但HTTP协议中并没有规定必须使用它或它支持的层)
  • HTTP是一个无状态协议:HTTP服务器不保存客户的任何信息。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  • HTTP是一个无连接协议:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

HTTP非持久连接

  • HTTP 0.9和1.0使用非持续连接
  • 在非持续连接下每个tcp只连接一个web对象,连接在每个请求回应对后都会关闭

HTTP持久连接

  • HTTP 1.1+默认使用持续连接 1.0要加Keep-alive相应头

  • 一个连接可被多个请求重复利用的保持连接机制被引入,显著地减少了请求延迟,因为客户不用在首次请求后再次进行TCP交互确认创建连接

  • 优点

    • 较少的CPU和内存的使用(由于同时打开的连接的减少了)
    • 允许请求和应答的HTTP管线化
    • 降低网络阻塞 (TCP连接减少了)
    • 减少了后续请求的延迟(无需再进行握手)
    • 报告错误无需关闭TCP连接
  • 缺点

    • 对于现在的广泛普及的宽带连接来说,Keep-Alive也许并不像以前一样有用。web服务器会保持连接若干秒(Apache中默认15秒),这与提高的性能相比也许会影响性能。
    • 对于单个文件被不断请求的服务(例如图片存放网站),Keep-Alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。

HTTP请求报文格式

请求报文

以下是一个典型的请求报文 209 | http请求报文1.png

可以解析为 210 | http请求报文2.png

请求方法

  • GET 请求获取Request-URI所标识的资源

    • POST 在Request-URI所标识的资源后附加新的数据

      • HEAD请求获取由Request-URI所标识的资源的响应消息报头
      • PUT请求服务器存储一个资源,并用Request-URI作为其标识
    • DELETE请求服务器删除Request-URI所标识的资源

    • TRACE请求服务器回送收到的请求信息,主要用于测试或诊断

    • CONNECT保留将来使用

    • OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求

请求URL

  • 统一资源定位符的标准格式如下:
    211 | 协议类型://服务器地址(必要时需加上端口号)/路径/文件名
  • HTTP的统一资源定位符将从因特网获取信息的五个基本元素包括在一个简单的地址中:
  1. 传送协议(http/https)。
  2. 服务器。(通常为域名,有时为IP地址)
  3. 端口号。(以数字方式表示,若为HTTP的预设值“:80”可省略)
  4. 路径。(以“/”字元区别路径中的每一个目录名称)
  5. 查询字符串(query string)。(GET模式的表单参数,以“?”字元为起点,每个参数以“&”隔开,再以“=”分开参数名称与资料,通常以UTF8的URL编码,避开字元冲突的问题)

其他字段

  • Accept:浏览器可接受的MIME类型。
  • Accept-Charset:浏览器可接受的字符集。
  • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzipServlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
  • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  • Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
  • Connection:表示是否需要持久连接。HTTP1.1默认是keep-alive
  • Content-Length:表示请求消息正文的长度。
  • Cookie:这是最重要的请求头信息之一
  • From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
  • Host:初始URL中的主机和端口。
  • If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
  • Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

HTTP响应报文形式

应答报文

HTTP响应由三个部分组成,分别是:状态行、消息报头、响应正文。以下是响应报文的基本形式: 212 | http响应.jpg

状态行

状态行格式如下: 213 | HTTP-Version Status-Code Reason-Phrase CRLF 214 | 其中:

  • HTTP-Version表示服务器HTTP协议的版本;
  • Status-Code表示服务器发回的响应状态代码;
  • Reason-Phrase表示状态代码的文本描述。
  • CRLF是换行

响应码

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

  • 1xx:指示信息--表示请求已接收,继续处理

    • 100 Continue 客户端应当继续发送请求的剩余部分。服务器必须在请求完成后向客户端发送一个最终响应。
    • 101 Switching Protocols 服务器已经理解请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade消息头中定义的那些协议。
  • 2xx:成功--表示请求已被成功接收、理解、接受

    • 204 No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,返回新的或更新后的元信息。
    • 206 Partial Content 服务器已经成功处理了部分GET请求。类似于FlashGet或者迅雷这类的HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。该请求必须包含Range头信息来指示客户端希望得到的内容范围,并且可能包含If-Range来作为请求条件。
  • 3xx:重定向--要完成请求必须进行更进一步的操作

    • 300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,用户或浏览器能够自行选择一个首选的地址进行重定向。
    • 301 Moved Permanently 被请求的资源已永久移动到新位置,将来任何对此资源的引用都应使用本响应返回的若干个URI之一。
  • 4xx:客户端错误--请求有语法错误或请求无法实现

    • 400 Bad Request 由于包含语法错误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
    • 401 Unauthorized 当前请求需要用户验证。该响应必须包含一个WWW-Authenticate信息头用以询问用户信息。
    • 403 Forbidden 服务器已经理解请求,但是拒绝执行它。
    • 404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。
    • 407 Proxy Authentication Required 与401响应类似,只不过客户端必须在代理服务器上进行身份验证。
    • 410 Gone 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。
    • 421 There are too many connections from your internet address 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围
    • 426 Upgrade Required 客户端应当切换到TLS/1.0。
  • 5xx:服务器端错误--服务器未能实现合法的请求

    • 500 Internal Server Error 服务器遇到状况,无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
    • 501 Not Implemented 服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
    • 502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
    • 503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。
    • 504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。注意:某些代理服务器在DNS查询超时时会返回400或者500错误。

消息报头

  • Location 响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
  • Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。
  • WWW-Authenticate 必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。
  • Content-Encoding 它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding这样用于记录文档的压缩方法,eg:Content-Encoding:gzip
  • Content-Language 实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读 215 | 者。
  • Content-Length 实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
  • Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。
  • Last-Modified实体报头域用于指示资源的最后修改日期和时间。
  • Expires实体报头域给出响应过期的日期和时间。

FTP协议

一些术语和基本概念、约定

  • 文件传输协议(缩写:FTP)是用于在网络上进行文件传输的一套标准协议。它属于网络传输协议的应用层。

FTP概况

  • FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。
  • FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登陆进程。
  • FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。
  • 当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此虽然文件可以成功的传输,但因为控制会话会被防火墙断开;传输会产生一些错误。
  • 运行FTP服务的许多站点都开放匿名服务,匿名用户的用户名是:“anonymous”。这个帐号不需要密码。
  • FTP是个有状态连接 必须追踪用户所在的文件树

FTP缺点

  • 密码和文件内容都使用明文传输,可能发生窃听。
  • 因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。
  • 服务器可能会被告知连接一个第三方计算机的保留端口。
  • 此方式在需要传输文件数量很多的小文件时,性能不好。

主动和被动模式

FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

一个主动模式的FTP连接创建要遵循以下步骤:

  1. 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。
  2. 客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。
  3. 服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。
  4. 客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。

SMTP协议

216 | 217 | -------------------------------------------------------------------------------- /第一章/1.html: -------------------------------------------------------------------------------- 1 | 1
1018 | 1019 | 1022 | 1023 |

第一章

1024 |

读书

1025 |
    1026 |
  • 1027 |

    互联网中的设备称为主机(host)或者终端系统(end system),包括客户端和服务器

    1028 |
      1029 |
    • 主机通过通信链路分组交换机连接
    • 1030 |
    • 路由器链路层交换机都是分组交换机
    • 1031 |
    1032 |
  • 1033 |
  • 1034 |

    ISP是因特网服务供应商 有不同层级

    1035 |
  • 1036 |
  • 1037 |

    分组交换:主机与主机之间通过报文(message)通信,长的报文又会被分割成分组(packet、包)

    1038 |
  • 1039 |
  • 1040 |

    存储转发机制:交换机在收到一整组报文之后才开始向输出链路输出

    1041 |
  • 1042 |
  • 1043 |

    对于每一条输出链路分组交换机都有一个输出缓存,包必须在输出缓存里排队,这叫排队时延,一旦缓存占满,则会丢包

    1044 |
  • 1045 |
  • 1046 |

    在因特网中,IP地址的多级结构信息和路由器的转发表,决定了路由器拿到包之后往哪条链路送

    1047 |
  • 1048 |
  • 1049 |

    转发表是由路由选择协议自动设置的

    1050 |
  • 1051 |
  • 1052 |

    电路交换:另一种端与端通信手段,电话是这种手段的典型例子。特点是源和目标点建立起名副其实的连接,称为电路,这条路上的带宽全部为这个连接空出来。所以电路交换的速度非常可靠。

    1053 |
  • 1054 |
1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 |
对比电路交换分组交换
实现复杂,成本高简单,成本低
可靠性可靠延时不可预测
利用率低,有空闲浪费高,可共享空闲资源
特点专线专用共享路由
1086 |
    1087 |
  • 1088 |

    分组交换中时延的分类

    1089 |
      1090 |
    • 处理时延:检查分组首部和决定将该分组导向何处所需要的时间是节点处理时延的一部分。其他因素包括检查比特级差错处理(通常是微秒级以下)等。在这之后,路由器将包引向通往路由器B链路之前的队列。
    • 1091 |
    • 排队时延:在队列中,当分组在链路缓存中等待传输时,它经受排队时延。 到达组的分组数量是到达该队列的流量强度的函数。实际的排队时延通常在毫秒到微秒级。
    • 1092 |
    • 传输时延:用L比特表示分组的长度,用R b/s表示从路由器A到路由器B的链路传输速率。传输时延是L/R。这是将所有分组比特推向链路所需要的时间。实际的传输时延通常在毫秒到微秒级。是包从路由器A中被推出去的时间。与两路由器的距离无关。
    • 1093 |
    • 传播时延:一旦一个比特被A推向链路,该比特需要向路由器B传播,从该链路的起点到路由器B的传播所需要的时间是传播时延。该比特以该链路的传播速率传播,其速率范围等于或略小于光速。传播时延等于两台路由器之间的距离除以传播速率,即传播时延是d/s,d是两台路由器间的距离,s是该链路的传播速率。传播时延在毫秒级。
    • 1094 |
    • 传输时延可以看做是车队(包)过收费站(路由器)的时间,而传播时延可看作路上花费的时间。
    • 1095 |
    • 节点总时延 = 处理时延 + 排队时延 + 传输时延 + 传播时延 一般来说处理时延通常是微不足道的。
    • 1096 |
    1097 |
  • 1098 |
  • 1099 |

    排队时延的特殊之处

    1100 |
      1101 |
    • 对于不同的分组(包)可能不一样(后到的可能要等先到的)
    • 1102 |
    • 取决于流量本身的特点(即突发还是平稳),包括流量到达该队列的速率、链路的传输速率和到达流量的性质
    • 1103 |
    • 令a表示分组到达队列的平均速率(每秒多少分组,pkt/s),假定所有包都是L b组成的,则比特到达队列的平均速率是La bps。而La/R被称为流量强度
    • 1104 |
    • 如果La/R > 1,则比特到达队列的平均速率超过从该队列传输出去的速率。在这种不幸的情况下,队列的增加将趋近于无界,并且排队时延将趋向无穷大。因此,流量工程中设计系统时流量强度不能大于1。在因特网中,接近1时将容易发生丢包。
    • 1105 |
    • 第n个分组有(n-1)L/R的排队时延
    • 1106 |
    1107 |
  • 1108 |
  • 1109 |

    端到端时延
    1110 | 假设源主机和目的主机之间有N-1台路由器,并且该网络是无拥塞(不排队)的。那么端到端时延为:\( d_{end-end} = N (d_{proc} + d_{trans} + d_{prop})\)

    1111 |
  • 1112 |
  • 1113 |

    吞吐量

    1114 |
      1115 |
    • 在如以太网路及封包无线电之类的电信网络之中,吞吐量或网络吞吐量是指于一通讯通道上单位时间能成功传递的平均资料量,资料可以于实体或逻辑链接上传递,或通过某个网络节点。吞吐量的单位通常表示为位元每秒(bit/s或bps),有时也可看到封包每秒或封包每时槽等单位。
    • 1116 |
    • 在因特网内表现为网速。
    • 1117 |
    1118 |
  • 1119 |
  • 1120 |

    因特网的协议栈

    1121 |
      1122 |
    • 应用层(信的格式):应用程序的协议。
        1123 |
      • 我们把应用层的信息称为报文。
      • 1124 |
      • 典型协议如HTTPFTPSMTP(电邮)DNS
      • 1125 |
      1126 |
    • 1127 |
    • 运输层(平信还是挂号信):在应用程序端点之间传输应用层报文的协议。
        1128 |
      • 因特网中常用的有两个,即TCPUDP
      • 1129 |
      • TCP:面向连接,分割长报文,拥塞控制机制,可靠传递,双方速率匹配。
      • 1130 |
      • UDP:无连接。(啥也没有- -)。
      • 1131 |
      • 处于运输层的分组叫做报文段(segement)
      • 1132 |
      1133 |
    • 1134 |
    • 网络层(邮局):负责将数据报(datagram,处于网络层的分组)从主机移动到另一主机,使两端能够互连且决定最佳路径。
        1135 |
      • 从运输层拿到报文段和目标地址。然后进行路由
      • 1136 |
      • 网络层的典型协议是IP协议,用来识别目标地址。
      • 1137 |
      • 另一典型协议是网络控制消息协定(ICMP),它是IP的主要部分,一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了pingtraceroute这两个特例。
      • 1138 |
      1139 |
    • 1140 |
    • 链路层(快递员):在两个网络实体之间提供数据链路连接的创建、维持和释放管理。
        1141 |
      • 构成链路层的分组(称之数据帧或帧),并对帧定界、同步、收发顺序的控制。
      • 1142 |
      • 负责传输过程中的流量控制,差错检测和差错控制等方面。
      • 1143 |
      • 数据链路层中的数据封装是指:封装的数据信息中,包含了地址段和数据段等。地址段含有点对点发送节点和接收节点的地址(如MAC),控制段用来表示数格连接帧的类型,数据段包含实际要传输的数据。
      • 1144 |
      • 网络层将数据报下发给链路层,链路层传输后,上报给目标结点的网络层。
      • 1145 |
      • 典型协议:异步传输模式(ATM)帧中继(frame relay)高级数据链路控制(HDLC)
      • 1146 |
      • 交换机、桥接器是本层设备。而集线器是物理层设备,不是数据链路层设备。
      • 1147 |
      1148 |
    • 1149 |
    • 物理层(公路和车):将一个比特一个比特移动。
        1150 |
      • 典型协议如:蓝牙协议数字用户线路(DSL)等等
      • 1151 |
      • 常见物理层设备:网卡、光纤、集线器
      • 1152 |
      1153 |
    • 1154 |
    1155 |
  • 1156 |
  • 1157 |

    封装

    1158 |
      1159 |
    • 因特网协议栈自顶向下传输时,各层会将上层信息包装,上层信息包装为有效载荷字段,本层信息包装为首部字段
    • 1160 |
    • 应用层报文 -> 运输层报文段 -> 网络层数据报 -> 链路层帧
    • 1161 |
    1162 |
  • 1163 |
  • 1164 |

    因特网攻击举例

    1165 |
      1166 |
    1. 用病毒和木马形成僵尸网络(肉鸡)。
    2. 1167 |
    3. 拒绝服务攻击,包括弱点攻击(攻击bug)、带宽洪泛(常见、常是分布式,砸流量使丢包和延时)、连接洪泛(伪造大量TCP连接)
    4. 1168 |
    5. 分组嗅探:抓包,窃取隐私。
    6. 1169 |
    7. 伪造分组:IP哄骗等等。
    8. 1170 |
    1171 |
  • 1172 |
1173 |

习题

1174 |
    1175 |
  • 1176 |

    P2
    1177 | 第一个包到达花费N*(L/R),然后每隔(L/R)就有一个包到达。所以总花费N*(L/R) + (P-1)*(L/R) = (N+P-1)*(L/R)

    1178 |
  • 1179 |
  • 1180 |

    P3

    1181 |
      1182 |
    1. 电路交换网。因为需要高可靠性,且程序长时间运行并高频地发送数据,并没有浪费。这样能较好地发挥电路交换网的特点,避开它的缺点。
    2. 1183 |
    3. 不需要。就算所有应用同时发送一个分组,还是有足够的容量,不会造成拥塞。
    4. 1184 |
    1185 |
  • 1186 |
  • 1187 |

    P6

    1188 |
      1189 |
    1. m/s
    2. 1190 |
    3. L/R
    4. 1191 |
    5. m/s+L/R
    6. 1192 |
    7. A的出口链路开始的地方,刚离开A
    8. 1193 |
    9. 在路上
    10. 1194 |
    11. 已经到B了
    12. 1195 |
    13. m=L/R*s=536km
    14. 1196 |
    1197 |
  • 1198 |
  • 1199 |

    P14

    1200 |
      1201 |
    1. 传输时延是L/R,排队时延是La/R*L/R*(1-La/R) 总时延是(I+1)L/(R*(1-I))
    2. 1202 |
    3. 1203 |
    1204 |
  • 1205 |
  • 1206 |

    P15

    1207 |
      1208 |
    • 假设分组长度L,带宽是R,则I=La/R μ=R/L
    • 1209 |
    • (I+1)L/(R*(1-I)) = (a+μ-1)/(u*(μ-1))
    • 1210 |
    1211 |
  • 1212 |
-------------------------------------------------------------------------------- /第一章/答案1.html: -------------------------------------------------------------------------------- 1 | 答案1

Chapter 1 Review Questions

1018 |
    1019 |
  1. 1020 |

    There is no difference. Throughout this text, the words “host” and “end system” are used interchangeably. End systems include PCs, workstations, Web servers, mail servers, PDAs, Internet-connected game consoles, etc.

    1021 |
  2. 1022 |
  3. 1023 |

    From Wikipedia: Diplomatic protocol is commonly described as a set of international courtesy rules. These well-established and time-honored rules have made it easier for nations and people to live and work together. Part of protocol has always been the acknowledgment of the hierarchical standing of all present. Protocol rules are based on the principles of civility.

    1024 |
  4. 1025 |
  5. 1026 |

    Standards are important for protocols so that people can create networking systems and products that interoperate.

    1027 |
  6. 1028 |
  7. 1029 |
      1030 |
    1. Dial-up modem over telephone line: home;
    2. 1031 |
    3. DSL over telephone line: home or small office;
    4. 1032 |
    5. Cable to HFC: home;
    6. 1033 |
    7. 100 Mbps switched Ethernet: enterprise;
    8. 1034 |
    9. Wifi (802.11): home and enterprise:
    10. 1035 |
    11. 3G and 4G: wide-area wireless.
    12. 1036 |
    1037 |
  8. 1038 |
  9. 1039 |

    HFC bandwidth is shared among the users. On the downstream channel, all packets emanate from a single source, namely, the head end. Thus, there are no collisions in the downstream channel.

    1040 |
  10. 1041 |
  11. 1042 |

    In most American cities, the current possibilities include: dial-up; DSL; cable modem; fiber-to-the-home.

    1043 |
  12. 1044 |
  13. 1045 |

    Ethernet LANs have transmission rates of 10 Mbps, 100 Mbps, 1 Gbps and 10 Gbps.

    1046 |
  14. 1047 |
  15. 1048 |

    Today, Ethernet most commonly runs over twisted-pair copper wire. It also can run over fibers optic links.

    1049 |
  16. 1050 |
  17. 1051 |

    Dial up modems: up to 56 Kbps, bandwidth is dedicated; ADSL: up to 24 Mbps downstream and 2.5 Mbps upstream, bandwidth is dedicated; HFC, rates up to 42.8 Mbps and upstream rates of up to 30.7 Mbps, bandwidth is shared. FTTH: 2-10Mbps upload; 10-20 Mbps download; bandwidth is not shared.

    1052 |
  18. 1053 |
  19. 1054 |

    There are two popular wireless Internet access technologies today:

    1055 |

    a) Wifi (802.11) In a wireless LAN, wireless users transmit/receive packets to/from an base station (i.e., wireless access point) within a radius of few tens of meters. The base station is typically connected to the wired Internet and thus serves to connect wireless users to the wired network.

    1056 |

    b)3G and 4G wide-area wireless access networks. In these systems, packets are transmitted over the same wireless infrastructure used for cellular telephony, with the base station thus being managed by a telecommunications provider. This provides wireless access to users within a radius of tens of kilometers of the base station.

    1057 |
  20. 1058 |
  21. 1059 |

    At time t0 the sending host begins to transmit. At time t1 = L/R1, the sending host completes transmission and the entire packet is received at the router (no propagation delay). Because the router has the entire packet at time t1, it can begin to transmit the packet to the receiving host at time t1. At time t2 = t1 + L/R2, the router completes transmission and the entire packet is received at the receiving host (again, no propagation delay). Thus, the end-to-end delay is L/R1 + L/R2.

    1060 |
  22. 1061 |
  23. 1062 |

    A circuit-switched network can guarantee a certain amount of end-to-end bandwidth for the duration of a call. Most packet-switched networks today (including the Internet) cannot make any end-to-end guarantees for bandwidth. FDM requires sophisticated analog hardware to shift signal into appropriate frequency bands.

    1063 |
  24. 1064 |
  25. 1065 |

    list:
    1066 | (a) 2 users can be supported because each user requires half of the link bandwidth.

    1067 |

    (b) Since each user requires 1Mbps when transmitting, if two or fewer users transmit simultaneously, a maximum of 2Mbps will be required. Since the available bandwidth of the shared link is 2Mbps, there will be no queuing delay before the link. Whereas, if three users transmit simultaneously, the bandwidth required will be 3Mbps which is more than the available bandwidth of the shared link. In this case, there will be queuing delay before the link.

    1068 |

    (c) Probability that a given user is transmitting = 0.2

    1069 |

    (d) Probability that all three users are transmitting simultaneously =
    1070 | = (0.2)3 = 0.008. Since the queue grows when all the users are transmitting, the fraction of time during which the queue grows (which is equal to the probability that all three users are transmitting simultaneously) is 0.008.

    1071 |
  26. 1072 |
  27. 1073 |

    If the two ISPs do not peer with each other, then when they send traffic to each other they have to send the traffic through a provider ISP (intermediary), to which they have to pay for carrying the traffic. By peering with each other directly, the two ISPs can reduce their payments to their provider ISPs. An Internet Exchange Points (IXP) (typically in a standalone building with its own switches) is a meeting point where multiple ISPs can connect and/or peer together. An ISP earns its money by charging each of the the ISPs that connect to the IXP a relatively small fee, which may depend on the amount of traffic sent to or received from the IXP.

    1074 |
  28. 1075 |
  29. 1076 |

    Google’s private network connects together all its data centers, big and small. Traffic between the Google data centers passes over its private network rather than over the public Internet. Many of these data centers are located in, or close to, lower tier ISPs. Therefore, when Google delivers content to a user, it often can bypass higher tier ISPs. What motivates content providers to create these networks? First, the content provider has more control over the user experience, since it has to use few intermediary ISPs. Second, it can save money by sending less traffic into provider networks. Third, if ISPs decide to charge more money to highly profitable content providers (in countries where net neutrality doesn’t apply), the content providers can avoid these extra payments.

    1077 |
  30. 1078 |
  31. 1079 |

    The delay components are processing delays, transmission delays, propagation delays, and queuing delays. All of these delays are fixed, except for the queuing delays, which are variable.

    1080 |
  32. 1081 |
  33. 1082 |

    a) 1000 km, 1 Mbps, 100 bytes
    1083 | b) 100 km, 1 Mbps, 100 bytes

    1084 |
  34. 1085 |
  35. 1086 |

    10msec; d/s; no; no

    1087 |
  36. 1088 |
  37. 1089 |

    a) 500 kbps
    1090 | b) 64 seconds
    1091 | c) 100kbps; 320 seconds

    1092 |
  38. 1093 |
  39. 1094 |

    End system A breaks the large file into chunks. It adds header to each chunk, thereby generating multiple packets from the file. The header in each packet includes the IP address of the destination (end system B). The packet switch uses the destination IP address in the packet to determine the outgoing link. Asking which road to take is analogous to a packet asking which outgoing link it should be forwarded on, given the packet’s destination address.

    1095 |
  40. 1096 |
  41. 1097 |

    The maximum emission rate is 500 packets/sec and the maximum transmission rate is
    1098 | 350 packets/sec. The corresponding traffic intensity is 500/350 =1.43 > 1. Loss will eventually occur for each experiment; but the time when loss first occurs will be different from one experiment to the next due to the randomness in the emission process.

    1099 |
  42. 1100 |
  43. 1101 |

    Five generic tasks are error control, flow control, segmentation and reassembly, multiplexing, and connection setup. Yes, these tasks can be duplicated at different layers. For example, error control is often provided at more than one layer.

    1102 |
  44. 1103 |
  45. 1104 |

    The five layers in the Internet protocol stack are – from top to bottom – the application layer, the transport layer, the network layer, the link layer, and the physical layer. The principal responsibilities are outlined in Section 1.5.1.

    1105 |
  46. 1106 |
  47. 1107 |

    Application-layer message: data which an application wants to send and passed onto the transport layer; transport-layer segment: generated by the transport layer and encapsulates application-layer message with transport layer header; network-layer datagram: encapsulates transport-layer segment with a network-layer header; link-layer frame: encapsulates network-layer datagram with a link-layer header.

    1108 |
  48. 1109 |
  49. 1110 |

    Routers process network, link and physical layers (layers 1 through 3). (This is a little bit of a white lie, as modern routers sometimes act as firewalls or caching components, and process Transport layer as well.) Link layer switches process link and physical layers (layers 1 through2). Hosts process all five layers.

    1111 |
  50. 1112 |
  51. 1113 |

    a) Virus
    1114 | Requires some form of human interaction to spread. Classic example: E-mail viruses.
    1115 | b) Worms
    1116 | No user replication needed. Worm in infected host scans IP addresses and port numbers, looking for vulnerable processes to infect.

    1117 |
  52. 1118 |
  53. 1119 |

    Creation of a botnet requires an attacker to find vulnerability in some application or system (e.g. exploiting the buffer overflow vulnerability that might exist in an application). After finding the vulnerability, the attacker needs to scan for hosts that are vulnerable. The target is basically to compromise a series of systems by exploiting that particular vulnerability. Any system that is part of the botnet can automatically scan its environment and propagate by exploiting the vulnerability. An important property of such botnets is that the originator of the botnet can remotely control and issue commands to all the nodes in the botnet. Hence, it becomes possible for the attacker to issue a command to all the nodes, that target a single node (for example, all nodes in the botnet might be commanded by the attacker to send a TCP SYN message to the target, which might result in a TCP SYN flood attack at the target).

    1120 |
  54. 1121 |
  55. 1122 |

    Trudy can pretend to be Bob to Alice (and vice-versa) and partially or completely modify the message(s) being sent from Bob to Alice. For example, she can easily change the phrase “Alice, I owe you $1000” to “Alice, I owe you $10,000”. Furthermore, Trudy can even drop the packets that are being sent by Bob to Alice (and vise-versa), even if the packets from Bob to Alice are encrypted.

    1123 |
  56. 1124 |
1125 |

Chapter 1 Problems

1126 |
    1127 |
  • 1128 |

    Problem 1

    1129 |

    There is no single right answer to this question. Many protocols would do the trick. Here’s a simple answer below:

    1130 |

    Messages from ATM machine to Server
    1131 | Msg name purpose
    1132 | -------- -------
    1133 | HELO Let server know that there is a card in the ATM machine
    1134 | ATM card transmits user ID to Server
    1135 | PASSWD User enters PIN, which is sent to server
    1136 | BALANCE User requests balance
    1137 | WITHDRAWL User asks to withdraw money
    1138 | BYE user all done

    1139 |

    Messages from Server to ATM machine (display)
    1140 | Msg name purpose
    1141 | -------- -------
    1142 | PASSWD Ask user for PIN (password)
    1143 | OK last requested operation (PASSWD, WITHDRAWL) OK
    1144 | ERR last requested operation (PASSWD, WITHDRAWL) in ERROR
    1145 | AMOUNT sent in response to BALANCE request
    1146 | BYE user done, display welcome screen at ATM

    1147 |

    Correct operation:

    1148 |

    client server

    1149 |

    HELO (userid) --------------> (check if valid userid)
    1150 | <------------- PASSWD
    1151 | PASSWD --------------> (check password)
    1152 | <------------- OK (password is OK)
    1153 | BALANCE -------------->
    1154 | <------------- AMOUNT
    1155 | WITHDRAWL --------------> check if enough $ to cover withdrawl
    1156 | <------------- OK
    1157 | ATM dispenses $
    1158 | BYE -------------->
    1159 | <------------- BYE

    1160 |

    In situation when there’s not enough money:

    1161 |

    HELO (userid) --------------> (check if valid userid)
    1162 | <------------- PASSWD
    1163 | PASSWD --------------> (check password)
    1164 | <------------- OK (password is OK)
    1165 | BALANCE -------------->
    1166 | <------------- AMOUNT
    1167 | WITHDRAWL --------------> check if enough $ to cover withdrawl
    1168 | <------------- ERR (not enough funds)
    1169 | error msg displayed
    1170 | no $ given out
    1171 | BYE -------------->
    1172 | <------------- BYE

    1173 |
  • 1174 |
  • 1175 |

    Problem 2
    1176 | At time N*(L/R) the first packet has reached the destination, the second packet is stored in the last router, the third packet is stored in the next-to-last router, etc. At time N*(L/R) + L/R, the second packet has reached the destination, the third packet is stored in the last router, etc. Continuing with this logic, we see that at time N*(L/R) + (P-1)*(L/R) = (N+P-1)*(L/R) all packets have reached the destination.

    1177 |
  • 1178 |
  • 1179 |

    Problem 3

    1180 |

    a) A circuit-switched network would be well suited to the application, because the application involves long sessions with predictable smooth bandwidth requirements. Since the transmission rate is known and not bursty, bandwidth can be reserved for each application session without significant waste. In addition, the overhead costs of setting up and tearing down connections are amortized over the lengthy duration of a typical application session.

    1181 |

    b) In the worst case, all the applications simultaneously transmit over one or more network links. However, since each link has sufficient bandwidth to handle the sum of all of the applications’ data rates, no congestion (very little queuing) will occur. Given such generous link capacities, the network does not need congestion control mechanisms.

    1182 |
  • 1183 |
  • 1184 |

    Problem 4

    1185 |

    a)Between the switch in the upper left and the switch in the upper right we can have 4 connections. Similarly we can have four connections between each of the 3 other pairs of adjacent switches. Thus, this network can support up to 16 connections.

    1186 |

    b)We can 4 connections passing through the switch in the upper-right-hand corner and another 4 connections passing through the switch in the lower-left-hand corner, giving a total of 8 connections.
    1187 | c)Yes. For the connections between A and C, we route two connections through B and two connections through D. For the connections between B and D, we route two connections through A and two connections through C. In this manner, there are at most 4 connections passing through any link.

    1188 |
  • 1189 |
  • 1190 |

    Problem 5

    1191 |

    Tollbooths are 75 km apart, and the cars propagate at 100km/hr. A tollbooth services a car at a rate of one car every 12 seconds.

    1192 |

    a) There are ten cars. It takes 120 seconds, or 2 minutes, for the first tollbooth to service the 10 cars. Each of these cars has a propagation delay of 45 minutes (travel 75 km) before arriving at the second tollbooth. Thus, all the cars are lined up before the second tollbooth after 47 minutes. The whole process repeats itself for traveling between the second and third tollbooths. It also takes 2 minutes for the third tollbooth to service the 10 cars. Thus the total delay is 96 minutes.

    1193 |

    b) Delay between tollbooths is 8*12 seconds plus 45 minutes, i.e., 46 minutes and 36 seconds. The total delay is twice this amount plus 8*12 seconds, i.e., 94 minutes and 48 seconds.

    1194 |
  • 1195 |
  • 1196 |

    Problem 6-31
    1197 | (See Solutions6thEdition.doc)

    1198 |
  • 1199 |
--------------------------------------------------------------------------------