1.OSI七层协定模型、TCP/IP四层模型和五层协定体系结构之间的关系

一、OSI七层协定模型

OSI的七层协定次要包含:

  • 物理层(physical layer)
  • 数据链路层(data link layer)
  • 网络层(network layer)
  • 运输层(transport layer)
  • 会话层(session layer)
  • 表示层(presentation layer)
  • 应用层(application layer)

二、TCP/IP四层协定模型

TCP/IP是一个四层的体系结构,他包含(从下到上程序):网络接口层、网际层(用网际层这个名字是强调这一层是为了解决不同的网络的互联问题)、运输层、应用层。不过从本质上讲,TCP/IP只有最下面的三层,因为最上面的网络接口层并没有具体内容


三、五层协定体系结构

五层体系的协定构造是综合了OSI和TCP/IP的长处的一种协定,包含(从下到上):物理层、数据链路层、网络层、运输层、应用层。(最底下两层能够称为网络接口层
注:五层协定的体系结构只是为介绍网络原理而设计的,理论利用还是TCP/IP四层体系结构。


OSI因为体系比较复杂,而且设计先于实现,有许多设计过于思维化,不太不便计算机软件实现,因此齐全实现OSI参考模型的零碎不多,利用的范畴无限。而TCP/IP协定最早在计算机系统中实现,在Linux、Windows平台中都有稳固的实现,并且提供了简略不便的编程接口(API),能够在其上开发出丰盛的应用程序,因而失去了宽泛的利用。TCP/IP协定已成为目前互联网事实上的国际标准和工业规范。


四、每一层的协定如下:

物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器)
数据链路层:PPP、FR、HDLC、VLAN、MAC(网桥、交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(交换机)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS


五、每一层的作用如下:

1、物理层
次要定义物理设施规范,例如网线的接口类型、光线的接口类型、各种传输介质的传输速率等。他的次要作用是传入比特流(就是由1、0转化为电流强弱来进行传输,达到目的地后再转化为1、0,也就是咱们通常所说的数模转换与模数转换)。这一层的数据叫做比特流。。
2、数据链路层
定义了如何让数据格式化进行传输,以及如何让管制对物理介质的拜访。这一层通常还提供了谬误检测和纠正,以保证数据的牢靠传输。
3、网络层
在位于不同地理位置的网络中的两个主机之间提供连贯和门路抉择。Internet的倒退使得从世界各站点访问信息的用户数大大增加,而网络层正是治理这种连贯的层。
4、运输层
定义了一些传输数据的协定和端口号(WWW端口80等),如:TCP(传输控制协议TCP,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)和UDP(用户数据报协定UDP,与TCP个性恰恰相反,用于传输可靠性要求不高、数据量小的数据,如QQ聊天数据就是通过这种形式传输的)。次要是将从上层的接管的数据进行分段和传输,达到目的地后再进行传输。经常把这一层数据叫做段。
5、会话层
通过运输层(端口号:传输端口与接管端口)建设数据传输的通路。次要在你的零碎之间发动会话或者就受会话申请(设施之间须要互相意识能够是IP地址也能够是MAC地址或者主机名)。
6、表示层
能够确保一个零碎的应用层所发送的信息能够被另一个零碎的应用层读取。例如,PC程序与另一台程序计算机进行通信,其中一台计算机应用扩大二一十进制替换码(EBCDIC),而另一台则应用美国信息替换规范码(ASCII)来示意雷同的字符。如有必要,表示层会通过应用一种通用格局来实现多种数据格式之间的转换。
7、应用层
最靠近用户的OSI层。这一层为用户的应用程序(如:电子邮件、文件传输和仿真终端)提供网络服务。

运输层

1.TCP三次握手

字段含意
URG紧急指针是否无效。为1,示意某一位须要被优先解决
ACK确认号是否无效,个别置为1。
PSH提醒接收端应用程序立刻从TCP缓冲区把数据读走。
RST对方要求从新建设连贯,复位。
SYN申请建设连贯,并在其序列号的字段进行序列号的初始值设定。建设连贯,设置为1
FIN心愿断开连接。


第一次握手:建设连贯时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,期待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时本人也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送结束,客户端和服务器进入ESTABLISHED(TCP连贯胜利)状态,实现三次握手。

2.TCP四次挥手

  1. 客户端过程收回连贯开释报文,并且进行发送数据。开释数据报文首部,FIN=1,其序列号为seq=u(等于后面曾经传送过去的数据的最初一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止期待1)状态。 TCP规定,FIN报文段即便不携带数据,也要耗费一个序号。
  2. 服务器收到连贯开释报文,收回确认报文,ACK=1,ack=u+1,并且带上本人的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(敞开期待)状态。TCP服务器告诉高层的利用过程,客户端向服务器的方向就开释了,这时候处于半敞开状态,即客户端曾经没有数据要发送了,然而服务器若发送数据,客户端仍然要承受。这个状态还要继续一段时间,也就是整个CLOSE-WAIT状态继续的工夫。
  3. 客户端收到服务器的确认申请后,此时,客户端就进入FIN-WAIT-2(终止期待2)状态,期待服务器发送连贯开释报文(在这之前还须要承受服务器发送的最初的数据)。
  4. 服务器将最初的数据发送结束后,就向客户端发送连贯开释报文,FIN=1,ack=u+1,因为在半敞开状态,服务器很可能又发送了一些数据,假设此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最初确认)状态,期待客户端的确认。
  5. 客户端收到服务器的连贯开释报文后,必须收回确认,ACK=1,ack=w+1,而本人的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(工夫期待)状态。留神此时TCP连贯还没有开释,必须通过2∗∗MSL(最长报文段寿命)的工夫后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  6. 服务器只有收到了客户端收回的确认,立刻进入CLOSED状态。同样,撤销TCB后,就完结了这次的TCP连贯。能够看到,服务器完结TCP连贯的工夫要比客户端早一些。

