今天的因特网就是分组交换的典范!
分组交换中的时延
处理时延、排队时延、传输时延、传播时延、传输时延
这其中要特别注意传输时延与传播时延的区别!!!
传输时延:
R= 链路带宽 (bps)
L= 分组长度 (比特)
发送比特进入链路的时间= L/R
传播时延:
d = 物理链路的长度
s = 在媒体中传播的速度 (~2x108 m/sec)
传播时延 = d/s
分组交换对比电路交换
电路交换
分组交换
应用层: 支持网络应用
FTP、HTTP、DNS、SMTP、DHCP、 RIP 等
运输层: 主机到主机数据传输
TCP, UDP
网络层: 从源到目的地数据报的选路
ARP、IP、ICMP、OSPF、BGP等
数据链路层: 在邻近网元之间传输数据
ALOHA、CSMA或CSMA/CD、TDMA、FDMA、CDMA
物理层: “在线上”的比特
任何一种调制解调体制
应用层报文: 应用层协议分布在多个端系统上。一个端系统中的应用程序使用协议交换信息分组。我们将这种位于应用层的信息分组称为报文。
运输层报文段:运输层的分组
网络层数据报:因特网中的网络层分组
数据链路层帧:链路层分组
物理层比特: 物理层分组
UDP特点:是无连接的运输层协议
优点:
应用:
TCP特点:
当TCP刚开始建立连接时,SYN=1,ACK=SEQ+1;中间传输数据时确认号只跟传输数据有关。
问题:TCP协议采用了哪些机制保证数据的可靠传输?
TCP中拥塞控制的方法:
加性增:没有检测到拥塞的情况下,收到一个确认后就把拥塞窗口值增大一点(线性)
乘性减:每发生一次丢包事件就将当前的拥塞窗口值减半
这里要特别注意拥塞控制、流量控制的区别
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器不至于过载。拥塞控制的前提是:网络能够承受现有的网络负荷。
流量控制:点对点通信量的控制。控制发送端的发送数据的速率。
这里要特别注意选择重传、回退N步的区别
选择重传:只重传出现差错的数据帧。但这时必须加大接收窗口,以便先收下发送序列号不连续但仍在接收窗口中的数据帧。等到所缺序号的数据帧收到后再一并交给主机。
回退N步:当接收方检测出失序的数据帧后,要求发送方重发最后一个正确接收的信息之后所有未确认的帧;或者当发送方发了N个帧以后,发现N帧的前一帧在计时器超时后仍未返回其确认信息,则该帧被判超时或者出错,此时发送方不得不重新发送出错帧以及其后的帧。
转发:当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。
选路:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
选路是指分组从源到目的地时,决定端到端路径的网络范围的进程。
转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。
IP的报文格式如下图所示:
因特网的地址分配策略被称为无类别域间选路(CIRD)。在采用CIRD之前,IP地址被分为A,B,C,D,E五类,分别为:
不过在这之间,有几个私有地址,是不能够被使用的,包括:
每个节点x以Dx(y)开始,对N中的所有节点估计从它自己到节点y的最低费用路径的费用;当节点x从它的任何一个邻居v接收到一个新距离向量时,它保存v的距离向量,然后使用Bellman-Ford方程更新它自己的距离向量
只要所有的节点继续以异步方式交换它们的距离向量,每个费用估计Dx(y)就收敛到dx(y),dx(y)是从节点x到节点y的实际最低费用路径的费用。
两者之间的比较:
其他选路算法还包括层次选路。
1、信道划分协议
信道划分协议主要分为时分多路复用 (TDM)、频分多路复用 (FDM)、码分多址(CDMA )。
设信道支持N个节点,传输速率是R b/s。
特点:
1、避免冲突、公平:每个节点专用速率R/N b/s
2、节点速率有限:R/N b/s
3、效率不高:节点必须等待它的传输时隙
特点:
1、避免冲突、公平:N个节点公平划分带宽;
2、节点带宽有限、效率不高
3、节点带宽为R/N
码分多址(CDMA )
最初:用于军事通信,抗干扰能力强;
目前:用于移动通信、无线多路访问信道等。
2、随机接入协议
基本思想:
- 发送节点以信道全部速率(R b/s)发送;
- 发生冲突时,冲突的每个节点分别等待一个随机时间,再重发,直到帧(分组)发送成功。
典型的随机接入协议:
1.ALOHA协议(要求所有的节点同步它们的传输)
2.载波监听多路访问CSMA协议
3.带冲突检测载波监听多路访问CSMA/CD
载波监听:一个节点在传输前先听信道。如果来自另一个节点的帧正在向信道上发送,节点则等待一段随机时间。再监听信道。如果监听到该信道是空闲的,则该节点进行帧传输。否则,该节点等待另一段随机时间,继续重复这个过程。
碰撞检测:一个传输节点在传输时一直在监听信道,如果它检测到另一个节点正在传输干扰帧,它就停止传输,用某个协议来确定它应该在什么时候再尝试下一次传输。
CSMA
特点:
1、发前监听,可减少冲突。
2、由于传播时延的存在,仍有可能出现冲突,并造成信道浪费。
例子:一个广播总线连接4个节点(A、B、C、D)传输的时空图。
时间t0:节点B侦听到信道空,开始传输帧,沿着媒体传播比特。
时间t1(t1>t0):节点D有帧要发送。B的传输信号未到D,D检测到信道空,开始传输。很快,B的传输开始在D节点干扰D的传输(冲突)。
端到端信道传播时延:信号从一个节点到另一个节点所花费的传播时间。
传播时延越长,节点不能侦听到另一个节点已经开始传输的可能性越大。
很显然,这就带来了一些问题:
节点没有进行冲突检测,既使发生了冲突,节点仍继续传输它们的帧。但该帧已经被破坏、是无用的帧,信道传输时间被浪费。
CSMA/CD(以太网即采用CSMA/CD协议)
两个节点B、D在检测到冲突之后很短的时间内都放弃传输。
3、轮流协议
指定一个主节点,以循环的方式轮询每个节点。并告诉节点能够传输的最大帧数。轮询顺序: 1->2-> …… ->n 。
主节点通过观察信道上是否有信号来判断节点何时完成了帧的发送,再询问下一节点。
特点
1、消除冲突和空时隙,效率高。
2、有轮询时延:活动节点不能立即传输帧,等待被轮询。
3、如果主节点失效,整个信道都不能用。
没有主节点。设置一个令牌(token,小的专用帧);令牌以固定顺序循环传递,给节点传输机会。如:1->2-> …… ->n
节点收到令牌:
1.有帧要发送,传输,传完后将令牌转发到下一节点;
2. 否则,直接将令牌转发到下一节点。
特点:
1、令牌传递是分散的,效率高。
2、一个节点的失效会使整个信道崩溃。
3、一个节点忘记释放令牌,必须恢复令牌到环中。
ARP协议的主要功能是将32位IP地址转换为48位物理地址。
工作过程:首先每台主机都会在缓冲区建立一个ARP列表,以表示IP与MAC的对应关系。当有数据包发送时,会先检查ARP列表中是否存在该IP对应的MAC地址,如果有,则直接将包发送到这个MAC地址,如果没有,就向本地网段发起一个ARP请求的广播包,网络中所有主机收到这个ARP包后,会先检查自己的IP是否与包中的IP地址一致,如果不一致则忽略,如果一致,则将发送端的MAC地址和IP地址添加到自己的ARP列表中(已存在的则覆盖),然后向发送端发送一个响应包,当发送方收到该响应包后,将接收方的IP与MAC添加到自己的ARP列表中。然后开始数据的传输。
交换机 | 路由器 |
---|---|
即插即用 | 不是即插即用 |
较高的分组过滤和转发率 | 网络寻址是层次的 |
可能产生“广播风暴” | 冗余路径分组不会在路由器中循环 |
总结:小网络采用交换机,大网络采用路由器
RIP协议是基于距离向量算法的一种动态路由协议,路由实现时,RIP作为一个系统长驻进程(daemon)而存在于路由器中,负责从网络系统的其它路由器接收路由信息,从而对本地IP层路由表作动态的维护,保证IP层发送报文时选择正确的路由。同时负责广播本路由器的路由信息,通知相邻路由器作相应的修改。RIP协议处于UDP协议的上层,RIP所接收的路由信息都封装在UDP协议的数据报中,所以它是种应用层协议。
主要目的是:提供寻址及媒体存取的控制方式,使得不同设备或网络上的节点可以在多点的网络上通讯而不互相冲突
工作过程:CSMA/CD(载波侦听多路访问/冲突检测)在发送帧的同时对信道进行侦听,以确定是否发生冲突,若在发送数据过程中检测到了冲突,则发送阻塞信息并立即停止发送数据,然后等待随机时间再次发送。
MAC地址是数据链路层地址,IP地址是网络层地址;
MAC地址没有结构性涵义,IP地址有结构性涵义,表示计算机与网络之间的连接关系。
IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内是唯一的32位的标识符,从而把整个因特网看成是一个单一的,抽象的网络;在实际网络的链路上传输数据帧时,最终还是要用到物理地址;
MAC地址在一定程度属于硬件一致,基于物理层。能标识具体的链路通信对象,IP地址给予逻辑域的划分,不受硬件控制;
转发器:是物理层中间设备。主要作用是在物理层中实现透明的二进制比特复制,以补偿信号衰减。
网桥:是数据链路层的中间设备。主要作用是根据MAC帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。
路由器:网络层的中间设备。作用是在互连网中完成路由选择的功能。
网关:网络层以上的中间系统。作用是在高层进行协议的转换以连接两个不兼容的系统。
IP协议:实现网络互连。使参与互连的性能各异的网络从用户看起来好像是一个统一的网络。
ARP协议:完成IP地址到MAC地址的映射。
RARP:使只知道自己硬件地址的主机能够知道其IP地址。
ICMP:允许主机或路由器报告差错情况和提供有关异常情况的报告。从而提高IP数据报交付成功的机会。
①:C/S结构是一种客户端/服务器结构,客户端与服务器之间是主从关系,是一种一对多的模式。它的信息和数据需要保存在服务器上,若用户要浏览和下载信息,必须先访问服务器,才能浏览和下载信息,而且客户机之间没有交互的能力。相反,P2P模式不分提供信息服务器和索取信息的客户端,每一台电脑都是信息的发布者和索取者,对等点之间能交互,无需使用服务器。
②:C/S模式中信息的存储和管理比较集中、稳定,服务器只公布用户想公布的信息,并且会在服务器中稳定地保存一段时间,该服务器通常也不间断的运行在网络间。而P2P缺乏安全机制,P2P是能给用户带来方便,但也会带来大量垃圾信息,而且各个对等点可以随便进入或者退出网络,会造成网络的不稳定。
③:从安全的角度来说,因为系统会出现漏洞,而C/S模式采用集中管理模式,客户端只能被动地从服务器获取信息,所以一旦客户端出了差错,并不会影响整个系统。
④:C/S模式的管理软件更新的较快,要跟上技术,必须花费大量精力和金钱在软件的更新换代上,而且工作人员要维护服务器和数据库,也要耗费大量资金。相反的P2P不需要服务器,也就不必耗费大量资金,而且每个对等点都可以在网络上发布和分享信息,这使得闲散资源得以充分的利用。
不行。交换机和路由器的功能是很不一样的。
交换机可在一个单个的网络中和若干个计算机相连,并且可以将一个计算机发送过来的帧转发给另一个计算机。从这一点上看,交换机具有集线器的转发帧的功能。
但交换机比集线器的功能强很多。集线器在同一时间只允许一个计算机和其他计算机进行通信,但交换机允许多个计算机同时进行通信。
路由器连接两个或好几个网络。路由器可在网络之间转发分组(即IP数据报)。特别是,这些互连的网络可以是异构的。
因此,如果是许多相同类型的网络互连在一起,那么用一个很大的交换机(如果能够找得到)代替原来的一些路由器是可以的。但若这些互连的网络是异构的网络,那么就必须使用路由器来进行互连。
这样做的最大好处就是使得路由选择成为动态的,十分灵活。当IP数据报传送到半途时,若网络的情况发生了变化(如网络拓扑变化或出现了拥塞),那么中途的路由器就可以改变其下一跳路由,从而实现了动态路由选择。
IP数据报可能要经过许多个网络,而源主机事先并不知道数据报后面要经过的这些网络所能通过的分组的最大长度是多少。等到IP数据报转发到某个网络时可能才发现数据报太长了,因此在这时就必须进行分片。
重点内容但广域网能够通过的分组的最大长度是该广域网中所有主机都事先知道的。源主机不可能发送网络不支持的过长分组。因此广域网就没有必要将已经发送出的分组再进行分片。
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
三次握手协议第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?
“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。
1、双协议栈技术
2、隧道技术
3、网络地址转换技术
LAN:是局部地区网络的简称,是一种通用普及的局域网络,其主要特点是:
(1)地理范围小;
(2)具有较高的通频带宽;
(3)数据传输可靠,误码率低;
(4)结构简单,容易实现;
(5)网络的控制趋向于分布式;
(6)通常归单一组织所有,更容易进行设备的更新和新技术的引用。
TCP优缺点:
优点:
1.TCP提供以认可的方式显式地创建和终止连接。
2.TCP保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。
3.TCP处理流控制。
4.允许数据优先
5.如果数据没有传送到,则TCP套接口返回一个出错状态条件。
6.TCP通过保持连续并将数据块分成更小的分片来处理大数据块。—无需程序员知道
缺点: TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢。
UDP优缺点:
1.UDP不要求保持一个连接
2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销。
3.设计UDP的目的是用于短应用和控制消息
4.在一个数据包连接一个数据包的基础上,UDP要求的网络带宽比TCP更小。
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
TCP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
301重定向与302重定向的区别:
301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。
302重定向是临时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。
目前web上的消息通讯方式主要有以下几种:
1、轮询:隔一段时间访问服务器,服务器不管有没有新消息都立刻返回。
2、长连接:页面向服务器发出请求,由服务器决定什么时候返回。(如果有新消息则立刻返回,没有的话就保持连接,直到有新消息才返回)
3、WebSocket:类似Java Socket,由Http请求模拟实现的Socket。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
从输入网址到显示网页,过程 ?
DNS域名解析 –> 发起TCP的三次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如JavaScript、css、图片等) –> 浏览器对页面进行渲染呈现给用户。
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成
1.请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
2.请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。
3.最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
4.请求数据不在GET方法中使用,而是在POST方法中使用。
HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。