计算机网络常见面试题(大全)

1  http,https 区别

 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

2  https原理(输入一个网址,到响应的整个过程)

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。

HTTP 请求/响应的步骤

1、客户端连接到Web服务器

   一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。

2、发送HTTP请求

   通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3、服务器接受请求并返回HTTP响应

  Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

4、释放连接TCP连接

  若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5、客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

3   http方法,get和post区别

Get和Post区别:

GET和POST是什么?HTTP协议中的两种发送请求的方法。

HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同:

GET在浏览器回退时是无害的,而POST会再次提交请求。

GET产生的URL地址可以被Bookmark,而POST不可以。

GET请求会被浏览器主动cache,而POST不会,除非手动设置。

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

GET请求在URL中传送的参数是有长度限制的,而POST么有。

对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET参数通过URL传递,POST放在Request body中。

GET和POST还有一个重大区别,简单的说:

GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

根据 HTTP 规范,get 用于信息获取,而非修改信息,get请求一般不会产生副作用。Post可能改变服务器上的资源的请求。此外,get是向服务器发索取数据的一种请求。而post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中。

4 http报文结构

图: 请求报文(上) 和响应报文(下) 的结构

5  http报文构成

请求报文是由请求方法、 请求 URI、 协议版本、 可选的请求首部字段
和内容实体构成的。

响应报文基本上由协议版本、 状态码(表示请求成功或失败的数字代码) 、 用以解释状态码的原因短语、 可选的响应首部字段以及实体主体构成。

6   http状态码

2XX 成功:200:请求已正常处理;204 No Content:请求处理成功,但没有资源返回;206 Partial Content:对资源某一部分的请求;

3XX 重定向:301 Moved Permanently:永久性重定向;302 Found:临时性重定向;303 See Other:按新的URI访问;304 Not Modified:自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

4XX 客户端错误:400 Bad Request:请求错误,服务器不理解请求语法;401 Unauthorized:请求需通过HTTP认证;403 Forbidden:禁止访问;404 Not Found:服务器上没有该请求的资源,找不到网页。

5XX 服务器错误:500 Internal Server Error:服务器端在执行请求时发生了错误。 也有可能是 Web应用存在的 bug 或某些临时的故障;501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。503 Service Unavailable:服务器正忙;504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

重点:200,  304,  403,404,  500

7  tcp三次握手四次挥手

tcp连接建立的时候3次握手的具体过程,以及每一步原因:

(1) 第一步:源主机A的TCP向主机B发出连接请求报文段,其首部中的SYN(同步)标志位应置为1,表示想与目标主机B进行通信,并发送一个同步序列号X(例:SEQ=100)进行同步,表明在后面传送数据时的第一个数据字节的序号是X+1(即101)。SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号。
(2)第二步:目标主机B的TCP收到连接请求报文段后,如同意,则发回确认。在确认报中应将ACK位和SYN位置1,表示客户端的请求被接受。确认号应为X+1(图中为101),同时也为自己选择一个序号Y。
(3)第三步:源主机A的TCP收到目标主机B的确认后要向目标主机B给出确认,其ACK置1,确认号为Y+1,而自己的序号为X+1。TCP的标准规定,SYN置1的报文段要消耗掉一个序号。
  运行客户进程的源主机A的TCP通知上层应用进程,连接已经建立。当源主机A向目标主机B发送第一个数据报文段时,其序号仍为X+1,因为前一个确认报文段并不消耗序号。
  当运行服务进程的目标主机B的TCP收到源主机A的确认后,也通知其上层应用进程,连接已经建立。至此建立了一个全双工的连接。

tcp断开连接的具体过程,其中每一步是为什么那么做:

1)第一步:源主机A的应用进程先向其TCP发出连接释放请求,并且不再发送数据。TCP通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的终止比特FIN置1,其序号X等于前面已传送过的数据的最后一个字节的序号加1。  

2)第二步:目标主机B的TCP收到释放连接通知后即发出确认,其序号为Y,确认号为X+1,同时通知高层应用进程,这样,从A到B的连接就释放了,连接处于半关闭状态,相当于主机A向主机B说:“我已经没有数据要发送了。但如果你还发送数据,我仍接收。”此后,主机B不再接收主机A发来的数据。但若主机B还有一些数据要发送主机A,则可以继续发送。主机A只要正确收到数据,仍应向主机B发送确认。