3.为什么连贯的时候是三次握手,敞开的时候却是四次握手?

因为当Server端收到Client端的SYN连贯申请报文后,能够间接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。然而敞开连贯时,当Server端收到FIN报文时,很可能并不会立刻敞开SOCKET,所以只能先回复一个ACK报文,通知Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我能力发送FIN报文,因而不能一起发送。故须要四步握手。

4.为什么TIME_WAIT状态须要通过2MSL(最大报文段生存工夫)能力返回到CLOSE状态?

尽管按情理,四个报文都发送结束,咱们能够间接进入CLOSE状态了,然而咱们必须假想网络是不牢靠的,有可能最初一个ACK失落。所以TIME_WAIT状态就是用来重发可能失落的ACK报文。在Client发送出最初的ACK回复,但该ACK可能失落。Server如果没有收到ACK,将一直反复发送FIN片段。所以Client不能立刻敞开,它必须确认Server接管到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,期待2MSL的工夫。如果在该工夫内再次收到FIN,那么Client会重发ACK并再次期待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活工夫,2MSL就是一个发送和一个回复所需的最大工夫。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK曾经被胜利接管,则完结TCP连贯。

5.为什么不能用两次握手进行连贯?

3次握手实现两个重要的性能,既要单方做好发送数据的筹备工作(单方都晓得彼此已筹备好),也要容许单方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

当初把三次握手改成仅须要两次握手,死锁是可能产生的。作为例子,思考计算机S和C之间的通信,假设C给S发送一个连贯申请分组,S收到了这个分组,并发 送了确认应答分组。依照两次握手的协定,S认为连贯曾经胜利地建设了,能够开始发送数据分组。可是,C在S的应答分组在传输中被失落的状况下,将不晓得S 是否已筹备好,不晓得S建设什么样的序列号,C甚至狐疑S是否收到本人的连贯申请分组。在这种状况下,C认为连贯还未建设胜利,将疏忽S发来的任何数据分 组,只期待连贯确认应答分组。而S在收回的分组超时后,反复发送同样的分组。这样就造成了死锁.

