计算机网络知识点整理

【笔试】计算机网络知识点整理

2018-07-25 23:51:39 Sha777wee 阅读数 8526更多html

分类专栏: 笔试web

1. OSI与TCP/IP各层的结构与功能,都有哪些协议。 
这里写图片描述 
OSI模型 
  OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,好比路由器,交换机。 
  OSI七层模型是一种框架性的设计方法,创建七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能就是帮助不一样类型的主机实现数据传输。它的最大优势是将服务、接口和协议这三个概念明确地区分开来,经过七个层次化的结构模型使不一样的系统不一样的网络之间实现可靠的通信。算法

OSI是Open System Interconnect的缩写,意为开放式系统互联。跨域

OSI七层参考模型的各个层次的划分遵循下列原则: 
一、同一层中的各网络节点都有相同的层次结构,具备一样的功能。 
二、同一节点内相邻层之间经过接口(能够是逻辑接口)进行通讯。 
三、七层结构中的每一层使用下一层提供的服务,而且向其上层提供服务。 
四、不一样节点的同等层按照协议实现对等层之间的通讯。浏览器

各层简介:缓存

  【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各类传输介质的传输速率等。它的主要做用是传输比特流(就是由一、0转化为电流强弱来进行传输,到达目的地后在转化为一、0,也就是咱们常说的数模转换与模数转换),这一层的数据叫作比特安全

  【2】数据链路层:负责物理传输的准备。在物理层提供比特流服务的基础上,创建相邻结点之间的数据链路,经过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动做系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的做用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为(frame)。数据链路层协议的表明包括:SDLC、HDLC、PPP、STP、帧中继等。MAC地址和交换机在这一层服务器

  【3】网络层:在 计算机网络中进行通讯的两个计算机之间可能会通过不少个数据链路,也可能还要通过不少通讯子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还能够实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的表明包括:IP、IPX、RIP、OSPF等。负责管理网络地址、定位设备、决定路由,路由器工做在这层。包括用户数据包,路由更新包。cookie

  【4】传输层:OSI中最重要的一层,负责分割组合数据,实现端到端的逻辑链接。第4层的数据单元也称做数据包(packets)。可是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取所有信息,所以,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程当中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通讯过程当中 传输层对上层屏蔽了通讯传输系统的具体细节。传输层协议的表明包括:TCP、UDP、SPX等。网络

  【5】会话层:负责在网络中两个节点间创建、维护、控制会话,区分不一样的会话,以及提供单工、半双工、全双工三种通讯模式服务。经过传输层(端口号:传输端口与接收端口)创建数据传输的通路,主要在你的系统之间发起会话或者接受会话请求(设备之间须要互相认识能够是IP也能够是MAC或者是主机名)。NFS、X Windows、RPC都在这一层。

  【6】表示层:可确保一个系统的应用层所发送的信息能够被另外一个系统的应用层读取。例如,PC程序与另外一台计算机进行通讯,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另外一台则使用美国信息交换标准码(ASCII)来表示相同的字符。若有必要,表示层会经过使用一种通格式来实现多种数据格式之间的转换。这一层主要解决信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工做都由表示层负责。

  【7】应用层: 是最靠近用户的OSI层,这一层为用户的操做系统或应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。。应用层协议的表明包括:Telnet、FTP、HTTP、SNMP等。 
   
TCP/IP模型:

是最基本的Internet协议,有网络层的IP和传输层的TCP构成。指TCP/IP协议簇。

分为四层,每一层都呼叫他的下一层所提供的网络来实现本身的需求。

一、网络接口层负责底层的传输,常见协议有Ethernet 802.3 、Token Ring 802.五、X.25等。

二、网络层负责不一样计算机之间的通讯

三、传输层负责应用程序间的通讯,主要包括格式化信息流,提供可靠地传输等。

四、应用层倾向于向用户提供服务,如电子邮件,远程登陆等。

属于TCP/IP协议簇的全部协议都位于该模型的上面三层。

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操做和多路复 用。经过面向链接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出链接好的通道,而后再进行数据发送;而UDP则不为IP提供可靠性、 流控或差错恢复功能。通常来讲,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要 有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系 统)、TFTP(通用文件传输协议)等.

TCP/IP协议与低层的网络接口层无关,这也是TCP/IP的重要特色。

除了层的数量以外,开放式系统互联(OSI)模型与TCP/IP协议有什么区别

开放式系统互联模型是一个参考标准,解释协议相互之间应该如何相互做用。TCP/IP协议是美国国防部发明的,是让互联网成为了目前这个样子的标准之一。开放式系统互联模型中没有清楚地描绘TCP/IP协议,可是在解释TCP/IP协议时很容易想到开放式系统互联模型。二者的主要区别以下:

TCP/IP协议中的应用层处理开放式系统互联模型中的第五层、第六层和第七层的功能。

TCP/IP协议中的传输层并不能老是保证在传输层可靠地传输数据包,而开放式系统互联模型能够作到。TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。

2. TCP与UDP的区别。 
TCP的优势: 可靠,稳定 TCP的可靠体如今TCP在传递数据以前,会有三次握手来创建链接,并且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开链接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击。TCP在传递数据以前,要先建链接,这会消耗时间,并且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,并且要在每台设备上维护全部的传输链接,事实上,每一个链接都会占用系统的CPU、内存等硬件资源。 并且,由于TCP有确认机制、三次握手机制,这些也致使TCP容易被人利用,实现DOS、DDOS、CC等攻击。