3)第三步:若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接。主机B发出的连接释放报文段必须将终止比特FIN和确认比特ACK置1,并使其序号仍为Y,但还必须重复上次已发送过的ACK=X+1。

4) 第四步:主机A必须对此发出确认,将ACK置1,ACK=Y+1,而自己的序号是X+1。这样才把从B到A的反方向的连接释放掉。主机A的TCP再向其应用进程报告,整个连接已经全部释放。

为什么连接的时候是三次握手,关闭的时候却是四次握手?

三次握手是为了防止,客户端的请求报文在网络滞留,客户端超时重传了请求报文,服务端建立连接,传输数据,释放连接之后,服务器又收到了客户端滞留的请求报文,返回确认应答,但是此时客户端已经断开连接,自己并没有发送连接请求,也不会发送数据,而服务端还一直在等待客户端发送数据。

关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭连接,所以只能先回复一个ACK报文,告诉客户端,”你发的FIN报文我收到了”。只有等到我服务器端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

8   udp和tcp区别,视频直播用什么

1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制);UDP提供无连接的传输,通信前不需要建立连接。

2)TCP提供可靠的传输(有序,无差错,不丢失,不重复);UDP提供不可靠的传输。

3)TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是面向数据报的传输,没有分组开销。

4)TCP提供拥塞控制和流量控制机制;UDP不提供拥塞控制和流量控制机制。

视频直播使用udp。

 

9 流量控制和拥塞控制的实现机制:

1)TCP采用大小可变的滑动窗口机制实现流量控制功能。窗口的大小是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置发送窗口的数据的上限。
在数据传输过程中,TCP提供了一种
基于滑动窗口协议的流量控制机制,用接收端接收能力(缓冲区的容量)的大小来控制发送端发送的数据量

2)采用滑动窗口机制还可对网络进行拥塞控制,将网络中的分组(TCP报文段作为其数据部分)数量维持在一定的数量之下,当超过该数值时,网络的性能会急剧恶化。传输层的拥塞控制有慢开始(Slow-Start)、拥塞避免(Congestion Avoidance)、快重传(Fast Retransmit)和快恢复(Fast Recovery)四种算法。
拥塞:大量数据报涌入同一交换节点(如路由器),导致该节点资源耗尽而必须丢弃后面到达的数据报时,就是拥塞。

拥塞控制:

如果把窗口定的太大,发送端连续发送大量的数据时,可能会造成网络拥堵甚至网络瘫痪。

慢启动:定义拥塞窗口,一开始大小设为1,之后每次收到确认应答,拥塞窗口大小以2的指数幂增长。

拥塞避免:设置慢启动阙值,一般为65536,拥塞避免是指当拥塞窗口大小达到这个阙值时,拥塞涌口的值不再以指数上升,而是假发增加,一次来避免拥塞。

将报文段的超时重传看做拥塞,一旦发生超时重传,先将阙值设置为当前窗口大小的一半,然后重新进入慢启动过程。

快速重传:遇到三次重复确认应答时,需要进行立即重传。先将阙值设为当前窗口大小的一半,然后将拥塞窗口大小设置为慢启动阙值+3的大小。

10  TCP和UDP的应用场景

TCP:当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。在日常生活中,常见使用TCP协议的应用如:浏览器,用的HTTP;FlashFXP,用的FTP;Outlook,用的POP、SMTP;Putty,用的Telnet、SSH;QQ文件传输

UDP:当强调传输性能而不是传输的完整性时, 要求网络通讯速度能尽量的快。如:QQ语音 QQ视频等。

 

11为什么TCP叫数据流模式?UDP叫数据报模式?

所谓的“流模式”,是指TCP发送端发送几次数据和接收端接收几次数据是没有必然联系的,比如你通过 TCP连接给另一端发送数据,你只调用了一次 write,发送了100个字节,但是对方可以分10次收完,每次10个字节;你也可以调用10次write,每次10个字节,但是对方可以一次就收完。

原因:这是因为TCP是面向连接的,一个 socket 中收到的数据都是由同一台主机发出,且有序地到达,所以每次读取多少数据都可以。

所谓的“数据报模式”,是指UDP发送端调用了几次 write,接收端必须用相同次数的 read 读完。UDP是基于报文的,在接收的时候,每次最多只能读取一个报文,报文和报文是不会合并的,如果缓冲区小于报文长度,则多出的部分会被丢弃。

