计算机网络
本文最后更新于 2023-12-15,文章内容可能已经过时。
计算机网络
1.概论:
1.1 连接方式:
1.2 交换方式:
1.2.1 电路交换:
电路交换的主要特点
• 电路交换通常采用面向连接方式
• 先呼叫建立连接,实现端到端的资源预留
预留的资源包括:链路带宽资源、交换机的交换能力
• 电路交换连接建立后,物理通路被通信双方独占,资源专用,即使空闲也不与其他连接共享
• 由于建立连接并预留资源,因此传输性能好;但如果传输中发生设备故障,则传输被中断
电线对的数量与电话机数量的平方(N2)成正比.
当电话机的数量增多时,使用电话交换机将这些电话连接起来。
1.2.2 分组交换:
采用存储转发技术.
在发送端,先把较长的报文划分成更小的等长数据段。数据段前面添加首部就构成了分组 (packet).
互联网采用分组交换技术。分组是在互联网中传送的数据单元。
发送端依次把各分组发送到接收端。
接收端收到分组后剥去首部,还原成原来的报文.
1.2.2.1 转发:
1.2.2.2 优点:
1.3 分类:
1.4 结构:
在计算机网络中,抛开具体的设备,把诸如工作站、服务器、交换机等网络单元抽象为“点” ,把网络中的电缆等通信介质抽象为“线” ,这样从拓扑学的观点看计算机和网络系统,就形成了点和线组成的几何图形,从而抽象出了网络系统的具体结构。称这种采用拓扑学方法抽象的网络结构为计算机网络的拓扑结构。
计算机网络的拓扑主要是指通信子网的拓扑构型:点——点线路通信子网拓扑结构广播信道通信子网拓扑结构。
1.4.1 星型:
1.4.2 环型:
1.4.3 总线型:
1.4.4 树型:
1.4.5 网型:
1.5 性能指标:
1.5.1 速率:
最重要的一个性能指标。
指的是数据的传送速率,也称为数据率 (data rate) 或比特率 (bit rate)。
单位:bit/s,或 kbit/s、Mbit/s、 Gbit/s 等。
例如1010 bit/s 的数据率就记为 40 Gbit/s。
速率往往是指额定速率或标称速率,非实际运行速率.
1.5.2 带宽:
1.5.3 时延:
传输时延:数据块长度与信道带宽的影响
传播时延:信道长度与信号传播速率
处理时延:交换结点(如路由器)为存储转发而进行了一些必要处理,比如差错检测;
排队时延:结点缓存队列中分组排队所经历的时延。与网络中通信量有关
1.5.6 时延带宽积:
1.5.7 其他度量单位:
1.6 网络体系结构:
相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。
“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
计算机网络的体系结构(architecture)是计算机网络的各层及其协议的集合。
体系结构就是这个计算机网络及其部件所应完成功能的精确定义
1.6.1 协议:
计算机网络中的数据交换必须遵守事先约定好的规则。
这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。
网络协议(network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
协议是因特网各个层次运行的标准.
分层:应用层、传输层、网络层、数据链路层、物理层
好处:1.层次分明独立性好;2.灵活性好;3.易于管理
应用层:网络应用程序及其应用层协议存留的地方。涉及HTML、SMTP、FTP等
传输层:提供不同主机的用户进程间端到端的通信。TCP、UDP
网络层:完成网络中主机间的报文传输:IP等
数据链路:提供给帧通过链路一端另一端的服务,将来自网络层来的数据可靠地传输到相邻节点的目标机网络层。:ARP等
物理层:将帧从物理信道上一个元素移动到另一个元素,确保原始的数据可在各种物理媒体上传输。RS-232 、RS-449、X.21、V.35、ISDN、以及FDDI、IEEE802.3、IEEE802.4、和IEEE802.5等
1.6.1.1 层次结构:
1.6.2 服务原语:
服务:
• 典型服务:面向连接传输服务,无连接传输服务
• 服务由一组可用于用户进程以访问服务的原语(操作)形式指定
• 原语告诉服务执行某些操作或报告对等实体所采取的操作
1.6.3 数据传递过程:
1.7 TCP/IP模型:
1.7.1 与OSI模型的比较:
1.7.2 五层体系结构:
所以说,在tcp/ip的四层模型之上,把网络接口层分成数据链路层和物理层,就是五层协议的结构.
1.8 互联网通信概述:
1.DHCP.客户机创建一个DHCP 请求封装在UDP中(源IP全0、mac全f)全网广播,路由器接收到为其分配IP并将IP、子网掩码、网关IP及dns服务器IP封装到DHCP。ACK数据包封装后发送给客户机,客户机记录自己的IP掩码dns并将网关IP记录到自己的转发表。 2客户机将自己和dns服务器的IP和子网掩码逐 bit 相与得到网络号,如果在同一网段则发全网arp广播包(目的mac为全F);如果不同则发送 arp广播包(目的mac为网关,IP为dns)、路由器看到不是给自己的则持续上面这个过程发给上层其他路由直到到达 dns服务器。dns服务器将mac发给客户机。 3.获得dns 的mac发送 arp请求,再dns 数据库中找到google域名,如果找到google的IP地址原始记录则形成一个dns回复报文(包含主机名到地址的映射)封装后发给客户机,如果没有则到根名称服务器中寻找其根名称的顶级域名称服务器IP,再在其中找其权威名称服务器的IP,最后在权威名称服务器中找主机名和IP地址、打包发给客户机。客户机从中提取google的IP。 4.客户机创建一个被用来发送 http报文的 tcp 套接字进程准连接服务器.客户机创建tcp syn报文到 http服务器后被封装发送给谷歌服务器.谷歌服务器接收到后将其分到80端口并形成一个tcp syn ack报文发给客户机之前创建的套接字中。客户机创建 http get信息并将其套接字联同get信息一起成为tcp报文中有效荷载的一部分.封装后发给谷歌。谷歌从中提取get信息后形成tcp回复报文封装到 http报文主体内然后发送套接字到客户机.客户机监视器从套接字读取 http回复报文.从http相应报文主体部分提取网页html 内容,最后显示网页。
2.应用层:
2.1 功能:
精确定义不同主机中的多个应用进程之间的通信规则。
1.应用进程交换的报文类型,如请求报文和响应报文。
2.各种报文类型的语法,如报文中的各个字段及其详细描述。
3.字段的语义,即包含在字段中的信息的含义。
4.进程何时、如何发送报文,以及对报文进行响应的规则.
2.2 万维网:
万维网 WWW (World WideWeb) 是一个大规模的、联机式的信息储藏所,并非某种特殊的计算机网络。
信息分布在整个互联网上。每台主机上的文档都独立进行管理。
2.2.1 解决的问题:
2.2.2 动态web:
CGI (Common Gateway Interface) 是一种标准
• 定义了动态文档应如何创建
• 输入数据应如何提供给应用程序
• 输出结果应如何使用
脚本语言+数据库技术
• “脚本”指的是一个程序,它被另一个程序(即解释程序,如Web浏览器)解释执行,而不是由计算机的处理器来解释或执行.
2.2.3 工作流程:
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:
GET /chn/yxsz/index.htm。
(6) 服务器给出响应,把文件 index.htm 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本
2.3 http1.0:
非持续连接.
2.4 http1.1:
HTTP/1.1 使用持续连接
持续连接(persistent connection):服务器在发送响应后仍然在一段时间内保持这条连接(不释放),使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。只要文档都在同一个服务器上,就可以继续使用该 TCP 连接。
2.4.1 非流水线:
2.4.2 流水线:
2.5 http2.0:
2.6 web缓存:
2.7 FTP:
2.8 电子邮件:
2.8.1 格式:
2.8.2 SMTP:
简单邮件传送协议 SMTP.
1.运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的SMTP服务器端口号25之间的TCP连接。
2.如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。这个连接建立之后,SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。
3.在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。
4.SMTP可以依靠由 TCP提供的可靠数据传输服务把该消息无错地传送到服务器。如果客户还有其他邮件消息需发送到同一个服务器,它就在同一个TCP连接上重复上述过程;否则,它就指示TCP关闭该连接。
主要分连接建立,发送邮件,连接释放三个阶段.
2.8.3 POP3 IMAP:
2.8.4 万维网电子邮件:
2.9 DNS:
DNS 使用 UDP 通信.
2.9.1 域名系统:
DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。
主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,保证了数据的一致性。
2.9.2 本地缓存:
2.9.3 查询过程:
在DOS(Disk Operating System)环境下,进行DNS手动查询以获取网站的IP地址涉及一系列步骤。DNS(Domain Name System)是一个分层次的系统,用于将域名(例如 www.example.com)转换为相应的IP地址。ip-zy7iy52deem59esomn39cbib674q./)
以下是在DOS环境下进行DNS手动查询的简要过程:
打开命令提示符: 在DOS环境中,使用命令提示符(Command Prompt)来执行命令。你可以通过在开始菜单中搜索或运行 "cmd" 打开命令提示符。
使用
nslookup
命令: 在命令提示符中,使用nslookup
命令进行DNS查询。例如:nslookup www.example.com
发起DNS查询:
nslookup
命令将发送一个DNS查询请求到本地DNS服务器(通常由Internet服务提供商提供),并等待响应。本地DNS解析: 如果本地DNS服务器缓存中没有找到相应的域名解析记录,它会向更高层次的DNS服务器发出查询请求。这可能涉及到根域名服务器、顶级域名服务器、权威域名服务器等。
迭代查询: DNS查询是一个迭代过程,本地DNS服务器将查询发送到根域名服务器,然后向下迭代查询直到找到目标域名的IP地址。
获取IP地址: 一旦DNS服务器找到了目标域名的IP地址,它将响应返回给本地计算机。
nslookup
命令将显示目标域名对应的IP地址。显示结果: 最终,
nslookup
命令在命令提示符中显示目标域名对应的IP地址,以及其他相关信息,如域名服务器的名称、地址等。
2.9.4 层次关系:
DNS层次关系: DNS系统是分层次的,具有以下主要层次:
根域名服务器(Root DNS Servers): 根域名服务器位于DNS层次的顶部,负责管理顶级域名服务器的地址。
顶级域名服务器(Top-Level Domain Servers): 负责管理特定顶级域名(如.com、.org、.net)下的权威域名服务器的地址。
权威域名服务器(Authoritative DNS Servers): 管理特定域的域名解析记录,能够提供与特定域名相关的IP地址等信息。
本地DNS服务器: 通常由Internet服务提供商(ISP)提供,用于服务本地用户的DNS查询请求。本地DNS服务器可能会缓存先前的查询结果,以提高查询性能。
当进行DNS查询时,系统会从本地DNS服务器开始,向上层次逐级查询,直到找到目标域名的IP地址或者到达根域名服务器。
2.10 P2P:
Napster 最早使用 P2P 技术,提供免费下载 MP3 音乐。
Napster 将所有音乐文件的索引信息都集中存放在 Napster 目录服务器中。
使用者只要查找目录服务器,就可知道应从何处下载所要的 MP3文件。
用户要及时向 Napster 的目录服务器报告自己存有的音乐文件。Napster 的文件传输是分散的,文件的定位则是集中的。
2.11 CDN:
怎样将内容(如从百万的视频中选定的内容)分发给同时发起访问的数百万用户?
内容分发网络CDN
• Content Delivery Network,or Content Distribution Network
基本思想源于MIT对Web服务瞬间拥塞问题的解决(1998)
• 一种Web缓存系统,靠近网络边缘(用户)提供内容服务
• 目前提供更丰富的服务,包括静态内容、流媒体、用户上传视频等
• 主要优点
• 降低响应时延,避免网络拥塞
• 避免原始服务器过载及防止DDoS攻击
• 分布式架构,具有良好的可扩展性
• 对用户透明,无需用户感知
订阅者(**subscriber)请求内容,服务提供者返回清单CDN
• 通过清单,客户端以可支持的最高速率检索到内容
• 如果网络路径拥塞,可能会选择不同的拷贝或网络速率
3.传输层:
3.1 概述:
传输层协议为运行在不同Host上的进程提供了一种逻辑通信机制.
3.2 多路复用:
3.2.1 分用:
3.2.1.1 无连接分用:
3.2.1.2 有连接分用:
3.3 UDP:
UDP: User Datagram Protocol
3.3.1 特性:
常用于流媒体应用.
3.3.2 结构:
checksum:检测UDP段在传输中是否发生错误(如位翻转).
3.4 可靠数据传输:
3.4.1 可靠:
不错、不丢、不乱.
计算机网络的设计基本方案是复杂化,多功能化应用层,运输层的协议设计,从而使得网络层,链路层,物理层变得相对简单,网络搭建的物质条件变得简单。由于网络层较为简单,采用了无连接的协议,在不可靠信道上传输,导致数据传输是不可靠的。为了保证数据传输的可靠性,我们选择在运输层采用复杂的rdt(可靠数据传输协议),以完成网络的可靠性。
3.4.2 Rdt1.0:
RDT(Reliable Data Transfer)是一种通用的概念,不仅仅与UDP(User Datagram Protocol)相关。RDT是一组协议和技术,用于确保数据在通信系统中的可靠传输。可靠传输是指确保数据从一个点到另一个点的可靠性,通常包括对错误的检测和纠正、流控制、序列号和确认等功能。
UDP本身是一种无连接的、不可靠的传输协议,不提供对数据可靠性的保障。然而,可以在UDP上实现RDT来增强数据的可靠性。这通常通过在应用层实现一些额外的协议或机制来完成。
有两个主要的RDT模型:停等协议(Stop-and-Wait Protocol)*和*连续ARQ(Automatic Repeat reQuest)协议。这两种模型都可以在UDP上实现。
停等协议(Stop-and-Wait Protocol): 发送方发送一个数据包,等待接收方的确认。接收方收到数据后,发送确认,然后发送方才能发送下一个数据包。这种方式可以在UDP上实现,确保数据的可靠传输。
连续ARQ(Automatic Repeat reQuest)协议: 连续ARQ允许发送方发送多个数据包而无需等待接收方的确认,接收方负责检测并请求重传丢失的数据包。这种方式也可以在UDP上实现,提供更高的效率。
虽然TCP是一个提供可靠数据传输的传输层协议,但RDT的概念可以应用于任何需要可靠传输的协议。在使用UDP进行数据传输时,实现RDT的机制可以确保在不可靠的UDP上实现一定程度的可靠性。
rdt1.0是基于理想情况下的协议,假设所有信道都是可靠的,没有比特位的翻转,没有数据包的丢失与超时,所以rdt1.0的传输功能就是 发送方发送数据,接收方接受数据。
3.4.3 Rdt 2.0 2.1:
rdt2.0在rdt1.0的基础上解决了比特位翻转的问题,这里的比特位防撞发生在运输层下面的不可信信道中数据包中的1可能会变0,0可能会变成1。rdt2.0增加了3种新机制:
1.错误检验
2.接收者反馈接受信息(ACK,NAK)
3.重传机制。在运输层对应用层的数据进行打包处理时,新增checksum(校验和),从而接收端可以对其数据包进行检验,如果正确,返回ACK,发送者继续发送下一个数据包;如果不正确,返回NAK,发送者重传数据。
但是rdt2.0有着一个致命的缺点,只考虑了发送方到接收方的数据传输,如果反馈信息ACK,NAK传输时发生比特位翻转会出现什么情况?如果ACK发生翻转,那么发送方会再次重复的发送相同的数据包;如果NAK发生翻转,那么发送方会认为数据传输情况很好,但是接收方却已经收到了一个错误的数据包。
3.4.4 Rdt2.1:
在rdt2.0的基础之上,发送方在打包数据包时添加了0或者1编号,同样ACK,NAK字段上也添加了0,1字段,表示0.1号字段的确认或者否定。发送方就有了2种状态发送0号数据包,1号数据包,接收方也有了2种状态等待0号数据包和等待1号数据包。现在假设情景发送方向接收方发送0号数据包,如果接收方接收到0号数据包,返回ACK,但是ACK出现翻转,接收方处于等待1号数据状态,发送方重复发送0号数据,接收方会拒绝0号数据,避免重复。如果接收方接收到0号数据包出现错误,返回NAK,但是NAK出现翻转,接收方处于等待0号数据状态,发送方继续发送1号数据,接收方会拒绝1号数据,避免错序。
3.4.5 Rdt3.0:
2.2在rdt2.0的基础之上,发送方在打包数据包时添加了0或者1编号,同样ACK,NAK字段上也添加了0,1字段,表示0.1号字段的确认或者否定。发送方就有了2种状态发送0号数据包,1号数据包,接收方也有了2种状态等待0号数据包和等待1号数据包。现在假设情景发送方向接收方发送0号数据包,如果接收方接收到0号数据包,返回ACK,但是ACK出现翻转,接收方处于等待1号数据状态,发送方重复发送0号数据,接收方会拒绝0号数据,避免重复。如果接收方接收到0号数据包出现错误,返回NAK,但是NAK出现翻转,接收方处于等待0号数据状态,发送方继续发送1号数据,接收方会拒绝1号数据,避免错序。
rdt2.2之前的版本都重在处理数据包的比特位翻转情况,却没有考虑到数据包在传输过程中出现的数据包丢失问题,这样数据包丢失会使得网络处于拥塞状态。
rdt3.0在rdt2.2的基础之上处理了数据包丢失的情况,增加了计时器的机制,如果在RTT时间段内,发送方没有接收到反馈信息,那么发送方默认数据包已经丢失了,会自动重传。
3.5 滑动窗口:
滑动窗口协议是TCP的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生.
滑动窗口协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。
主要由两种方式: ①停止-等待流量控制:其工作原理时发送方发出一帧,等待应答信号到达再发送下一帧;接收方每收到一帧后,返回一个应答信号,表示可以接收下一帧,如果接收方不返回应答,则发送方必须一直等待; ②滑动窗口流量控制:停止-等待流量控制中每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,传输效率很低;而滑动窗口流量控制允许一次发送多个帧,通过发送窗口Wt和接收窗口Wr来达到流量控制的目的。
3.5.1 GBN:
Go-Back-N协议.
由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。 后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍未收到确认帧,就要重发相应的数据帧. 如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。
3.5.2 SR:
Selective Repeat协议.
接收方对每个分组单独进行确认, 设置缓存机制,为了缓存乱序到达的分组,发送方就不会再次发送,限制已发送且未确认的分组.
滑动窗口的大小为4,发送数据包0,1,2,3,窗口满了,停止发送,等待确认,其中数据包2丢失,依次确认数据包0,1,同时窗口向后移,依次发送数据包4,5,当数据包2超时,发送方会再次发送数据包2,同时缓存乱序到达的3,4,5,当接收完数据包2后,滑动窗口后移,发送方继续发送数据包.
3.5.3 区别:
GBN(Go-Back-N)和SR(Selective Repeat)是两种基于滑动窗口协议的可靠数据传输协议,常用于在网络中进行数据传输。
Go-Back-N (GBN):
发送窗口尺寸: GBN协议使用的是固定大小的发送窗口,该窗口定义了可以同时发送但未被确认的数据包的数量。当窗口内的所有数据包都被确认时,窗口向前滑动,允许发送方发送更多的数据。
工作过程:
发送方按顺序发送数据包,并启动一个计时器。
接收方按序接收数据包,但只发送累积确认。如果有序接收到某个数据包之前的数据包有任何丢失,接收方将丢弃这些数据包。
发送方在计时器超时时重新发送窗口内的所有未确认的数据包。
Selective Repeat (SR):
发送窗口尺寸: SR协议同样使用滑动窗口,但是相较于GBN,SR允许发送方一次性发送多个未被确认的数据包,而不仅仅是窗口内的所有数据包。
工作过程:
发送方按顺序发送数据包,接收方独立确认每个接收到的数据包,并维护一个接收窗口。
接收方可以在任何顺序下接收数据包,但只发送对缺失的数据包的请求。
发送方仅重新发送那些由接收方请求的缺失数据包。
异同点:
窗口尺寸:
GBN使用固定大小的发送窗口,窗口内的所有数据包都必须被确认之后才能滑动。
SR允许发送方一次性发送多个未被确认的数据包,只要接收窗口内的数据包被确认,发送方就可以发送新的数据包。
重传机制:
在GBN中,超时后,发送方重传窗口内的所有未确认的数据包。
在SR中,只有接收方请求的缺失数据包会被重新发送。
对于接收到的数据包的处理:
在GBN中,接收方只确认按序接收到的数据包,并丢弃乱序的数据包。
在SR中,接收方可以按任何顺序接收数据包,只要接收方需要某个数据包,发送方就会重传该数据包。
选择GBN还是SR取决于具体的网络环境和性能要求。GBN适用于信道较差的情况,而SR适用于更为可靠的网络环境。
3.6 TCP:
3.6.1 特性:
3.6.2 结构:
3.6.3 可靠数据传输:
TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。
3.6.3.1 重传:
重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据,也就是我们常说的超时重传。
TCP 会在以下两种情况发生超时重传:
数据包丢失
确认应答丢失
3.6.3.2 RTT与RTO:
RTT(Round-Trip Time 往返时延)
RTT 指的是数据发送时刻到接收到确认的时刻的差值,也就是包的往返时间。
超时重传时间以 RTO (Retransmission Timeout 超时重传时间)表示。
当超时时间 RTO 较大时,重发就慢,丢了老半天才重发,没有效率,性能差;
当超时时间 RTO 较小时,会导致可能并没有丢就重发,于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。
超时重传时间 RTO 的值应该略大于报文往返 RTT 的值.
3.6.4 流量控制:
滑动窗口机制可以很方便地在TCP连接上实现发送方流量控制。通过接收方的确认报文中的窗口字段,发送方能够准确地控制发送字节数。
3.6.5 连接管理:
每一条TCP连接都有两个端点。TCP连接的端点叫做套接字(socket)。根据RFC 793的定义:端口号拼接到(concatenated with)IP地址即构成了套接字。因此,套接字的表示方法为:
套接字 socket = (IP地址:端口号)
例如,若IP地址是 192.168.1.112,而端口号是 80,那么得到的套接字就是(192.168.1.112: 80)。
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
TCP连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
IP1 和 IP2 分别是两个端点主机的IP地址,而port1 和 port2 分别是两个端点主机中的端口号。TCP连接的两个套接字就是socket1 和 socket2。
3.6.5.1 三次握手:
3.6.6 阻塞控制:
TCP(Transmission Control Protocol)使用拥塞控制机制来调整数据的传输速率,以防止过多的数据注入到网络中,导致网络拥塞。TCP的拥塞控制是通过四个算法来实现的:慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)、和快速恢复(Fast Recovery)。
以下是TCP拥塞控制的基本机制和过程:
慢启动(Slow Start):
在连接刚开始的时候,TCP发送方会将拥塞窗口(Congestion Window,cwnd)初始化为一个较小的值。
每当收到一个对先前发送的数据的确认,拥塞窗口就会加倍。这导致了指数级增长,使得发送方可以快速适应网络的带宽。
拥塞避免(Congestion Avoidance):
一旦拥塞窗口达到一个阈值(慢启动阈值,ssthresh),TCP进入拥塞避免阶段。
在拥塞避免阶段,拥塞窗口的增长由线性方式变为慢增长,即每个往返时间内只增加一个数据包的大小。
快速重传(Fast Retransmit):
如果发送方连续收到三个重复的对同一个数据包的确认(ACK),它会认为有一个数据包已经丢失。
发送方不会等待超时,而是立即重传丢失的数据包,以便更快地恢复丢失的数据。
快速恢复(Fast Recovery):
一旦发生快速重传,发送方将慢启动阈值减半(ssthresh = cwnd / 2),并将拥塞窗口设置为新的慢启动阈值。
TCP进入快速恢复状态,在这个状态中,拥塞窗口按线性方式增长而不是慢启动方式。
总体而言,TCP的拥塞控制通过动态调整拥塞窗口大小,根据网络的状况来控制数据的传输速率。这有助于防止过度注入网络,减缓网络拥塞的发生,从而提高网络的性能和可靠性。
3.6.7 发送方与接收方:
在TCP通信中,有发送方和接收方两个主要角色。以下是它们的特点以及接收方处理错误或乱序数据包的方式:
TCP发送方的特点:
可靠性: TCP是一种可靠的协议,发送方确保数据的可靠传输,通过序列号、确认和重传机制来保证数据的正确性。
流量控制: TCP使用流量控制机制,以确保发送方不会向接收方发送过多的数据,从而避免接收方无法处理的情况。
拥塞控制: TCP具有拥塞控制机制,通过动态调整发送窗口的大小来适应网络的拥塞程度,以维持网络的稳定性。
采用应答机制,发送方发送的每个报文段都必须得到接收方的回答,才认为传输成功,为每个已经发送的数据段启动超时定时器,超时只重发引起超时的分组,若收到连续三个ACK则在计时器结束之前快速重传,有多个发送方窗口.
TCP接收方的特点:
接收和确认: 接收方负责接收从发送方发来的数据包,并发送确认(ACK)给发送方,通知它接收到了数据。
缓存和排序: 接收方会缓存接收到的数据包,并按序号对它们进行排序,以确保数据按正确的顺序交付给应用层。
丢弃重复数据: 如果接收方收到重复的数据包(根据序列号判断),它会丢弃这些重复的数据,以防止重复传递给应用层。
流量控制: TCP接收方可以通过TCP窗口通告机制告知发送方自己的接收窗口大小,以实现流量控制。
处理错误或乱序数据包: 如果接收方检测到数据包的错误(通过校验和等机制)或者乱序(通过序列号判断),它会采取以下措施:
错误数据包: 接收方会丢弃包含错误的数据包,并向发送方发送一个重传请求,要求发送方重新发送有问题的数据包。
乱序数据包: 如果接收方收到乱序的数据包,它会将这些数据包缓存起来,等待缺失的数据包到来后按正确的顺序交付给应用层。
总体而言,TCP的可靠性主要通过发送方的重传机制和接收方的排序和确认机制来实现。接收方在处理错误或乱序的数据包时,通过合理的处理机制来确保最终数据的正确性。
3.7 TCP与UDP的区别:
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种在计算机网络中常用的传输层协议,它们有一些重要的异同点。
相同点:
运输层协议: TCP和UDP都是在OSI模型中的传输层实现的协议,负责端到端的数据传输。
可靠性: TCP和UDP都能够在计算机之间传输数据,但它们在可靠性上有很大的区别。
异同点:
连接性:
TCP是面向连接的协议。在通信之前,必须建立TCP连接,数据传输完成后需要释放连接。这种连接性提供了可靠的、有序的、面向字节流的通信。
UDP是无连接的协议,通信双方之间没有建立连接的过程。每个数据包都是独立的,没有先后顺序的要求。
可靠性:
TCP提供可靠的数据传输。它使用序列号、确认和重传机制来确保数据的完整性和顺序性。如果数据包丢失或损坏,TCP会重新发送。
UDP不提供可靠性,它只是尽最大努力地将数据从一端传输到另一端,不保证数据的完整性和顺序性。UDP适用于那些对实时性要求较高,可以容忍一些数据丢失的应用。
流量控制和拥塞控制:
TCP具有流量控制和拥塞控制的机制,用于调整数据传输的速率,以避免网络拥塞。
UDP不具备流量控制和拥塞控制的机制,因为它没有建立连接的过程,也不维护连接状态。
头部开销:
TCP头部相对较大,包含序列号、确认号、窗口大小等信息,使得TCP的头部开销比UDP更大。
UDP头部较小,只包含源端口、目标端口、长度和校验和等基本信息。
应用场景:
TCP适用于需要可靠传输和有序传输的应用,如文件传输、电子邮件、Web浏览等。
UDP适用于对实时性要求较高,能够容忍一些数据丢失的应用,如音视频流、在线游戏等。
选择使用TCP还是UDP取决于应用的需求,对可靠性和延迟的要求以及对资源的消耗的考虑。
4.网络层:
4.1 概述:
4.1.1 两个层面:
网络层的 2 个层面:数据层面和控制层面
4.1.2 SDN:
Software Defined Network.
4.1.3 数据报网络和虚电路网络:
4.1.3.1 数据报网络: 无连接:
网络层向上只提供简单灵活无连接的、尽最大努力交付的数据报服务.
发送分组时不需要先建立连接,每个分组独立发送.
数据报独立转发,相同源-目的的数据报可能经过不同的路径.
网络层不提供服务质量的承诺.
4.1.3.2 虚电路网络: 有连接:
• 虚电路是逻辑连接
• 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
• 注意,电路交换的电话通信是先建立了一条真正的连接
• 因此分组交换的虚连接和电路交换的连接只是类似,但并不完全相同
4.1.3.3 区别:
数据报网络(Datagram Network)** 和 虚电路网络(Virtual Circuit Network) 是两种不同的通信网络模型,它们在连接建立、数据传输和路由等方面有一些重要的异同点。
异同点:
连接建立:
数据报网络: 在数据报网络中,每个数据包都是独立的,没有事先建立的连接。每个数据包都包含足够的信息,以便独立地路由到目标。
虚电路网络: 虚电路网络在通信开始前需要建立连接。在建立连接时,网络中的路由器会建立一个虚拟电路,沿着这个虚拟电路传输的所有数据包都会遵循相同的路径。
路由方式:
数据报网络: 数据报网络使用分组交换,每个数据包可能沿着不同的路径独立传输。每个数据包都包含足够的信息(目标地址等),以便独立路由。
虚电路网络: 虚电路网络使用固定的路径,所有属于同一个虚电路的数据包都会沿着相同的路径传输,由预先建立的虚拟电路确定。
资源开销:
数据报网络: 数据报网络通常具有较低的资源开销,因为它不需要在每个连接上维护状态信息。
虚电路网络: 虚电路网络在连接建立和维护虚拟电路的过程中需要一定的资源开销。
灵活性:
数据报网络: 数据报网络具有较高的灵活性,适用于各种类型的通信,尤其适用于不需要事先建立连接的应用。
虚电路网络: 虚电路网络提供了更多的控制和可靠性,适用于一些需要确保有序传输和固定路径的应用。
适用场景:
数据报网络: 适用于短消息、广播通信、Internet等场景,其中连接的建立和断开较为频繁,且网络状况动态变化。
虚电路网络: 适用于要求有序传输、可靠性较高、希望提前建立连接的应用,例如电话通信、视频流等。
这些异同点反映了数据报网络和虚电路网络在设计和应用方面的不同取向。选择哪种网络模型通常取决于特定应用的需求和性能要求。
4.2 路由器:
路由器工作在网络层,用于互连网络。是互联网中的关键设备。
路由器的主要工作:转发分组。
把从某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
4.2.1 结构:
4.3 IP:
在 TCP/IP 体系中,IP 地址是一个最基本的概念。
没有IP地址,就无法和网上的其他设备进行通信。
4.3.1 IP地址:
IP地址在整个互联网范围内是唯一的。IP 地址指明了连接到某个网络上的一个主机.
IP 地址 ::= { <网络号>, <主机号>}
2 个字段:网络号和主机号.
4.3.2 分类:
特殊的地址:
4.3.3 子网划分:
• 当没有划分子网时,IP 地址是两级结构。
• 划分子网后 IP 地址就变成了三级结构.
• 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
4.3.3.1 子网掩码:
子网掩码是一个网络或一个子网的重要属性.
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
4.3.3.2 分组转发:
4.3.4 CIDR:
CIDR (Classless Inter-Domain Routing) :无分类域间路由选择。
消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决 IP 地址枯竭的问题。
CIDR 记法:斜线记法 (slash notation)a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。例如:128.14.35.7/20:前 20 位是网络前缀。
lCIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块。
4.3.5 总结:
IP 地址是一种分等级的地址结构。方便了 IP 地址的分配和管理。
实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。
当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)。
一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP 地址。
同一个局域网上的主机或路由器的IP 地址中的网络号必须一样。
4.4 ARP:
当一个设备在一个网段中向另一个网段发送数据时,它首先需要确定目标设备的MAC地址。这个过程涉及到ARP(Address Resolution Protocol)。
以下是从一个网段向另一个网段发送数据的基本过程:
发现目标IP地址: 发送设备知道目标设备的IP地址,但它不知道目标设备的MAC地址。在IP网络中,设备通常使用IP地址来标识彼此。
ARP请求: 发送设备会在本地子网内发送一个ARP请求广播。ARP请求包含发送设备的IP地址和一个特殊的MAC地址(广播地址),以通知网络中的所有设备说:“我知道这个IP地址,但我不知道对应的MAC地址,请告诉我。”
本地子网内的设备响应: 目标设备收到ARP请求后,会检查请求中的IP地址是否与自己的IP地址匹配。如果匹配,它会向发送设备发送一个ARP响应,包含自己的MAC地址。
ARP响应: 发送设备接收到ARP响应后,它就知道了目标设备的MAC地址。
构建数据帧: 现在,发送设备可以构建一个以太网帧(Ethernet frame),该帧包含目标设备的MAC地址、源设备的MAC地址、以太网类型和实际的IP数据包。
发送数据帧: 发送设备通过网络传输该以太网帧,以便到达目标子网的网络设备(通常是一个路由器)。
路由: 当数据帧到达目标子网的路由器时,路由器会检查目标IP地址并决定将数据帧发送到哪个子网。它可能还需要进行类似的ARP过程以找到目标子网上的设备的MAC地址。
在目标子网中交付: 最终,数据帧到达目标设备,并被目标设备的网络接口接收。目标设备将提取IP数据包并将其传递到网络协议栈的更高层进行处理。
这个过程中的关键是ARP,它允许设备通过IP地址解析出相应的MAC地址,从而构建正确的以太网帧并将数据传递到目标设备。ARP请求和响应在局域网内部广播,因此只有在同一个子网内的设备才能看到这些广播。
4.4.1 IP地址与MAC地址:
尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。
只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址,研究主机和主机或路由器之间的通信。
4.4.2 功能:
实现 IP 通信时使用了两个地址:
IP 地址(网络层地址)
MAC 地址(数据链路层地址)
已经知道了一个机器(主机或路由器)的 IP 地址,如何找出其相应的 MAC 地址?
4.4.3 广播:
4.4.4 缓存:
4.4.5 四种情况:
4.4.5.1 本网络主机:
4.4.5.2 跨网络主机:
4.4.5.3 本网络路由器->主机:
4.4.5.4 跨网络路由器->主机:
4.5 IP报文:
4.5.1 格式:
4.5.1.1 MTU:
MTU(Maximum Transmission Unit), 最大传输单元.
4.6 路由转发:
4.7 DHCP:
DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
DHCP前身是BOOTP,在Linux的网卡配置中也能看到显示的是BOOTP,DHCP引进一个bootp没有的概念:租约。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。
DHCP分为两个部分:一个是服务器端,另一个是客户端。
DHCP可以自动分配IP、子网掩码、网关、DNS。 DHCP客户端使用的端口68,服务端使用端口67,使用的UDP应用层的协议。 DHCP一般不为服务器分配IP,因为他们要使用固定IP,所以DHCP一般只为办公环境的主机分配IP。 DHCP服务器和客户端需要在一个局域网内,在为客户端分配IP的时候需要进行多次广播。但DHCP也可以为其他网段内主机分配IP,只要连接两个网段中间的路由器能转发DHCP配置请求即可,但这要求路由器配置中继功能。
4.7.1 工作流程:
第一步:搜索阶段 当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。(DHCP DISCOVER)
第二步:提供阶段 在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。因为此时客户端还没有IP,所以返回信息也是以广播的方式返回的。(DHCP OFFER)
第三步:选择阶段 DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。(DHCP REQUEST)
第四步:确认阶段 当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,确认租约,并指定租约时长。告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。(DHCP ACK)
5.2、重新登录
以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
5.2、续租
DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限到达租约的50%时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
4.8 NAT:
网络地址转换 NAT (Network Address Translation)
在专用网连接到互联网的路由器上安装 NAT 软件。
装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球 IP 地址。
所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
4.8.1 内网访问外网:DHCP与NAT协同工作:
一般情况下,DHCP(动态主机配置协议)用于在局域网内动态分配私有IP地址,而不是公网IP地址。私有IP地址是在私有网络内部使用,不直接可达互联网。这样做有几个原因:
IP地址资源管理: 公网IP地址是有限的资源,由互联网服务提供商(ISP)分配。通过在内部网络使用私有IP地址,可以更有效地利用这些有限的公网IP地址。
安全性: 内部网络通常使用私有IP地址,这样可以提高安全性,因为这些地址不直接可达互联网。NAT(网络地址转换)用于映射私有IP地址和公网IP地址,允许内部网络访问互联网。
网络隔离: 使用私有IP地址有助于在内部网络中实现隔离。内部设备使用私有地址,而只有路由器或防火墙使用公网IP地址。
当内部设备通过路由器或防火墙连接到互联网时,NAT会将私有IP地址转换为公网IP地址。这种方式可以为组织提供更好的网络管理和安全性。
通常情况下,网络配置会包括两个关键步骤:
DHCP分配内网IP地址: 内部设备通过DHCP获取内网IP地址、子网掩码、网关和DNS等信息。这些内网IP地址通常是私有IP地址,例如在IPv4中是类似于
192.168.x.x
、10.x.x.x
或172.16.x.x
的地址。NAT映射到公网IP地址: 内部设备的流量通过NAT映射到组织拥有的公网IP地址,以便这些设备可以与互联网进行通信。这是通过路由器或防火墙上的NAT配置来实现的。NAT会在将内部设备的出站流量发送到互联网时,将内部IP地址替换为公网IP地址。
这种配置方式使得组织能够在内部网络中有效地使用私有IP地址,并在需要的时候共享一个或一组公网IP地址以进行互联网通信。这同时提供了一层安全性,因为内部设备的真实IP地址不直接暴露在互联网上。
4.9 ICMP:
ICMP (Internet Control Message Protocol) 允许主机或路由器报告差错情况和提供有关异常情况的报告。
CAMP 是互联网的标准协议。
但 ICMP 不是高层协议,而是 IP 层的协议.
4.9.1 结构:
4.9.2 类型:
4.10 IPv6:
更大的地址空间。 将地址从 IPv4 的 32 位 增大到了 128 位。
扩展的地址层次结构。可以划分为更多的层次。
灵活的首部格式。定义了许多可选的扩展首部。
改进的选项。允许数据报包含有选项的控制信息,其选项放在有效载荷中.
5. 路由选择:
5.1 理想的路由算法:
不存在一种绝对的最佳路由算法。
所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
5.2 Flooding:洪泛:
5.2.1 选择洪泛:
洪泛法的一种改进。将进来的每个包仅发送到与正确方向接近的线路上。
5.3 Distance Vector Algorithm:
维护这样一个表,互相传送后计算.
一般会给出两张表,一张是所求的节点的邻接点到目的地的距离.
第二张表是所求的点,经过临接点,到目的地的距离.最后选择最小的距离.
是一种用于计算网络中各个路由器之间最短路径的分布式路由算法。它是一种迭代算法,每个路由器维护一个距离向量表,其中包含到达其他路由器的距离信息。距离通常以跳数(hops)表示,表示到达目标的路径上经过的路由器数量。
基本思想和原理:
分布式计算: 距离向量算法是一种分布式计算的算法,每个路由器只知道与其相邻的路由器的距离信息,而通过交换信息,每个路由器最终能够得知整个网络的拓扑和距离信息。
路由表的更新: 距离向量算法中,路由器会周期性地向邻居发送距离向量的副本,邻居收到后根据接收到的信息更新自己的距离向量表。这个过程是迭代的,直到网络收敛,即每个路由器的距离向量表不再发生变化。
Bellman-Ford算法: 距离向量算法基于Bellman-Ford算法,该算法用于寻找单源最短路径。每个路由器通过比较通过邻居到达目标的距离,选择最短的路径更新自己的距离向量。
计数到无穷问题: 距离向量算法可能存在计数到无穷大的问题。如果某个路由器的某个邻居宕机,而这个宕机的信息未及时传播,就会导致计数到无穷大的情况,算法会无法收敛。为了解决这个问题,常常引入毒化逆转(poison reverse)等机制,将宕机的邻居距离设置为无穷大,以更快地传播信息。
优缺点:
优点:
相对简单,易于理解和实现。
适用于小型网络和中小型企业网络。
在网络拓扑发生变化时,可以快速收敛。
缺点:
收敛速度可能较慢,尤其在大型网络中。
可能存在计数到无穷大的问题,需要引入一些机制来解决。
由于周期性地向邻居发送更新,可能引起一定的网络开销。
实际应用: 距离向量算法常用于小型网络、家庭网络、以及一些需要简单路由策略的场景。在大型网络、企业级网络和互联网等复杂场景中,更常使用链路状态算法或其他高级路由算法。
5.4 Link State Routing:
对于每个路由节点,构造这么一张表.n为已经算过的节点,剩下的为网络中,出了这个节点外其他的节点.
第一次先找最近的,填表.d为距离,p为前置节点,开始就只有自己.不可达的节点置为无穷.
然后找最近的里面代价最小的节点,开始接着遍历他的节点,代价更小就更新,以此类推.
直到所有的点都在n内为止.
5.4.1 发现邻居,了解网络地址.
5.4.2 设置每个邻居的成本:
5.4.3 构造分组:
5.4.4 发送LSP:
5.4.5 计算一个节点到其他节点的最短路径:Dijkstra:
5.4.6 区别:
距离向量算法(Distance Vector)和链路状态算法(Link State)是两种常见的路由算法,用于计算网络中各个路由器之间的最短路径。它们有一些重要的区别:
1. 信息传播方式:**
距离向量算法(DV): 路由器周期性地向邻居发送距离向量(即路由表)的副本,以通知它们关于整个网络的信息。这种方法称为分布式计算。
链路状态算法(LS): 每个路由器通过向所有其他路由器发送链路状态信息(即链路状态数据库的副本)来通知整个网络的状态。这是一种分布式数据库的方式。
2. 更新触发机制:**
距离向量算法(DV): 路由器只在路由表发生变化时才向邻居发送更新。这可以是定时触发或在检测到路由变化时触发。
链路状态算法(LS): 任何路由器在链路状态数据库发生变化时都会发送更新。这通常是由于链路发生故障或者周期性地发送,以确保网络状态的一致性。
3. 路由表的内容:**
距离向量算法(DV): 路由表中包含到目标网络的距离信息,通常以跳数(hops)表示。
链路状态算法(LS): 路由表中包含整个网络的拓扑信息,以及到达目标网络的最短路径。
4. 算法的复杂性:**
距离向量算法(DV): 较为简单,但可能存在计数到无穷大的问题(计数到无穷问题)。
链路状态算法(LS): 更复杂,但在正常情况下能够避免计数到无穷大的问题。
5. 收敛速度:**
距离向量算法(DV): 有时可能需要较长的时间来收敛,尤其是在存在计数到无穷大问题时。
链路状态算法(LS): 通常能够更快地收敛,因为每个路由器都有完整的拓扑信息。
6. 路由器存储的信息量:**
距离向量算法(DV): 路由器只需要存储到达目标网络的距离信息。
链路状态算法(LS): 每个路由器需要存储整个网络的链路状态信息,可能占用更多的内存。
选择使用距离向量算法还是链路状态算法取决于具体的网络需求、规模和性能要求。在实际应用中,常常根据网络的特点选择合适的路由算法。
5.5 域间/域内路由选择:
自治系统之间的路由选择也叫做域间路由选择 (interdomain routing)。
自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。
5.5.1 RIP:
路由信息协议 RIP (Routing Information Protocol) 是一种分布式的、基于距离向量的路由选择协议.
互联网的标准协议。
最大优点:简单.
要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录。
5.5.1.1 距离:
5.5.1.2 建立路由表:
5.5.2 OSPF:
开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP的缺点在 1989 年开发出来的。
原理很简单,但实现很复杂。
使用了 Dijkstra 提出的最短路径算法 SPF。
采用分布式的链路状态协议 (link state protocol)。
现在使用 OSPFv2。
5.5.2.1 特点:
5.5.2.2 链路状态数据库 (link-state database):
5.5.2.3 工作流程:
**
5.5.3 BGP:
BGP 是不同自治系统的路由器之间交换路由信息的协议.
用于自治系统 AS 之间的路由选择。
只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。
互联网的规模太大,使得自治系统AS之间路由选择非常困难。
自治系统AS之间的路由选择必须考虑有关策略。
采用了路径向量 (path vector) 路由选择协议。
分为eBGP(内/间均可)和iBGP(只能内).
5.5.4 AS:
1.规模:规模庞大时路由表无法存储和路由计算过程困难,交换量巨大,转发很难.
2.自制管理:管理者希望对自己范围内路由器进行管理,包括政策等方面诸多因素,减少路由也可以便于管理.
自制系统内部协议:
1.RIP:采用DV(距离向量)算法,健壮性不好;
2.OSPF:采用洪泛链路状态信息的链路状态协议和dijkstra最低费用路径算法;
自治系统间路由选择协议:BGP协议:获得每个自治系统可达信息,分发路径信息承载了路径属性,并提供受控制的选路信息分布;
在因特网中,包含层次选路和自治系统(AS)的划分是为了提高网络的可扩展性、灵活性和管理性。Autonomous System(自治系统)是一组网络和路由器的集合,这些网络和路由器在路由选择方面有一定的自治权。以下是为什么要包含层次选路AS的划分以及各自的协议特点:
1. 可扩展性:
层次结构: 将网络划分为不同的层次(或自治系统)可以帮助提高网络的可扩展性。每个层次内部的细节可以被隐藏,而只需要处理与其他层次之间的连接关系。
自治系统: AS的划分使得网络可以分割为若干自治域,每个自治域内有自己的自治权和路由策略,提高了网络的管理和可扩展性。
2. 灵活性:
层次结构: 层次结构使得网络的组织更加灵活。不同层次可以有不同的管理和技术实现,而每个层次内部的变化对其他层次的影响较小。
自治系统: AS的存在使得不同的组织、公司或实体能够在网络中拥有自己的自治权,可以根据自身需求进行路由策略的定义和管理,而不受其他自治系统的直接影响。
3. 管理性:
层次结构: 层次结构使得网络的管理更加简化,因为每个层次内部的细节可以在一个较小的范围内进行管理。这也使得网络的故障排查更加容易。
自治系统: AS的划分使得每个自治系统内部可以独立地管理和控制自己的路由策略,降低了网络管理的复杂性。
协议特点:
层次结构: 在层次结构中,常用的协议包括BGP(Border Gateway Protocol)等,用于不同层次之间的路由信息交换。
自治系统: 在自治系统内部,常用的协议包括IGP(Interior Gateway Protocol)如OSPF(Open Shortest Path First)和EIGRP(Enhanced Interior Gateway Routing Protocol),用于自治系统内部的路由。
总体而言,包含层次选路和自治系统的划分有助于构建更加灵活、可扩展和管理的网络结构。这种分层和自治的设计哲学是因特网成功的重要原因之一。
5.6 保证路由表正确:
1.最大度量值:路由器设置一个最大度量值,当达到该值时,路由器就会认为这条路由已经失效,将他清除出路由表;
2.水平分割:从一个方向上学来的路由信息,不能再放入发回那个方向的路由更新包并且又发回那个方向;
3.路由中毒:网络出现故障时,通知邻居该网段不可用
4.毒性反转:当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16(表示不可到达),即不可达的度量值将它广播出去,它可以立即清除相邻路由器之间的任何环路,
5.保持时间:该网段的路由变成“down”状态时,还要在路由器中保留一段时间;
6.触发更新:当路由器发现某个网段出现故障时,立即发送路由更新包来通知邻居,而不用等到下一次发送路由更新包的时间
6.数据链路层:
6.1 概述:
6.2 帧:
封装成帧 (framing):在一段数据的前后分别添加首部和尾部,构成一个帧.
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限).
6.2.1 成帧:
如何标识一个帧的开始?
接收方必须能从物理层接收的比特流中明确区分出一帧的开始和结束,这个问题被称为帧同步或帧定界.
字符计数法:
在帧头中用一个域来表示整个帧的字符个数,缺点:若计数出错,对本帧和后面的帧有影响.
控制字符:
6.2.1.1 透明传输:
用“字节填充”或“字符填充”法解决透明传输的问题.
6.3 差错检测:
在传输过程中可能会产生比特差错:1 -> 0, 0 -> 1。
6.3.1 CRC冗余码:
1.根据多项式写出二进制数:共有最高次加一位.
2.确定CRC位数.项数-1.
3.重新寻找原数据:去掉CRC,全换成0.
4.运算:异或.找余数.
5.对比结果和CRC码是否相同.
6.4 CSMA:
在局域网(Local Area Network,LAN)中,多路访问协议用于管理多个设备共享同一信道的访问。以下是一些常见的多路访问协议以及它们的特点:
CSMA/CD(Carrier Sense Multiple Access with Collision Detection):
特点:
设备在发送数据之前会先检测信道是否空闲(Carrier Sense)。
如果信道忙碌,设备将等待,并在信道空闲时发送数据。
如果两个设备同时发送数据导致碰撞,它们会检测到碰撞,停止发送,并等待一段随机时间后重新尝试发送。
主要用于以太网。
CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance):
特点:
与CSMA/CD不同,CSMA/CA不进行碰撞检测,而是采取一些机制来避免碰撞。
设备在发送数据前发送一个短的请求以获取信道使用权,如果没有冲突,它可以发送数据。
用于802.11(Wi-Fi)等无线网络。
6.4.1 1-持续式:
6.4.2 非持续式:
6.4.3 p-持续式:
6.4.4 工作流程:
6.5 MAC地址:
硬件地址又称为物理地址,或 MAC 地址。
IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址。