UDP的优势: 快,比TCP稍安全。UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,因此它在传递数据时很是快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是没法避免攻击的,好比:UDP Flood攻击…… UDP的缺点: 不可靠,不稳定 由于UDP没有TCP那些可靠的机制,在数据传递时,若是网络质量很差,就会很容易丢包。 基于上面的优缺点,那么: 何时应该使用TCP: 当对网络通信质量有要求的时候,好比:整个数据要准确无误的传递给对方,这每每用于一些要求可靠的应用,好比HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在平常生活中,常见使用TCP协议的应用以下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 ………… 何时应该使用UDP: 当对网络通信质量要求不高的时候,要求网络通信速度能尽可能的快,这时就能够使用UDP。 好比,平常生活中,常见使用UDP协议的应用以下: QQ语音 QQ视频 TFTP ……

总结

  • TCP面向链接(如打电话要先拨号创建链接);UDP是无链接的,即发送数据以前不须要创建链接
  • TCP提供可靠的服务。也就是说,经过TCP链接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  • TCP面向字节流,其实是TCP把数据当作一连串无结构的字节流;UDP是面向报文的 
    UDP没有拥塞控制,所以网络出现拥塞不会使源主机的发送速率下降(对实时应用颇有用,如IP电话,实时视频会议等)
  • 每一条TCP链接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通讯
  • TCP首部开销20字节;UDP的首部开销小,只有8个字节
  • TCP的逻辑通讯信道是全双工的可靠信道,UDP则是不可靠信道

3. TCP报文结构。 
这里写图片描述 
一、端口号:用来标识同一台计算机的不一样的应用进程。

1)源端口:源端口和IP地址的做用是标识报文的返回地址。

2)目的端口:端口指明接收方计算机上的应用程序接口。

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP惟一肯定一条TCP链接。

二、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每个字节一个序号。 
这里可参考理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)

三、数据偏移/首部长度:4bits。因为首部可能含有可选项内容,所以TCP报头的长度是不肯定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是由于首部长度实际上指示了数据区在报文段中的起始偏移值。

四、保留:为未来定义新的用途保留,如今通常置0。

五、控制位:URG ACK PSH RST SYN FIN,共6个,每个标志位表示一个控制功能。

1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段之后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

4)RST:重置链接标志,用于重置因为主机崩溃或其余缘由而出现错误的链接。或者用于拒绝非法的报文段和拒绝链接请求。

5)SYN:同步序号,用于创建链接过程,在链接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而链接应答捎带一个确认,即SYN=1和ACK=1。

6)FIN:finish标志,用于释放链接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

六、窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,于是窗口大小最大为65535。

七、校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

八、紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另外一端发送紧急数据的一种方式。