原因:这是因为UDP是无连接的,只要知道接收端的 IP 和端口,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。

12 TCP、UDP如何实现可靠性传输

TCP:确认机制、重传机制、滑动窗口。

UDP: 传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

实现确认机制、重传机制、窗口确认机制。

如果你不利用linux协议栈以及上层socket机制,自己通过抓包和发包的方式去实现可靠性传输,那么必须实现如下功能:

发送:包的分片、包确认、包的重发

接收:包的调序、包的序号确认

注: 
1)给数据包编号,按照包的顺序接收并存储; 
2)接收端接收到数据包后发送确认信息给发送端,发送端接收确认数据以后再继续发送下一个包,如果接收端收到的数据包的编号不是期望的编号,则要求发送端重新发送。

目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。

13 OSI,TCP/IP,五层协议的体系结构

应用层, 传输层, 网络层, 数据链路层, 物理层(五层)

应用层,表示层,会话层,传输层,网络层,数据链路层,物理层(七层)

应用层,传输层,网络层,链路层(四层)

14 OSI 七层模型详细介绍

1)物理层(Physical Layer)

  激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。

  2)数据链路层(Data Link Layer)

  数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等

         有关数据链路层的重要知识点:

    1> 数据链路层为网络层提供可靠的数据传输;

    2> 基本数据单位为帧;

    3> 主要的协议:以太网协议;

    4> 两个重要设备名称:网桥和交换机。

  3)网络层(Network Layer)

  网络层的目的是实现两个主机系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是路径选择、路由及逻辑寻址

  网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。具体的协议我们会在接下来的部分进行总结,有关网络层的重点为:

    1> 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;

    2> 基本数据单位为IP数据报;

    3> 包含的主要协议:

    IP协议(Internet Protocol,因特网互联协议);

    ICMP协议(Internet Control Message Protocol,因特网控制报文协议);

    ARP协议(Address Resolution Protocol,地址解析协议)可看成是跨网络层和链路层的协议;

    RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。

    4> 重要的设备:路由器

  4)传输层(Transport Layer)

  第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

  传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。作用:为应用进程之间提供端到端的逻辑通信。

  网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口

  有关传输层的重点:

  1> 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;

  2> 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);

  3> 重要设备:网关

注:网络层与传输层的区别(形象解释)

  5)会话层

  会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

  6)表示层

  表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

  7)应用层

  是最靠近用户的OSI层,为用户的应用程序提供网络服务的接口将用户的操作通过应用程序转换成为服务,并匹配一个相应的服务协议发送给传输层

       注:我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议。

  会话层、表示层和应用层重点:

  1> 数据传输基本单位为报文;

2> 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

 

15每一层的协议如下:

物理层:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关);

数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机);

网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器);

传输层:TCP、UDP、SPX,SCTP,DCCP;

会话层:RPC,NFS、SQL、NETBIOS;

表示层:JPEG、MPEG、ASII;

应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS;

 

16 OSI七层 每一层的作用如下:

物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

数据链路层:将比特组装成帧和点到点的传递(帧Frame)

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

会话层:建立、管理和终止会话(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

 

17 IP地址的分类

A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);

B类地址:以10开头,第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);

C类地址:以110开头,第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);

A、B、C类私有地址:

 私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义。

 A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255

 B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255

C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255

 

18 交换机、路由器的概念,并知道各自的用途

 交换机:

在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。

交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。

路由器:

路由器(Router)是一种计算机网络设备,提供了路由与转发两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如IP协议。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。

两者区别:

1 工作层次:交换机工作在数据链路层,路由工作在网络层

2 转发依据不同:交换机转发所依据的对象是MAC地址,而路由是IP地址

3 主要功能不同:交换机主要是组建局域网,而路由器用来将交换机组建的局域网相互连接起来,或者借入Internet。

 

19 请简单说一下你了解的端口及对应的服务

https://images2018.cnblogs.com/blog/1118296/201806/1118296-20180611104155206-1495915191.png

20 与Mac地址的区别

IP地址: 使用TCP/IP协议指定给主机的32位地址。IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式。IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类、B类、C类等)的不同而不同。网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机。一个IP地址使得将来自源地址的数据通过路由而传送到目的地址变为可能。