6.如果曾经建设了连贯,然而客户端忽然呈现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果呈现故障,服务器不能始终等上来,白白浪费资源。服务器每收到一次客户端的申请后都会从新复位这个计时器,工夫通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,当前每隔75秒钟发送一次。若一连发送10个探测报文依然没反馈,服务器就认为客户端出了故障,接着就敞开连贯

7.TCP 和 UDP区别

  • 区别:

    UDP是无连贯的,即发送数据之前不须要建设连贯

    UDP应用尽最大致力交付,即不保障牢靠交付,同时也不应用拥塞管制

    UDP是面向报文的,没有拥塞管制,适宜多媒体通信要求

    UDP反对一对一,一对多,多对一和多对多的交互通信

    UDP首部开销小,只有8个字节

    TCP是面向连贯的运输层协定

    TCP只能一对一连贯

    TCP提供牢靠的交付服务,提供全双工通信

    TCP 面向字节流,头部最低20个字节

8.应用TCP协定的意义

对网络通讯品质有要求的时候,比方:整个数据要准确无误的传递给对方,这往往用于一些要求牢靠的利用,比方HTTP、HTTPS、FTP等传输文件的协定,POP、SMTP等邮件传输的协定

9.http申请中的304状态码的含意

304(未修改)自从上次申请后,申请的网页未修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次申请后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器能够通知 Googlebot 自从上次抓取后网页没有变更,进而节俭带宽和开销。

10.http1.1和1.0的区别

缓存解决,在HTTP1.0中次要应用header里的If-Modified-Since,Expires来做为缓存判断的规范,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来管制缓存策略。

带宽优化及网络连接的应用,HTTP1.0中,存在一些节约带宽的景象,例如客户端只是须要某个对象的一部分,而服务器却将整个对象送过来了,并且不反对断点续传性能,HTTP1.1则在申请头引入了range头域,它容许只申请资源的某个局部,即返回码是206(Partial Content),这样就不便了开发者自在的抉择以便于充分利用带宽和连贯。

谬误告诉的治理,在HTTP1.1中新增了24个谬误状态响应码,如409(Conflict)示意申请的资源与资源的以后状态发生冲突;410(Gone)示意服务器上的某个资源被永久性的删除。

Host头解决,在HTTP1.0中认为每台服务器都绑定一个惟一的IP地址,因而,申请音讯中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的倒退,在一台物理服务器上能够存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的申请音讯和响应音讯都应反对Host头域,且申请音讯中如果没有Host头域会报告一个谬误(400 Bad Request)。

长连贯,HTTP 1.1反对长连贯(PersistentConnection)和申请的流水线(Pipelining)解决,在一个TCP连贯上能够传送多个HTTP申请和响应,缩小了建设和敞开连贯的耗费和提早,在HTTP1.1中默认开启Connection: keep-alive,肯定水平上补救了HTTP1.0每次申请都要创立连贯的毛病。

11.http和https的区别

  • 1)https协定要申请证书到ca,须要肯定经济老本;
  • 2) http是明文传输,https是加密的平安传输;
  • 3) 连贯的端口不一样,http是80,https是443;
  • 4)http连贯很简略,没有状态;
  • 5)https是ssl加密的传输,身份认证的网络协议,绝对http传输比拟平安。

12.浏览器从接管到一个URL,到最初展现出页面,经验了哪些过程

  1. DNS解析
  2. TCP连贯
  3. 发送HTTP申请
  4. 服务器解决申请并返回HTTP报文
  5. 浏览器解析渲染页面

网络层

1.arp协定和arp攻打

