1、电路交换与分组交换的区别?优劣对比。
(一)电路交换:由于电路交换在通信之前要在通信双方之间建立一条被被双方独占的物理通路(有通信双方之间的交换设备和链路逐段连接而成),因而有以下优缺点。
优点:
1.由于通信线路为通信双方用户专用,数据直达,所以传输数据的时延非常小。
2.通信双方之间的物理通路一旦建立,双方可以随时通信,实时性强。
3.双方通信时按发送顺序传送数据,不存在失序问题。
4.电路交换既适用于传输模拟信号,也适用于传输数字信号。
5.电路交换的交换设备及控制均较简单。
缺点:
1, 电路交换的平均连接建立时间对计算机通信来说嫌长。
2, 电路交换建立连接后,物理通路被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用率低。
3, 电路交换时,数据直达,不同类型,不同规格,不同速率的终端很难相互进行通信,也难以在通信过程中进行差错控制。
(二)分组交换:分组交换采用存储转发方式,将一个长报文分割为若干个较短的分组,然后把这些分组(携带源地址,目的地址和编号信息)逐个的发送出去。因此分组交换有以下优缺点。
优点:
1. 分组交换不需要为通信双方预先建立一条专用的通信线路,不存在连接建立时延,用户可随时发送分组。
2. 由于采用存储转发方式,加之交换结点具有路径选择,当某条传输线路故障时可选择其他传输线路,提高了传输的可靠性。
3.通信双方不是固定的占有一条通信线路,而是在不同的时间一段一段地部分占有这条物理通路,因而大大提高了通信线路的利用率。
4.加速了数据在网络中的传输。因为分组是逐个传输,可以使后一个分组的存储操作与前一个分组的转发操作并行,这种流水线式传输方式减少了传输时间。
5. 分组长度固定,相应的缓冲区的大小也固定,所以简化了交换结点中存储器的管理。
6. 分组较短,出错几率减少,每次重发的数据量也减少,不仅提高了可靠性,也减少了时延。
缺点:
1. 由于数据进入交换结点后要历经存储转发这一过程,从而引起转发时延(包括接受分组,检验正确性,排队,发送时间等),而且网络的通信量越大造成的时延就越大,实时性较差。
2. 分组交换只适用于数字信号。
3.分组交换可能出现失序,丢失或重复分组,分组到达目的结点是,哟啊对分组按编号进行排序等工作,增加了麻烦。
总之,若传输的数据量很大,而且传送时间远大于呼叫时间,则采用电路交换较为合适;当端到端的通路有很多段的链路组成时,采用分组交换较为合适。从提高整个网络的信道利用率上看,分组交换优于电路交换。
来源于:http://blog.csdn.net/liuqiyao_01/article/details/39001067
2、OSI有哪几层,会画出来,知道主要几层的各自作用。
可以看一个网址:http://blog.csdn.net/yaopeng_2005/article/details/7064869
同样可以看人家的银行家算法:http://blog.csdn.net/yaopeng_2005/article/details/6935235
应用层 (Application):网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS
表示层(Presentation Layer):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
会话层(Session Layer):建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
传输层 (Transport):定义传输数据的协议端口号,以及流量控制和差错校验,实现可靠传输。 协议有:TCP UDP。
网络层 (Network):进行逻辑地址寻址,实现不同网络之间的路径选择。即在源机器和目标机器之间建立它们所使用的路由。这一层本身没有任何错误检测和修正机制。协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP。网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。
数据链路层 (Link):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制等实现在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。
物理层(Physical Layer):主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
3、TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称。
TCP/IP通常被认为是一个四层协议系统,TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已,如表1所示。每一层负责不同的功能:
TCP/IP层描述 主要协议 主要功能
应用层, Http、Telnet、FTP和e-mail等, 负责把数据传输到传输层或接收从传输层返回的数据
传输层, TCP和UDP, 主要为两台主机上的应用程序提供端到端的通信,TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时计时器等。UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。
网络层, ICMP、IP 和 IGMP, 有时也称作互联网层,主要为数据包选择路由,其中IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输
链路层, ARP 、RARP和设备驱动程序及接口卡, 发送时将IP包作为帧发送;接收时把接收到的位组装成帧;也就是封装成帧、透明传输、差错检测。
4、硬件(MAC)地址的概念及作用。
网卡生产的时候写在rom里面的,是全球唯一的,但是可以通过厂家提供的修改程序来修改,或者当插入电脑时,可以通过注册表来修改。总共6个字节,前三个是向管理组织申请的,后三个字节是公司自己定义的。MAC地址专注于数据链路层,将一个数据帧从一个节点传送到相同链路的另一个节点。
在数据通信时,IP地址负责表示计算机的网络层地址,网络层设备(如路由器)根据IP地址来进行操作,将数据包从一个网络转发到另外一个网络;MAC地址负责表示计算机的数据链路层地址,数据链路层设备(如交换机)根据MAC地址来进行操作,将一个数据帧从一个节点传送到相同链路的另一个节点。IP和MAC地址这种映射关系由ARP(Address Resolution Protocol,地址解析协议)协议完成。
ps:一些cmd命令:
ipconfig 可以查看本机ip地址,子网掩码等相关信息。
ipconfig -all 可以查看本机的mac地址
ping 可以看到目标主机的链路是否接通
5、ARP协议的用途及算法、在哪一层上会使用ARP?
用途:给出一个机器的IP地址,可以找出其MAC地址。
在网络层上会使用ARP。
算法:当主机A要向本局域网上的某个主机B发送Ip数据报时,先在其ARP高速缓存中查看有无主机B的IP地址,若有,则找到其对应的物理地址,将物理地址写入Mac帧,再通过局域网将Mac帧发往此硬件地址。
若在缓存中查不到B的IP地址,则在本局域网中广播一个ARP请求分组,内容为:自己的IP和物理地址,以及说想知道IP地址所对应的物理地址,这样局域网中的所有主机都收到这个分组,但是只有B响应A的请求,向A发送单播的一个分组,告诉A它的物理地址,同时将A的IP和物理地址映射写入自己ARP缓存中。
同时,A在收到B的ARP响应分组之后,就在其ARP高速缓存中写入B的IP地址到硬件地址的映射。
PS:ARP把保存在高速缓存中的每一个映射都设置生存时间,超过生存时间的项目就从中删除掉,这样解决了一个问题:即当B的网卡换掉之后,A中缓存没有更新,根据物理地址就找不到B,但是当生存时间一过,映射删除,A会重新广播找到B,并将新的映射加入到其ARP高速缓存中。
6、CRC冗余校验算法?
数据以帧为单位进行传送,在帧后面加上冗余码,一帧一帧传送,接收方逐帧进行差错检验。冗余码的计算方法如下:
将传送的数据M除以定义的除数P得到余数Q,将Q加在数据M的后面,作为写的一帧传输,接收方把收到的一帧数据除以除数P,若为0则接受,若不为0则丢弃。
7、如何实现透明传输?
采用字符填充法,当数据中某个字节的二进制代码和帧定界符一样时,就在其前面插入转义字符‘ESC’,数据中也有转义字符时,则在前面再插入一个转义字符。接收时删除掉前面的转义字符即可,这样数据部分无论是什么样的字符都能通过帧传输出去。实现透明传输。
8、知道各个层使用的是哪个数据交换设备。(交换机、路由器、网关)
网卡,网线,集线器,中继器,调制解调器----物理层网桥,交换机----数据链路
路由器-----网络层
网关-----第四层及其以上
9、路由表的内容。
主要有:目的网络地址、子网掩码、距离、下一跳路由器。
若一个路由同时连接在两个子网上就需要有两个网络地址和两个子网掩码。
10、分组转发算法。
转发分组就是从一个路由器转发到下一个路由器。
转发算法:
(1)当路由器收到一个待转发的数据报时,从数据报的首部提取目的主机的IP地址D,将D分别和各网络的子网掩码进行与操作,结果为N,找到匹配的网络地址。
(2)若N是和路由器直接相连的网络,则直接交付(包括将D转化为MAC地址,封装成帧,再传输)。
(3)否则看表中是否有到D的特定路由,有则传给所指的下一跳路由。
(4)否则看是否有到网络N的路由,有则传给所指的下一跳路由。
(5)否则看是否有默认路由,若有则传给默认路由。
(6)否则报告出错。
11、IP报文的格式,格式的各个字段的含义要理解。
12、MTU的概念,路径MTU? MTU发现机制,TraceRoute(了解)
MTU即最大传送单元,是数据链路层,帧格式中的数据字段的最大长度,也就是说IP数据报的总长度不能超过MTU值。
路径MTU:如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。两台通信主机路径中的最小MTU。它被称作路径MTU。
MTU发现机制:主要是利用ICMP不可达差错报文实现。首先在IP首部设置不可分片(DF)的标志位,并假定一条路径的MTU,当IP数据报过大时,由于不能分片,会产生差错报告,这时减小这条路径的MTU,当不需要分片也能转发时则发现结束。
其它方法如Traceroute确定路径MTU,和采用UDP的路径MTU。
13、RIP协议的概念及算法
路由信息协议RIP即让一个自治系统中的所有路由器都和自己的相邻路由器定期交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的。
算法:
对于每一个相邻路由器X发过来的RIP报文进行如下处理:
(1)修改报文中的所有项目,将下一跳地址改为X,将距离加1。
(2)对于每一个项目,若原来的路由表中没有目的网络,则直接将该项目添加到路由表中。
若有,则比较其下一跳地址,若为X,则替换掉原来路由表,否则,比较距离,若收到项目的距离小于路由表的距离,则进行更新,否则什么都不做。
(3)若3分钟内没有收到相邻路由器的更新路由表,则将其标记为不可到达路由器,距离设置为16。
14、ICMP协议的主要功能
主要目的是为了更有效的转发IP数据报和提高交付成功的机会,有两种报文,一种是差错报告报文,如终点不可达(不通)、源点抑制(拥塞)、时间超过、参数问题、改变路由(重定向)。另一种是询问报文,如回送请求和回答(测试是否可达,及了解有关状态)、时间戳请求和回答。
有两个重要的应用是Ping(测试两个主机的连通性)。
PS:
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“PingofDeath"(死亡之Ping)攻击。“PingofDeath"攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴",使得目标主机耗费大量的CPU资源处理,疲于奔命。
tracert:
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP数据包访问目标所采取的路径。Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
格式为:tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name。
当然可以直接使用 tracert 主机。
15、IGMP的概念和用途?
在因特网上进行多播叫做IP多播,这是需要用到多播路由器,且目的地址为多播地址,即D类地址(前4为为1110),需要用到网际组管理协议IGMP和多播路由选择协议。
IGMP原理如下:
(1)当某个主机加入新的多播组是,该主机向多播组的多播地址发送一个IGMP报文,声明要加入。多播路由器收到报文后,还要利用多播路由选择协议将这种组员关系转发给其他的多播路由器。
(2)组成员关系式动态的。本地多播路由器会不断试探本组是否有成员,若没有了,则不再将组的成员关系转发给其它多播路由器了。
16、Ping协议的实现原理,Ping命令格式。
向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者。
17、子网划分的概念,子网掩码。
IP地址本来是由网络号和主机号组成的,现在从主机号借用若干位作为子网号。进行子网的划分。这样IP地址就变成了三级IP地址。
进行子网划分后,其网络地址也改变了,因此用到子网掩码,将IP地址和子网掩码进行与的操作之后,就可以求出网络地址了。对于没有划分子网的网络,则使用默认的子网掩码,如A类为255.0.0.0,B类为255.255.0.0 C类为255.255.255.0
PS:子网以及主机数的计算
若子网号有n位,主机数有m位,则子网数=2的n次方-2 主机数=2的m次方-2;
如B类地址子网掩码255.255.192.0其子网号有2位,则其子网数为2,每个子网的主机数为16382.
子网数与每个子网的主机数之积一定小于65535。
子网的划分使单位网络更具有灵活性,可以自己划分子网。
18、IP地址的分类,如何划分,以及会计算各类地址支持的主机数。
IP地址的划分见图:
不使用的特殊IP
(1)A类中0.0.0.0表示本网络。127.0.0.0网络号表示回环测试。不是一个网络地址,不会发给任何网络。
(2)B类中128.0.0.0不指派。
(3)C类中192.0.0.0不指派。
最大主机数计算方法为:若主机位数为n,则主机数=2的n次方-2;减掉2为去掉全0和全1的。
19、DNS的概念?用途,DNS查询的实现算法?
域名系统DNS是因特网使用的命名系统。其作用是将域名转换为IP地址。
查询算法:
(1)主机向本地域名服务器的查询一般采用递归查询,本地域名服务器先在自己的缓存中寻找,但当本地域名服务器不知道被查询的IP地址时,则替主机进行下一步的查询。
(2)本地域名服务器向根域名服务器的查询则通常采用迭代查询,根域名服务器收到查询报文后,要么告诉其要查询的IP地址,要么告诉本地域名服务器,接下来要向哪一个顶级域名服务器进行查询。同样顶级域名服务器若不知道IP,则告诉它应指向哪一个权限域名服务器,本地域名服务器就这样迭代查询,最后查到IP,把结果返回给发起查询的主机。
PS:
总的来讲,先再主机缓存中找,找不到,则到本地域名服务器的缓存中找,再找不到,则查询根域名服务器->顶级域名服务器->权限域名服务器。
使用的是UDP用户数据报。
20、动态主机配置协议DHCP?
当一台主机加入新网络时,可以利用DHCP获取其配置信息而不需要手工干预。步骤如下:
(1)主机在启动时,将IP数据报的源IP地址设为全0,将目的地址设为全1,向DHCP服务器广播发送 发现报文(DHCPDISCOVER)
(2)DHCP中继代理收到报文后,就以单播形式向DHCP服务器转发报文。
(3)DHCP服务器收到报文后,先在其数据库中查找该计算机的配置信息,若找到,则返回该信息。若找不到,则在服务器的IP池中取出一个地址分配给该计算机。
PS:DHCP报文也是UDP数据报。且分配给客户的IP地址时临时的,但是租用期可以根据请求来设置。客户请求UDP端口是68,而服务器使用的UDP端口是67。
21、电子邮件
一个电子邮件系统应具有三个主要组件:用户代理(客户端软件)、邮件服务器(发送发和接收方都有)、邮件发送协议(STMP)以及邮件接收协议(POP3)。
如图:
(1)发件人利用用户软件编写邮件,通过SMTP协议发送到发送方服务器。
(2)发送方服务器收到后,将其放在邮件缓存队列中,再发到接收方邮件服务器上。
(3)接收方服务器收到邮件后,将其放在用户邮箱中。
(4)用户通过POP3协议读取邮件。
PS:通过TCP连接进行可靠传输
22、代理服务器
代理服务器又称为万维网高速缓存,把最近的一些请求和响应暂存在本地磁盘中,用来避免线路过载和时延。
工作过程如下:
(1)校内浏览器请求服务时,先和校园网的代理服务器建立TCP连接,并发出HTTP请求报文。
(2)代理服务器若已经储存了该请求,则将直接将对应的响应发给浏览器。
(3)若没有,则代替浏览器想源点服务器发送请求,得到响应之后,复制一份在本地储存中,再将其发给浏览器。
23、www万维网协议
解决了三个问题:
(1)如何标识分布在整个因特网上的万维网文档(URL解决)
(2)用什么协议来实现(HTTP)
(3)如何统一显示文档(HTML)
URL(统一资源定位符)
<协议>://<主机>:<端口>/<路径> 如http://www.baidu.com ftp://192.168.0.1
其中,端口为80,可以省去。
HTTP(超文本传输协议),其使用了TCP连接,保证了数据的可靠传输。
其操作过程如下:
(1)建立TCP连接
(2)HTTP请求报文
(3)HTTP响应报文
(4)释放TCP连接
HTTP响应报文状态码:
1xx 表示通知信息,请求收到了,或正在处理
2xx 表示成功,如接受或知道了。
3xx 表示重定向,如请求完成还要采取进一步的行动
4xx 表示客户的错误,如请求有错误的语法或不能完成。
5xx 表示服务器的错误,如服务器失效无法完成请求。
例:
202 accepted 接收
301 moved permanently 永久性的转移了,需要重定向
400 bad request 错误的请求
404 not found 找不到
cookie信息:
在服务器上存放用户的信息。
(1)当用户访问一个使用cookie的网站时,服务器会产生一个cookie,并将其写在HTTP响应响应中。并以cookie为索引在数据库中建立一个项目。
(2)用户收到响应后,会将这个cookie相关信息写入浏览器缓存。
(3)下次再访问时,会在HTTP请求中添加cookie信息,这样服务器就能根据这个cookie跟踪用户的活动了,保存和显示用户信息,方便用户上网了。
24、输入一个网址会经历哪些过程?
(1)查找域名对应的ip地址,进行DNS查找。
(2)建立TCP链接
(3)浏览器给服务器发送一个HTTP请求。
(4)服务器响应请求,发回网页内容(HTML)(可能有重定向的话要发回重定向网址)。
(5)浏览器解析并显示网页内容,(在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了)
(6)若网页中有图片等信息的话,浏览器继续发送请求,获取嵌入在HTML中的对象(如图片,js文件等),并显示。
(7)释放TCP链接。
备注:在HTTP1.0的情况下,每一个链接都要建立和释放,但是HTTP1.1用到keep-alive可以持续连接,即发回响应后仍然在一段时间内保持这条连接,可以继续请求和响应。
异步(AJAX)请求,如更新一些信息
详情见网址:http://blog.csdn.net/saiwaifeike/article/details/8789624
其中一些小问题:
若一个ip对应多个网址,可能会进行重定向,服务器返回301重定向消息,并告诉你应该访问的正确网址。
浏览器想服务器提交请求格式如下:
GET HTTP://facebook.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
Accept-Encoding: gzip, deflate
Connection: Keep-Alive//意思是接下来请保持tcp链接
Host: facebook.com
Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]
这样服务器返回:
HTTP/1.1 301 Moved Permanently
Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Location: HTTP://www.facebook.com/
告诉你一个正确地址,浏览器再进行重定向提交内容。
25、tcp连接的建立,三次握手?
(1)刚开始时,处于连接两端的客户进程A与服务器进程B都处于关闭状态。然后客户程序主动打开连接,服务器进程被动打开连接。且服务器进程创建传输控制块TCB,准备接受请求,进入收听状态。
(2)客户进程建立TCB,且在报文段中将同步位置1,选择一个初始序号x,发送连接请求,这时,客户进程进入(SYN-SENT)同步已发送状态,这是TCP连接的第一次握手。
(3)服务器进程收到请求后,若同意,在报文段中将同步位和确认位都置1,确认号为x+1,再选择一个初始序号seq=y,将报文发送给客户进程。这时,服务器进程进入(SYN-RCVD)同步收到状态。这是第二次握手。
(4)客户进程收到服务器进程的确认后,再向服务器进程发送确认,将报文段中的确认置1,确认号为y+1,自己的序号为x+1。这时TCP连接已建立,客户进程进入(ESTABLISHED)已建立连接状态。服务器进程收到客户进程的确认后也进入(ESTABLISHED)已建立连接状态。这是第三次握手。
为什么A还要发送一次确认?
主要是防止已失效的连接请求报文段突然又传送到了服务器,产生错误,造成服务器资源的浪费。
26、tcp连接的释放,4次挥手?
(1)客户进程主动向服务器进程发出连接释放请求报文段,并停止发送数据,主动关闭TCP连接。报文段中终止位FIN,序号seq=u(为前面已传送过数据的最后一个字节的序号加1),这时,客户进程进入(FIN-WAIT-1)终止等待1状态,等待服务器的确认。这时TCP释放连接的第一次挥手。
(2)服务器进程收到连接释放请求后即发出确认。将确认位置1,确认号为u+1,同时发送自己的序号v。然后服务器进程进入(CLOSE-WAIT)关闭等待状态。此时TCP处于半关闭状态,即客户进程已不再向服务器发送数据,但服务器仍可以像客户进程发送数据。这是TCP释放连接的第二次挥手。
(3)客户进程收到服务器的确认信息后,就进入(FIN-WAIT-2)终止等待2状态。等待服务器发出连接释放报文段。若服务器进程没有数据要传输,则发出释放连接报文段,报文中终止位置1,确认号为u+1,序号为w,此时服务器进入(LAST-ACK)最后确认状态,等待客户进程的确认。这是TCP连接释放的第三次挥手。
(4)客户进程收到服务器的连接释放请求后,必须发出确认。确认报文段中将确认为ACK=1,确认应答号ack=w+1,然后进入到(TIME-WAIT)状态。在这段时间内TCP连接并没有释放,必须等待2MSL时间后,客户进程才进入(CLOSED)关闭状态。服务器进程在收到确认应答之后也进入(CLOSED)关闭状态。当服务器进程和客户进程都进入CLOSED状态后,连接就完全释放了。这是TCP连接释放的第四次挥手。
为什么客户进程在TIME-WAIT状态必须等待2MSL时间呢?
时间MSL叫做最长报文段寿命。
(1)、客户进程发送给服务器的最后一个确认报文可能会丢失,服务器在收不到确认之后会超时重传,如果客户进程不等待而是直接关闭,那么收不到服务器的超时重传,服务器无法进入CLOSED状态。而设置了2MSL等待时间之后,客户进程会向服务进程重传确认报文,使两者都顺利进入CLOSED状态。
(2)、避免下一个新的连接中不会出现旧的连接请求报文。等待2MSL可以使本连接持续时间内所产生的所有报文从网络中消失。
另外除了等待计时器外,还有保活计时器,这是防止服务器进程在发送完连接释放报文段后,客户端主机出现故障,这样服务器永远收不到客户端的确认,设置保活计时器每个一段时间向客户端发送探测报文段,若一连发送10个都没有回应,那么服务器就知道客户端出了故障,就关闭这个连接。
27、TCP与UDP的概念及相互区别?
(1)TCP是面向连接的,UDP是无连接的。
(2)TCP提供可靠交付(即TCP连接传送数据无差错、不丢失、不重复),UDP尽最大努力交付,不保证可靠交付。
(3)TCP面向字节流,UDP面向报文段。
(4)每条TCP连接只能点到点,UDP支持一到一,一到多,多到一,多到多。
(5)TCP有拥塞控制,首部开销较大,而UDP没有拥塞控制,首部开销小。
共同点:都是运输层协议。
用途:TCP实现可靠性传输,UDP主要用于高速传输和实时性、有效性高的通信或广播。
28、流量控制?
流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。是用滑动窗口机制来实现的。
数据传送的过程中,发送方的发送窗口的大小不能超过接收方给出的接收窗口(rwnd)的大小,这样发送方可以合理的控制发送速度,让接收方来得及接收。实现流量控制。
一种特殊情况?
若B向A发送零窗口后,其接收缓存区又有了空间,然而非零窗口报文段发给A时丢失。这样A就不断等B的非零窗口通知,B则等A发来的数据,陷入死锁。
这样就引入了持续计时器,当A接收到B的零窗口报文后,启动持续计时器,时间一到,发送零窗口探测报文,若此时B刚好有空间,则发送非零窗口过来,打破僵局。
否则,A重设持续计时器。
传递效率?
单个发送字节单个确认,和窗口有一个空余即通知发送方发送一个字节,无疑增加了网络中的许多不必要的报文,所以尽可能一次多发送几个字节,或者窗口空余较多的时候通知发送方一次发送多个字节。这里就用到nagle算法,如下:
(1) 若发送应用进程要把发送的数据逐个字节地送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面的字节先缓存起来;
(2)当发送方收到第一个字节的确认后(也得到了网络情况和对方的接收窗口大小),再把缓冲区的剩余字节组成合适大小的报文发送出去;
(3)当到达的数据已达到发送窗口大小的一半或以达到报文段的最大长度时,就立即发送一个报文段;
对于后者我们往往的做法是让接收方等待一段时间,或者接收方获得足够的空间容纳一个报文段或者等到接受缓存有一半空闲的时候,再通知发送方发送数据。
29、拥塞控制?
拥塞控制的目的是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
在这里假定接收方总是有足够大的缓存空间。
如上图所示:
横坐标是输入负载,代表单位时间内输入给网络的分组数目。
纵坐标是吞吐量,代表单位时间内从网络输出的分组数目。
cwnd为拥塞窗口(发送窗口等于拥塞窗口),ssthresh为慢开始门限。
(1)当cwnd<ssthresh时,cwnd以指数增长,这段过程称为慢开始。去试探网络的拥塞情况。
(2)当cwnd>ssthresh时,则使用拥塞避免。即cwnd=cwnd+1;
(3)窗口满之后,若出现网络拥塞(网络超时),则cwnd=1,ssthresh=1/2*24=12;回到慢开始阶段
若没有拥塞(快重传,因为可以重复收到确认)则快恢复,cwnd=ssthresh=1/2*24,然后加法增大。
特别的,无论在慢开始阶段还是在拥塞避免阶段,只要检测到拥塞,就要阶段(3)。
30、发送窗口的选取?
发送方窗口的上限值=Min(rwnd,cwnd)
也就是说较小的窗口限制发送方发送数据的速率。
31、快重传与快恢复?
慢开始和拥塞避免是1988年的拥塞控制算法。1990年又提出了两个新的拥塞控制算法,快重传和快恢复。
快重传:
发送方若连续收到三个重复确认就立即重传对方未接收到的报文段如M3,而不必等为M3设置的重传计时器到期。
快恢复:
快恢复是与快重传配合使用的。当发送方连续收到3个重复确认后,先执行“乘法减小”将慢开始门限减半,但由于发送方认为现在没有发生拥塞,因此不执行满开始算法,而是将拥塞窗口设为减半后的满开始门限值(不设为1),再执行拥塞避免算法。使拥塞窗口缓慢的线性增大。
32、滑动窗口协议与停止等待协议的区别?
该协议允许发送方在等待确认前发送多个数据分组,不必每发一个分组就停下来等待确认,而接收方一般也是采用累积确认的方式(对按序到达的最后一个分组进行确认),当发送方收到确认之后,窗口就能向前移动了。该协议可以加速数据的传输。
停止等待协议是每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。
ps:滑动窗口是以字节为单位的,只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。
收发两端的窗口按照这种规律不断地向前滑动,因此这种协议又称为滑动窗口协议。
当发送窗口和接收窗口的大小都等于 1时,就是停止等待协议。
33、TCP通过哪些措施来提供可靠传输?
超时重传和确认应答以及对每个传输的字节分配序列号是TCP 协议提供可靠性数据传输的核心本质。
利用这三点,解决了下面一些问题,保证了可靠传输。
(1)能够处理数据传输过程中被破坏问题。若检测到数据被破坏,根据序列号重新请求发送数据即可。
(2)能够处理重复数据接收问题。 若检测到序列号相同,则判断是重复数据,直接丢弃。
(3)能够发现数据丢失以及对此进行有效解决。设置的超时计时器到期,还未收到确认则认为数据丢失,重发数据。另外发送方收到三个重复确认请求之后,也会立即重传数据。
(4)能够处理接收端数据乱序到达问题。如果数据乱序到达,只需要根据序列号进行排序就可以。
另外,这里附上序列号的一些知识。
TCP 首部中序列号字段表示包含该TCP 首部的数据包中所包含数据的第一个字节的序列号(令为N)。如果接收端成功接收该数据包,之前又无丢失数据包,则接收端发送的应答数据包中的应答序列号应该为:N+LEN。其中LEN 为接收的数据包的数据长度。该应答序列号也是发送端将要发送的下一个数据包中第一个字节的序列号(由此亦可看出上文中将应答序列号称为请求序列号的原因所在)。
参考百度文库http://wenku.baidu.com/link?url=X3M7wLEwsDxvGehAy8ceNCyLNbhPmgZMm1RDkYSja15MYJRLZUclmcYbgo-xY2CDIujuPMFQ9XSZ2AUhypITD7hJN0bUNtlc_qi-_caLLlS
34、UDP报文的格式,字段的意义?
图:
35、TCP报文的格式,字段的意义?
图:
36、FTP的基本工作原理
FTP使用客户服务器方式,服务器端有两种进程:主进程和从属进程,其中主进程工作步骤为:
(1)打开熟知端口(21)等待客户端连接。
(2)启动从属进程(控制进程和数据传送进程等)来处理客户进程发来的请求,处理完毕即终止。
(3)继续等待新的请求。
FTP客户和服务器要建立两条TCP连接,控制连接(服务器端口21,用来控制暂停、取消、下载等)和数据传送连接(服务器端口20,用来数据传送)。