MAC地址:  OSI(Open System Interconnection,开放系统互连)7层网络协议(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)参考模型中,第二层为数据链路层(Data Link)。它包含两个子层,上一层是逻辑链路控制(LLC:Logical Link Control),下一层即是我们前面所提到的MAC(Media Access Control)层,即介质访问控制层。所谓介质(Media),是指传输信号所通过的多种物理环境。常用网络介质包括电缆(如:双绞线,同轴电缆,光纤),还有微波、激光、红外线等,有时也称介质为物理介质。MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。这个地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,它都有相同的MAC地址,MAC地址一般不可改变,不能由用户自己设定.

 

不同的特点主要有:

  1. 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。

  2. 长度不同。IP地址为32位,MAC地址为48位。

  3. 分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。

  4. 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

21TCP 为什么是三次握手,而不是两次或四次?

22OSI为什么要分层,为什么七层分成五层

分层的好处是利用层次结构可以把开放系统的信息交换问题分解到一系列容易控制的软硬件模块-层中,而各层可以根据需要独立进行修改或扩充功能,同时,有利于个不同制造厂家的设备互连,也有利于大家学习、理解数据通讯网络。

23 DNS的工作原理?

1:应用进程将待解析的域名放在DNS请求报文中,以UDP数据报的形式发送给本地域名服务器,本地域名服务器查找到相应域名的IP地址后(主机向本地域名服务器的查询一般都是采用递归查询),就将该域名的IP地址信息放入应答报文中返回给客户进程。

2:如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他域名服务器继续发送查询请求报文(本地域名服务器向根域名服务器的查询通常采用迭代查询)。

3:当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器查询”。然后让本地域名服务器进行后续的查询。

24在浏览器中输入www.baidu.com后执行的全部过程?

1:客户端浏览器通过DNS解析到要访问的网址的IP地址,通过这个IP地址找到客户端到服务器的路径。

2:浏览器产生了一个http包,将该包交给TCP(即传输层),传输层把http包分成报文段,添加源端口和目的端口,并与目的服务器的TCP程序进行连接并建立对话。

3:传输层将信息包转发到IP层(网络层),网络层主要做的是通过查找路由表确定如何到达服务器,同时,网络层将自己的信息加到原有的数据包上,形成新的数据包。

4:数据包由网络层转发到网络接口层(或数据链路层),在该层数据包被转化成以太网帧,然后通过物理层进行传输。

5:目的服务器对接收到的数据包进行解析,过程与上述形成数据包的过程相反。

6:目的服务器会按照与上述相同的过程形成一个数据包,发送给客户端,则客户端浏览器就可以显示出所需网址的内容了。

 

25 无状态协议, 非持久连接,持久连接

无状态协议:服务器向客户机发送被请求的文件时,并不保存任何关于客户机的状态信息。比如客户机在很短的时间内两次请求同一个对象,服务器不会因为刚刚为客户机提供了该对象就不再做出反应,而是重新发送该对象,就像该服务器不记得对于第一次请求做过的事情一样。

非持久连接:每个请求/相应对经一个单独的TCP连接发送。请求处理完之后,就断开连接。

持久连接:所有的请求及相应的响应经相同的TCP连接发送。当一个请求处理完之后,保持这个TCP连接,供以后使用。

26 ping指令的工作原理

PING的工作流程 我们以下面一个网络为例:有 A、B、C、D 四台机子,一台路由 RA,子网掩码均为 255.255.255.0,默认路由为 192.168.0.1 [1]