九、选项和填充:最多见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每一个链接方一般都在通讯的第一个报文段(为创建链接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不必定是32位的整数倍,因此要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

十、数据部分: TCP 报文段中的数据部分是可选的。在一个链接创建和一个链接终止时,双方交换的报文段仅有 TCP 首部。若是一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多状况中,也会发送不带任何数据的报文段。

4. TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的做用。 
这里写图片描述 
详细过程 
这里写图片描述

若是理解了上面的序号和确认号,这里的理解也不难。 
一、客户端发送报文SYN=1请求创建链接,并进入SYN-SENT状态。这里客户端的初始序号为随机数X(可理解为发送端发送的数据应排在接收端X位置上)。 
二、服务端接收到请求,发送报文SYN=1和ACK=1,前者表示赞成链接,后者表示客户端上次发送过来的数据已经正常接收,并进入SYN-RCYD状态。这里服务端的初始序号为随机数Y,确认号为X+1(可理解为下次发送过来的数据应该在X+1位置上才正确)。 
三、客户端接收到信息后再发送报文ACK=1表示确认,开启链接,进入ESTABLISHED状态。 
四、服务端接收到确认信息开启链接,进入ESTABLISHED状态。

这里写图片描述

关闭链接同理。

【注意】 在TIME_WAIT状态中,若是TCP client端最后一次发送的ACK丢失了,server端等不到者个ACT将从新发送FIN给client端,client端接收到知道ACT报文丢失了将从新发送ACT报文。TIME_WAIT状态中所须要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待以后链接正式关闭,而且全部的资源(包括端口号)都被释放。

【问题1】为何链接的时候是三次握手,关闭的时候倒是四次握手? 
答:由于当Server端收到Client端的SYN链接请求报文后,能够直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。可是关闭链接时,当Server端收到FIN报文时,极可能并不会当即关闭SOCKET,因此只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端全部的报文都发送完了,我才能发送FIN报文,所以不能一块儿发送。故须要四步握手。

【问题2】为何TIME_WAIT状态须要通过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,咱们能够直接进入CLOSE状态了,可是咱们必须假象网络是不可靠的,有能够最后一个ACK丢失。因此TIME_WAIT状态就是用来重发可能丢失的ACK报文。

5. TCP拥塞控制。 
通常原理:发生拥塞控制的缘由:资源(带宽、交换节点的缓存、处理机)的需求>可用资源。

做用:拥塞控制就是为了防止过多的数据注入到网络中,这样能够使网络中的路由器或者链路不至于过载。拥塞控制要作的都有一个前提:就是网络可以承受现有的网络负荷。

对比流量控制:拥塞控制是一个全局的过程,涉及到全部的主机、路由器、以及下降网络相关的全部因素。流量控制每每指点对点通讯量的控制。是端对端的问题。

拥塞窗口:发送方为一个动态变化的窗口叫作拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度。发送方让本身的发送窗口=拥塞窗口,可是发送窗口不是一直等于拥塞窗口的,在网络状况好的时候,拥塞窗口不断的增长,发送方的窗口天然也随着增长,可是接受方的接受能力有限,在发送方的窗口达到某个大小时就不在发生变化了。

发送方如何知道网络拥塞了呢?发送方发送一些报文段时,若是发送方没有在时间间隔内收到接收方的确认报文段,则就能够人为网络出现了拥塞。

慢启动算法的思路:主机开发发送数据报时,若是当即将大量的数据注入到网络中,可能会出现网络的拥塞。慢启动算法就是在主机刚开始发送数据报的时候先探测一下网络的情况,若是网络情况良好,发送方每发送一次文段都能正确的接受确认报文段。那么就从小到大的增长拥塞窗口的大小,即增长发送窗口的大小。

例子:开始发送方先设置cwnd(拥塞窗口)=1,发送第一个报文段M1,接收方接收到M1后,发送方接收到接收方的确认后,把cwnd增长到2,接着发送方发送M二、M3,发送方接收到接收方发送的确认后cwnd增长到4,慢启动算法每通过一个传输轮次(认为发送方都成功接收接收方的确认),拥塞窗口cwnd就加倍。

拥塞避免:为了防止cwnd增长过快而致使网络拥塞,因此须要设置一个慢开始门限ssthresh状态变量(我也不知道这个究竟是什么,就认为他是一个拥塞控制的标识),它的用法:

一、当cwnd < ssthresh,使用慢启动算法,

二、 当cwnd > ssthresh,使用拥塞控制算法,停用慢启动算法。

三、 当cwnd = ssthresh,这两个算法均可以。

拥塞避免的思路:是让cwnd缓慢的增长而不是加倍的增加,每经历过一次往返时间就使cwnd增长1,而不是加倍,这样使cwnd缓慢的增加,比慢启动要慢的多。

不管是慢启动算法仍是拥塞避免算法,只要判断网络出现拥塞,就要把慢启动开始门限(ssthresh)设置为设置为发送窗口的一半(>=2),cwnd(拥塞窗口)设置为1,而后在使用慢启动算法,这样作的目的能迅速的减小主机向网络中传输数据,使发生拥塞的路由器可以把队列中堆积的分组处理完毕。

实例:一、TCP链接进行初始化的时候,cwnd=1,ssthresh=16。

二、在慢启动算法开始时,cwnd的初始值是1,每次发送方收到一个ACK拥塞窗口就增长1,当ssthresh =cwnd时,就启动拥塞控制算法,拥塞窗口按照规律增加,

三、当cwnd=24时,网络出现超时,发送方收不到确认ACK,此时设置ssthresh=12,(二分之一cwnd),设置cwnd=1,而后开始慢启动算法,当cwnd=ssthresh=12,慢启动算法变为拥塞控制算法,cwnd按照线性的速度进行增加。 
这里写图片描述

快重传:

快重传算法要求首先接收方收到一个失序的报文段后就马上发出重复确认,而不要等待本身发送数据时才进行捎带确认。接收方成功的接受了发送方发送来的M一、M2而且分别给发送了ACK,如今接收方没有收到M3,而接收到了M4,显然接收方不能确认M4,由于M4是失序的报文段。若是根据可靠性传输原理接收方什么都不作,可是按照快速重传算法,在收到M四、M5等报文段的时候,不断重复的向发送方发送M2的ACK,若是接收方一连收到三个重复的ACK,那么发送方没必要等待重传计时器到期,因为发送方尽早重传未被确认的报文段。

这里写图片描述

快恢复:

当发送方连续接收到三个确认时,就执行乘法减少算法,把慢启动开始门限(ssthresh)设置为cwnd的一半,可是接下来并不执行慢开始算法。

此时不执行慢启动算法,而是把cwnd设置为新的ssthresh值, 而后执行拥塞避免算法,使拥塞窗口缓慢增大。

这里写图片描述

6. TCP滑动窗口与回退N针协议。 
滑动窗口协议 
这里写图片描述 
一、发送端和接收端分别设定发送窗口和接收窗口。 
二、三次握手的时候,客户端把本身的缓冲区大小也就是窗口大小发送给服务器,服务器回应是也将窗口大小发送给客户端,服务器客户端都知道了彼此的窗口大小。 
三、好比主机A的发送窗口大小为5,主机A能够向主机B发送5个单元,若是B缓冲区满了,A就要等待B确认才能继续发送数据。 
四、若是缓冲区中有1个报文被进程读取,主机B就会回复ACK给主机A,接收窗口向前滑动,报文中窗口大小为1,就说明A还能够发送1个单元的数据,发送窗口向前滑动,以后等待主机B的确认报文。 
只有接收窗口向前滑动并发送了确认时,发送窗口才能向前滑动。

中止等待ARQ协议(stop and wait) 
这里写图片描述 
当发送窗口和接收窗口都等于1时,就是中止等待协议。发送端给接收端发送数据,等待接收端确认回复ACk,并中止发送新的数据包,开启计时器。数据包在计时器超时以前获得确认,那么计时器就会关闭,并发送下一个数据包。若是计时器超时,发送端就认为数据包丢失或被破坏,须要从新发送以前的数据包,说明数据包在获得确认以前,发送端须要存储数据包的副本。 
中止等待协议是发出一个帧后获得确认才发下一个,下降了信道的利用率。

退后N帧协议 
这里写图片描述 
在发送完一个帧后,不用停下来等待确认,而是能够连续发送多个数据帧,这样就减小了等待时间,整个通讯的通吞吐量提升。 
若是前一个帧在超时时间内未获得确认,就认为丢失或被破坏,须要重发出错帧及其后面的全部数据帧。这样有可能有把正确的数据帧重传一遍,下降了传送效率。 
线路不好时,使用退后N帧的协议会浪费大量的带宽重传帧。

选择重传协议 
这里写图片描述 
NAK:非确认帧,当在必定时间内没有收到某个数据帧的ACK时,回复一个NACK。 
在发送过程当中,若是一个数据帧计时器超时,就认为该帧丢失或者被破坏,接收端只把出错的的帧丢弃,其后面的数据帧保存在缓存中,并向发送端回复NAK。发送端接收到NAK时,只发送出错的帧。 
若是落在窗口的帧从未接受过,那么存储起来,等比它序列号小的全部帧都按次序交给网络层,那么此帧才提交给网络层。 
接收端收到的数据包的顺序可能和发送的数据包顺序不同。所以在数据包里必须含有顺序字符来帮助接受端来排序。 
选择重传协议能够避免重复传送那些正确到达接收端的数据帧。可是接收端要设置具备至关容量的缓存空间,这在许多状况下是不够经济的。

7. Http的报文结构。 
http报文是面向文本的,报文中每个字段都是一些ASCII码串,各个字段的长度是不肯定的。http有两类报文:请求报文 响应报文

请求报文 
这里写图片描述 
一、请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段,组成,它们用空格分隔,例如:GET /index.html HTTP/1.1

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最经常使用的GET和POST方法;

GET:当client要从server中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给client。

使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(”?”)表明URL的结尾与请求参数的开始,传递参数长度受限制,例如: /index.jsp?id=100&op=bind

POST:当client给服务器提供信息较多时, 使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以key/value的形式出现,能够传递大量数据,可用来传递文件

二、消息头部

请求头部由key/value键值对组成,每行一对,key和value用冒号”:”分隔,请求头部通知服务器有关于client端的请求信息,典型的请求头:

User-Agent:产生请求的浏览器类型 
Accept:client端可识别的内容类型列表 
Host:请求的主机名,容许多个域名同处一个ip地址,即虚拟主机    

三、空行

最后一个请求头以后是一个空行,发送回车符和换行符,通知服务器请求头结束。

对于一个完整的http请求来讲空行是必须的,不然服务器会任务本次请求的数据还没有彻底发送到server,处于等待状态

四、请求正文

请求数据不在GET方法中使用,而是在POST中使用。POST方法适用于须要client填写表单的场合,与请求数据相关的最经常使用的请求头是Content-Type 和Content-Length

响应报文 
这里写图片描述 
一、状态行:状态行由 HTTP 协议版本字段、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开;

  ● 状态码由三位数字组成,第一位数字表示响应的类型,经常使用的状态码有五大类以下所示:

  1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;

  2xx:表示服务器已成功接收到请求并进行处理;

  3xx:表示服务器要求客户端重定向;

  4xx:表示客户端的请求有非法内容;

  5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

  ● 状态码描述文本有以下取值:

  200 OK:表示客户端请求成功;

  400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;

  401 Unauthonzed:表示请求未经受权,该状态代码必须与 WWW-Authenticate 报头域一块儿使用;

  403 Forbidden:表示服务器收到请求,可是拒绝提供服务,一般会在响应正文中给出不提供服务的缘由;

  404 Not Found:请求的资源不存在,例如,输入了错误的URL;

  500 Internal Server Error:表示服务器发生不可预期的错误,致使没法完成客户端的请求;

  503 Service Unavailable:表示服务器当前不可以处理客户端的请求,在一段时间以后,服务器可能会恢复正常;

二、响应头部:响应头可能包括:

  Location:Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端能够发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源;

  Server:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操做系统的信息。

  Vary:指示不可缓存的请求头列表;

  Connection:链接方式;

  对于请求来讲:close(告诉 WEB 服务器或者代理服务器,在完成本次请求的响应后,断开链接,不等待本次链接的后续请求了)。keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持链接,等待本次链接的后续请求);

  对于响应来讲:close(链接已经关闭); keepalive(链接保持着,在等待本次链接的后续请求); Keep-Alive:若是浏览器请求保持链接,则该头部代表但愿WEB 服务器保持链接多长时间(秒);例如:Keep-Alive:300;

  WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在401 (未受权的)响应消息中,这个报头域和前面讲到的Authorization 请求报头域是相关的,当客户端收到 401 响应消息,就要决定是否请求服务器对其进行验证。若是要求服务器对其进行验证,就能够发送一个包含了Authorization 报头域的请求;