地址解析协定。ARP攻打的第一步就是ARP坑骗。ARP协定根本没有对网络的安全性做任何思考,过后人们思考的重点是如何保障网络通信可能正确和疾速的实现——ARP协定工作的前提是默认了其所在的网络是一个凶恶的网络,每台主机在向网络中发送应答信号时都是应用的实在身份。不过起初,人们发现ARP应答中的IP地址和MAC地址中的信息是能够伪造的,并不一定是本人的实在IP地址和MAC地址,由此,ARP坑骗就产生了

2.icmp协定

它是TCP/IP协定族的一个子协定,用于在IP主机、路由器之间传递管制音讯。管制音讯是指网络通不通、主机是否可达、路由是否可用等网络自身的音讯。这些管制音讯尽管并不传输用户数据,然而对于用户数据的传递起着重要的作用。

3.路由器和交换机

交换机用于同一网络外部数据的疾速传输转发决策通过查看二层头部实现转发不须要批改数据帧工作在 TCP/IP 协定的二层 —— 数据链路层工作简略,间接应用硬件解决路由器用于不同网络间数据的跨网络传输转发决策通过查看三层头部实现转发须要批改 TTL ,IP 头部校验和须要从新计算,数据帧须要从新封装工作在 TCP/IP 协定的三层 —— 网络层工作简单,应用软件解决。

应用层


1.DNS的寻址过程

  1. 在浏览器中输出www.qq.com域名,操作系统会先查看本人本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,实现域名解析。
  2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,间接返回,实现域名解析。
  3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此咱们叫它本地DNS服务器,此服务器收到查问时,如果要查问的域名,蕴含在本地配置区域资源中,则返回解析后果给客户机,实现域名解析,此解析具备权威性。
  4. 如果要查问的域名,不禁本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,实现域名解析,此解析不具备权威性。
  5. 如果本地DNS服务器本地区域文件与缓存解析都生效,则依据本地DNS服务器的设置(是否设置转发器)进行查问,如果未用转发模式,本地DNS就把申请发至13台根DNS,根DNS服务器收到申请后会判断这个域名(.com)是谁来受权治理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会分割负责.com域的这台服务器。这台负责.com域的服务器收到申请后,如果本人无奈解析,它就会找一个治理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,反复下面的动作,进行查问,直至找到www.qq.com主机。
  6. 如果用的是转发模式,此DNS服务器就会把申请转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转申请转至上下级,以此循环。不论是本地DNS服务器用是是转发,还是根提醒,最初都是把后果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查问,而DNS服务器之间就是的交互查问就是迭代查问。

2.负载平衡 反向代理模式的长处、毛病

  • (1)反向代理(Reverse Proxy)形式是指以代理服务器来承受internet上的连贯申请,而后将申请转发给外部网络上的服务器,并将从服务器上失去的后果返回给internet上申请连贯的客户端,此时代理服务器对外就体现为一个服务器。
  • (2)反向代理负载平衡技术是把将来自internet上的连贯申请以反向代理的形式动静地转发给外部网络上的多台服务器进行解决,从而达到负载平衡的目标。
  • (3)反向代理负载平衡能以软件形式来实现,如apache mod_proxy、netscape proxy等,也能够在高速缓存器、负载均衡器等硬件设施上实现。反向代理负载平衡能够将优化的负载平衡策略和代理服务器的高速缓存技术联合在一起,晋升动态网页的访问速度,提供无益的性能;因为网络内部用户不能间接拜访实在的服务器,具备额定的安全性(同理,NAT负载平衡技术也有此长处)。
  • (4)其毛病次要体现在以下两个方面

    • 反向代理是处于OSI参考模型第七层利用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限度了反向代理负载平衡技术的利用范畴,当初个别都用于对web服务器的负载平衡。
    • 针对每一次代理,代理服务器就必须关上两个连贯,一个对外,一个对内,因而在并发连贯申请数量十分大的时候,代理服务器的负载也就十分大了,在最初代理服务器自身会成为服务的瓶颈。

一般来讲,能够用它来对连贯数量不是特地大,但每次连贯都须要耗费大量解决资源的站点进行负载平衡,如search等。