1在同一网段内

 在主机 A 上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping 命令会构建一个固定格式的 ICMP 请求数据包, 然后由 ICMP 协议将这个数据包连同地址“192.168.0.5”一起 交给IP 层协议(和 ICMP 一样,实际上是一组后台运行的进程),IP 层协议将以地址 “192.168.0.5”作为目的地址,本机 IP 地址作为源地址,加上一些其他的控制信息,构建一 个 IP 数据包,并想办法得到 192.168.0.5 的MAC 地址(物理地址,这是数据链路层协议构 建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。关键就 在这里,IP 层协议通过机器 B 的 IP 地址和自己的子网掩码,发现它跟自己属同一网络,就 直接在本网络内查找这台机器的 MAC,如果以前两机有过通信,在 A 机的 ARP 缓存表应该 有 B 机 IP 与其 MAC 的映射关系,如果没有,就发一个 ARP 请求广播,得到 B 机的 MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是 IP 层传过来的物理地址,源地址 则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送 出去。 主机 B 收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合, 则接收;否则丢弃。接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层 协议。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议,后者处理后,马上构建 一个 ICMP 应答包,发送给主机 A,其过程和主机 A 发送 ICMP 请求包到主机 B 一模一样。

       http请求头:

协议头

说明

示例

状态

Accept

可接受的响应内容类型(Content-Types)。

Accept: text/plain

固定

Accept-Charset

可接受的字符集

Accept-Charset: utf-8

固定

Accept-Encoding

可接受的响应内容的编码方式。

Accept-Encoding: gzip, deflate

固定

Accept-Language

可接受的响应内容语言列表。

Accept-Language: en-US

固定

Accept-Datetime

可接受的按照时间来表示的响应内容版本

Accept-Datetime: Sat, 26 Dec 2015 17:30:00 GMT

临时

Authorization

用于表示HTTP协议中需要认证资源的认证信息

Authorization: Basic OSdjJGRpbjpvcGVuIANlc2SdDE==

固定

Cache-Control

用来指定当前的请求/回复中的,是否使用缓存机制。

Cache-Control: no-cache

固定

Connection

客户端(浏览器)想要优先使用的连接类型

Connection: keep-alive

Connection: Upgrade

固定

Cookie

由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie

Cookie: $Version=1; Skin=new;

固定:标准

Content-Length

8进制表示的请求体的长度

Content-Length: 348

固定

Content-MD5

请求体的内容的二进制 MD5 散列值(数字签名),以 Base64 编码的结果

Content-MD5: oD8dH2sgSW50ZWdyaIEd9D==

废弃

Content-Type

请求体的MIME类型 (用于POSTPUT请求中)

Content-Type: application/x-www-form-urlencoded

固定

Date

发送该消息的日期和时间(以RFC 7231中定义的"HTTP日期"格式来发送)

Date: Dec, 26 Dec 2015 17:30:00 GMT

固定

Expect

表示客户端要求服务器做出特定的行为

Expect: 100-continue

固定

From

发起此请求的用户的邮件地址

From: user@itbilu.com

固定

Host

表示服务器的域名以及服务器所监听的端口号。如果所请求的端口是对应的服务的标准端口(80),则端口号可以省略。

Host: www.itbilu.com:80

Host: www.itbilu.com

固定

If-Match

仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要用于像 PUT 这样的方法中,仅当从用户上次更新某个资源后,该资源未被修改的情况下,才更新该资源。

If-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd"

固定

If-Modified-Since

允许在对应的资源未被修改的情况下返回304未修改

If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT

固定

If-None-Match

允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified ),参考 超文本传输协议 的实体标记

If-None-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd"

固定

If-Range

如果该实体未被修改过,则向返回所缺少的那一个或多个部分。否则,返回整个新的实体

If-Range: "9jd00cdj34pss9ejqiw39d82f20d0ikd"

固定

If-Unmodified-Since

仅当该实体自某个特定时间以来未被修改的情况下,才发送回应。

If-Unmodified-Since: Dec, 26 Dec 2015 17:30:00 GMT

固定

Max-Forwards

限制该消息可被代理及网关转发的次数。

Max-Forwards: 10

固定

Origin

发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源)。

Origin: http://www.itbilu.com

固定: 标准

Pragma

与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生。

Pragma: no-cache

固定

Proxy-Authorization

用于向代理进行认证的认证信息。

Proxy-Authorization: Basic IOoDZRgDOi0vcGVuIHNlNidJi2==

固定

Range

表示请求某个实体的一部分,字节偏移以0开始。

Range: bytes=500-999

固定

Referer

表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面。Referer其实是Referrer这个单词,但RFC制作标准时给拼错了,后来也就将错就错使用Referer了。

Referer: http://itbilu.com/nodejs

固定

TE

浏览器预期接受的传输时的编码方式:可使用回应协议头Transfer-Encoding中的值(还可以使用"trailers"表示数据传输时的分块方式)用来表示浏览器希望在最后一个大小为0的块之后还接收到一些额外的字段。

TE: trailers,deflate

固定

User-Agent

浏览器的身份标识字符串

User-Agent: Mozilla/……

固定

Upgrade

要求服务器升级到一个高版本协议。

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

固定

Via

告诉服务器,这个请求是由哪些代理发出的。

Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1)

固定

Warning

一个一般性的警告,表示在实体内容体中可能存在错误。

Warning: 199 Miscellaneous warning

固定

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值