三、空行:最后一个响应头部以后是一个空行,发送回车符和换行符,通知服务器如下再也不有响应头部。

四、实体主体:服务器返回给客户端的文本信息; 
8. Http的状态码含义。 
 1、200状态码: 
  成功2××: 成功处理了请求的状态码。 
  一、200 :服务器已成功处理了请求并提供了请求的网页。 
  二、204: 服务器成功处理了请求,但没有返回任何内容。 
  2、300状态码: 
  重定向3×× :每次请求中使用重定向不要超过 5 次。 
  一、301: 请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。 
  二、302: 请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。 
  三、304: 若是网页自请求者上次请求后没有更新,则用304代码告诉搜索引擎机器人,可节省带宽和开销。 
  3、400状态码: 
  客户端错误4×× :表示请求可能出错,妨碍了服务器的处理。 
  一、400: 服务器不理解请求的语法。 
  二、403: 服务器拒绝请求。 
  三、404: 服务器找不到请求的网页。服务器上不存在的网页常常会返回此代码。 
  四、410 :请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码类似,但在资源之前存在而如今不存在的状况下,有时用来替代404 代码。若是资源已永久删除,应当使用 301 指定资源的新位置。 
  4、500状态码: 
  服务器错误5×× :表示服务器在处理请求时发生内部错误。这些错误多是服务器自己的错误,而不是请求出错。 
  一、500 :服务器遇到错误,没法完成请求。 
  二、503: 服务器目前没法使用(因为超载或停机维护)。 
  一般,这只是暂时状态。 但愿你们在分析日志的时候能够参照一下,根据具体的状态码解决问题。

9. Http request的几种类型。 
一、 OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也能够利用向Web服务器发送’*’的请求来测试服务器的功能性。

二、HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法能够在没必要传输整个响应内容的状况下,就能够获取包含在响应消息头中的元信息。

三、GET:向特定的资源发出请求。

四、POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会致使新的资源的建立和/或已有资源的修改。

五、PUT:向指定资源位置上传其最新内容。

六、DELETE:请求服务器删除Request-URI所标识的资源。

七、TRACE:回显服务器收到的请求,主要用于测试或诊断。

八、CONNECT:HTTP/1.1协议中预留给可以将链接改成管道方式的代理服务器。

10. Http1.1和Http1.0的区别 
一、长链接 
HTTP 1.0须要使用keep-alive参数来告知服务器端要创建一个长链接,而HTTP1.1默认支持长链接。

HTTP是基于TCP/IP协议的,建立一个TCP链接是须要通过三次握手的,有必定的开销,若是每次通信都要从新创建链接的话,对性能有影响。所以最好能维持一个长链接,能够用个长链接来发多个请求。

二、节约带宽 
HTTP 1.1支持只发送header信息(不带任何body信息),若是服务器认为客户端有权限请求服务器,则返回100,不然返回401。客户端若是接受到100,才开始把请求body发送到服务器。

这样当服务器返回401的时候,客户端就能够不用发送请求body了,节约了带宽。

另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只须要跟服务器请求另外的部分资源便可。这是支持文件断点续传的基础。

三、HOST域 
如今能够web server例如tomat,设置虚拟站点是很是常见的,也便是说,web server上的多个虚拟站点能够共享同一个ip和端口。

HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

11. Http怎么处理长链接。 
在HTTP1.0和HTTP1.1协议中都有对长链接的支持。其中HTTP1.0须要在request中增长Connection: keep-alive header才可以支持,而HTTP1.1默认支持。

一、http1.0请求与服务端的交互过程:

(1)客户端发出带有包含一个header:”Connection: keep-alive“的请求

(2)服务端接收到这个请求后,根据http1.0和”Connection: keep-alive“判断出这是一个长链接,就会在response的header中也增长”Connection: keep-alive“,同时不会关闭已创建的tcp链接.

(3)客户端收到服务端的response后,发现其中包含”Connection: keep-alive“,就认为是一个长链接,不关闭这个链接。并用该链接再发送request.转到(1)

二、http1.1请求与服务端的交互过程:

(1)客户端发出http1.1的请求

(2)服务端收到http1.1后就认为这是一个长链接,会在返回的response设置Connection: keep-alive,同时不会关闭已创建的链接.

(3)客户端收到服务端的response后,发现其中包含”Connection: keep-alive“,就认为是一个长链接,不关闭这个链接。并用该链接再发送request.转到(1)

基于http协议的长链接减小了请求,减小了创建链接的时间,可是每次交互都是由客户端发起的,客户端发送消息,服务端才能返回客户端消息。

12. Cookie与Session的做用原理。

Cookie

一、工做原理 
(1)建立Cookie 
当用户第一次浏览某个使用Cookie的网站时,该网站的服务器就进行以下工做: 
①该用户生成一个惟一的识别码(Cookie id),建立一个Cookie对象; 
②默认状况下它是一个会话级别的cookie,存储在浏览器的内存中,用户退出浏览器以后被删除。若是网站但愿浏览器将该Cookie存储在磁盘上,则须要设置最大时效(maxAge),并给出一个以秒为单位的时间(将最大时效设为0则是命令浏览器删除该Cookie); 
③将Cookie放入到HTTP响应报头,将Cookie插入到一个 Set-Cookie HTTP请求报头中。 
④发送该HTTP响应报文。 
(2)设置存储Cookie 
浏览器收到该响应报文以后,根据报文头里的Set-Cookied特殊的指示,生成相应的Cookie,保存在客户端。该Cookie里面记录着用户当前的信息。 
(3)发送Cookie 
当用户再次访问该网站时,浏览器首先检查全部存储的Cookies,若是某个存在该网站的Cookie(即该Cookie所声明的做用范围大于等于将要请求的资源),则把该cookie附在请求资源的HTTP请求头上发送给服务器。 
(4)读取Cookie 
服务器接收到用户的HTTP请求报文以后,从报文头获取到该用户的Cookie,从里面找到所须要的东西。

二、做用 
Cookie的根本做用就是在客户端存储用户访问网站的一些信息。典型的应用有:

(1)记住密码,下次自动登陆。

(2)购物车功能。

(3)记录用户浏览数据,进行商品(广告)推荐。

三、缺陷 
①Cookie会被附加在每一个HTTP请求中,因此无形中增长了流量。

②因为在HTTP请求中的Cookie是明文传递的,因此安全性成问题。(除非用HTTPS)

③Cookie的大小限制在4KB左右。对于复杂的存储需求来讲是不够用的。

Session

一、工做原理 
(1)建立Session 
当用户访问到一个服务器,若是服务器启用Session,服务器就要为该用户建立一个SESSION,在建立这个SESSION的时候,服务器首先检查这个用户发来的请求里是否包含了一个SESSION ID,若是包含了一个SESSION ID则说明以前该用户已经登录过并为此用户建立过SESSION,那服务器就按照这个SESSION ID把这个SESSION在服务器的内存中查找出来(若是查找不到,就有可能为他新建立一个),若是客户端请求里不包含有SESSION ID,则为该客户端建立一个SESSION并生成一个与此SESSION相关的SESSION ID。这个SESSION ID是惟一的、不重复的、不容易找到规律的字符串,这个SESSION ID将被在本次响应中返回到客户端保存,而保存这个SESSION ID的正是COOKIE,这样在交互过程当中浏览器能够自动的按照规则把这个标识发送给服务器。 
(2)使用Session 
咱们知道在IE中,咱们能够在工具的Internet选项中把Cookie禁止,那么会不会出现把客户端的Cookie禁止了,那么SESSIONID就没法再用了呢?找了一些资料说明,能够有其余机制在COOKIE被禁止时仍然可以把Session id传递回服务器。

常常被使用的一种技术叫作URL重写,就是把Session id直接附加在URL路径的后面一种是做为URL路径的附加信息,表现形式为:

http://…./xxx;jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;

另外一种是做为查询字符串附加在URL后面,表现形式为:

http://…../xxx?jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

还有一种就是表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时可以把Session id传递回服务器。

二、做用

Session的根本做用就是在服务端存储用户和服务器会话的一些信息。典型的应用有:

(1)判断用户是否登陆。

(2)购物车功能。

Cookie和Session的比较:

一、存放位置不一样

Cookie保存在客户端,Session保存在服务端。

2 、存取方式的不一样

Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。

而Session中可以存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也可以直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。可以把Session看作是一个Java容器类。

三、安全性(隐私策略)的不一样

Cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以致修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。 假如选用Cookie,比较好的方法是,敏感的信息如帐号密码等尽可能不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都可以有效的保护。

四、有效期上的不一样

只须要设置Cookie的过时时间属性为一个很大很大的数字,Cookie就能够在浏览器保存很长时间。 因为Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过时时间默许为–1,只需关闭了浏览器(一次会话结束),该Session就会失效。

五、对服务器形成的压力不一样

Session是保管在服务器端的,每一个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。

六、 跨域支持上的不一样

Cookie支持跨域名访问,例如将domain属性设置为“.baidu.com”,则以“.baidu.com”为后缀的一切域名均可以访问该Cookie。跨域名Cookie现在被广泛用在网络中。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

13. 电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP。

首先了解一下各个协议是什么:

应用层: 
一、DNS(53): 
咱们输入的是一个URL须要转化成IP地址。首先咱们知道咱们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,若是可以找到相应的url则返回其ip,不然该DNS将继续将该解析请求发送给上级DNS,整个DNS能够看作是一个树状结构,该请求将一直发送到根直到获得结果。

二、HTTP(80) 
HTTP协议的主要职责是生成针对目标web服务器的http请求报文(请求行、请求头部)

传输层 
三、TCP 
将http请求报文分割成报文段,按序号分为多个报文段。(三次握手)

网络层 
四、IP 
搜索目标的地址,一边中转一边传送。(路由)

五、ARP 
由于最终都要在数据链路层上进行传输,而数据链路层并不认识IP地址,因此ARP的职责就是把IP地址转换成数据链路层认识的MAC地址。

经过数据链路层到达目标机器以后。

网络层 
六、RARP 
这实际上是ARP的逆过程,将MAC地址转换成Ip地址

传输层 
七、TCP 
将接收到的报文段按序号进行重组。

应用层 
八、 HTTP 
HTTP协议对http请求进行解析处理。

例子: 
重点内容 
假设你用一个全新的浏览器(第一次启动的那种),访问百度(http://www.baidu.com/**),在你敲入网址并按下回车以后,将会发生如下神奇的事情: 
http://www.baidu.com/浏览器先尝试从Host文件中获取http://www.baidu.com/对应的IP地址,若是能取到固然万事大吉你们都能嗨,若是不能,就使用DNS协议来获取IP咯。 
在DNS协议中,PC会向你的本地DNS服务器求助(通常是路由器),但愿从本地DNS服务器那里获得百度的IP,获得就好,得不到还得向更高层次的DNS服务器求助,最终总能获得百度的IP。 
获得百度的IP,下一步是使用TCP协议,创建TCP链接。 
在TCP协议中,创建TCP须要与百度服务器握手三次,你先告诉服务器你要给服务器发东西(SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),而后你应答服务器(ACK),总共来回了3次,称为3次握手。 
不过,创建TCP链接有个前提(或者说给服务器发消息有个前提):你必须能成功地把消息发到服务器上。虽然已经知道IP,但并没有啥用(好比说,你在广东,你知道北京的地理坐标经纬度就能到北京了?你得知道有哪些路通往北京吧你得准备盘缠吧你得花时间吧)。 
咱们都知道,你的PC和百度服务器之间通常会有许多路由器之类的东西,IP协议指定了出发地(你的PC)和目的地(服务器);你的数据会通过一个又一个路由器,OSPF决定了会通过那些路由器(用一种叫路由算法的玩意,找出最佳路径);从一个路由器怎么传给下一个路由器?这是ARP协议的工做,ARP负责求下一个节点的地址(咱们不止是要目的地,还要中间节点的地址)。 
IP协议使用的是IP地址,整个发送过程当中只涉及出发地和目的地2个IP地址,而ARP协议使用的是MAC地址,整个发送过程当中涉及到每个节点的MAC地址 
如今,咱们能和服务器通讯,还创建了TCP链接,下一步干吗,固然是用HTTP协议请求网页内容咯。 
你发个HTTP请求报文给服务器,若是服务器禁止你访问它就给你回个”Forbidden”,若是它暂时挂掉了就给你回个“内部服务错误”,若是它正常才给你回个“OK“并将你要的数据传给你;若是你还须要其它的东西再去跟它要(它通常还会给你的-_-)。 
你收到了服务器的回复,是一坨HTML形式的文本。浏览器必需要可以理解文本的内容,并快速地渲染到屏幕上(浏览器通常用有限自动机来理解文本内容,渲染的话就各看本事了,之因此微软IE卡成狗而谷歌浏览器很6,就是它们的渲染速度不一样…)

14. Ping的整个过程。ICMP报文是什么。

这里讲ping的两状况,一种是同一网段内,一种是跨网段的ping ….

一、同一网段ping

首先,若是主机A,要去ping主机B,那么主机A,就要封装二层报文,他会先查本身的MAC地址表,若是没有B的MAC地址,就会向外发送一个ARP广播包,如图: 
这里写图片描述

其中ARP报文格式以下: 
这里写图片描述 
其中OP 
1:表示ARP请求 
2:表示ARP应答 
3:表示RARP请求 
4:表示RARP应答

首先,交换机会收到这个报文后,交换机有学习MAC地址的功能,因此他会检索本身有没有保存主机B有MAC,若是有,就返回给主机A,若是没有,就会向全部端口发送ARP广播,其它主机收到后,发现不是在找本身,就纷纷丢弃了该报文,不去理会。。直到主机B收到了报文后,就当即相应,个人MAC地址是多少,同时学到主机A的MAC地址,并按一样的ARP报文格式返回给主机A,如图: 
这里写图片描述

ARP报文格式: 
这里写图片描述

这时候主机A学到了主机B的MAC,就把这个MAC封装到ICMP协议的二层报文中向主机B发送,报文格式以下: 
这里写图片描述

当主机B收到了这个报文后,发现是主机A 的ICPM回显请求,就按一样的格式,返回一个值给主机A,这样就完成了同一网段内的ping过程… 
这里写图片描述

二、跨网段ping 
若是主机A要ping主机C,那么主机A发现主机C的IP和本身不是同一网段,他就去找网关转发,可是他也不知道网关的MAC状况下呢?他就会向以前那个步骤同样先发送一个ARP广播,学到网关的MAC,再发封装ICMP报文给网关路由器. 
报文格式以下: 
这里写图片描述

当路由器收到主机A发过来的ICMP报文,发现报文的目的地址是其自己MAC地址,根据目的的IP2.1.1.1,查路由表,发现2.1.1.1/24的路由表项,获得一个出口指针,去掉原来的MAC头部.加上本身的MAC地址向主机C转发…(若是网关也没有主机C的MAC地址,仍是要向前面一个步骤同样,ARP广播一下便可相互学到….路由器2端口能学到主机D的MAC,主机D也能学到路由器2端口的MAC..),报文格式以下: 
这里写图片描述

最后,在主机C已学到路由器2端口MAC,路由器2端口转发给路由器1端口,路由1端口学到主机A的MAC的状况下,他们就不须要再作ARP解析,就将ICMP的回显请求回复过来..报文格式大体以下: 
这里写图片描述

ICMP报文 
一、 ICMP容许主机或路由报告差错状况和提供有关异常状况。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。一般ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。

二、 ICMP报文做为IP层数据报的数据,加上数据报的首部,组成数据报发送出去。

三、 ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。

具体参考:ICMP报文分析

15. C/S模式下使用socket通讯,几个关键函数。 
这里写图片描述

16. IP地址分类。 
这里写图片描述

A类网络地址: 
(1)前1字节标识网络地址部分,后3字节表示主机地址部分

(2)每一个网络最多容纳(2^24 - 2)台主机

(3)最高位固定为0,因此第1个字节表示范围为0~127

(4)具备A类地址特征的网络总数为2^7个

B类网络地址: 
(1)前2字节标识网络地址部分,后2字节标识主机地址部分

(2)每一个网络最多容纳(2^16 - 2)台主机

(3)前2位固定为10,因此第一个字节表示范围为128~19一、

(4)具备B类地址特征的网络总数为2^14个

C类地址 
(1)前3字节标识网络地址部分,后1字节标识主机地址部分

(2)每一个网络可容纳(2^8 - 2)台主机

(3)前3位固定为110,因此第一字节表示范围为192~223

(4)具备C类地址的网络总数为2^21个

保留的地址

D类(224.0.0.0~239.0.0.0)组播地址

E类(240.0.0.0~254.0.0.0)用于科研试验

网络地址:主机部分全为0的IP地址

广播地址:主机部分全为1的IP地址

例子:当发送信息到广播地址100.255.255.255时,意思为放松到网络地址为100.0.0.0的全部主机上。

0.0.0.0指这个主机、这个网络,出如今路由表中的默认路由。

255.255.255.255 广播地址:送达全网全部主机,会被路由器截至

子网的规划

例子:某单位分到一个C类网络号193.71.56.0,须要分红五个子网,每一个子网须要链接20台主机,如何规划子网?

为了分红五个子网,咱们须要借主机位3位,可建立8个子网>5个子网;同时剩下5个主机位,提供主机位2^5-2=30个>20个,因此咱们能够子网掩码设置位255.255.255.224。

咱们这里建立子网都是等大的,还能建立不等大的子网,就是子网中继续建立子网,这样能够充分利用资源,就不赘述了。

17. 路由器与交换机区别。 
这里写图片描述
(1)外形上:

从外形上咱们区分二者,交换机一般端口比较多看起来比较笨重,而路由器的端口就少得多体积也小得多,实际上右图并非真正的路由器只是集成了路由器的功能,除此以外还有交换机的功能(LAN口就是做为交换机的端口来使用,WAN是用于链接外网的端口),而两个天线则是无线AP接入点(便是一般所说的无线局域网wifi)。

(2)工做层次不一样:

最初的交换机工做在OSI开放式系统互联模型的数据链路层,也就是第二层,而路由器则工做在OSI模型的网络层,就是第三层。也就是因为这一点因此交换机的原理比较简单,通常都是采用硬件电路实现数据帧的转发,而路由器工做在网络层,肩负着网络互联的重任,要实现更加复杂的协议,具备更加智能的转发决策功能,通常都会在在路由器中跑操做系统,实现复杂的路由算法,更偏向于软件实现其功能。

(3)数据的转发对象不一样: 
交换机是根据MAC地址转发数据帧,而路由器则是根据IP地址来转发IP数据报/分组。数据帧是在IP数据包/分组的基础上封装了帧头(源MAC和目的MAC等)和帧尾(CRC校验码)。而对于MAC地址和IP地址你们也许就搞不明白了,为什么须要两个地址,实际上IP地址决定最终数据包要到达某一台主机,而MAC地址则是决定下一跳将要交互给哪一台设备(通常是路由器或主机)。并且,IP地址是软件实现的,能够描述主机所在的网络,MAC地址是硬件实现的,每个网卡在出厂的时候都会将全世界惟一的MAC地址固化在网卡的ROM中,因此MAC地址是不能被修改的,可是IP地址是能够被网络管理人员配置修改的。

(4)”分工“不一样

交换机主要是用于组建局域网,而路由器则是负责让主机链接外网。多台主机能够经过网线链接到交换机,这时就组建好了局域网,就能够将数据发送给局域网中的其余主机,如咱们使用的飞秋、极域电子教室等局域网软件就是经过交换机把数据转发给其余主机的,固然像极域电子教室这样的广播软件是利用广播技术让全部的主机都收到数据的。然而,经过交换机组建的局域网是不能访问外网的(便是Internet),这时须要路由器来为咱们”打开外面精彩世界的大门“,局域网的全部主机使用的都是私网的IP,因此必须经过路由器转化为公网的IP以后才能访问外网。

(5)冲突域和广播域

交换机分割冲突域,可是不分割广播域,而路由器分割广播域。由交换机链接的网段仍属于同一个广播域,广播数据包会在交换机链接的全部网段上传播,在这种状况下会致使广播风暴和安全漏洞问题。而链接在路由器上的网段会被分配不一样的广播域,路由器不会转发广播数据。须要说明的是单播的数据包在局域网中会被交换机惟一地送往目标主机,其余主机不会接收到数据,这是区别于原始的集线器的,数据的到达时间由交换机的转发速率决定,交换机会转发广播数据给局域网中的全部主机。

最后须要说明的是:路由器通常有防火墙的功能,可以对一些网络数据包选择性过滤。如今的一些路由器都具有交换机的功能(如上图右),一些交换机具有路由器的功能,被称为3层交换机,普遍使用。相比较而言,路由器的功能较交换机要强大,可是速度也较慢,价格昂贵,三层交换机既有交换机的线性转发报文的能力,又有路由器的良好的路由功能所以获得普遍的使用。

相关文章
相关标签/搜索